Because you make things with WordPress


Hugh McGuire Interview


Hugh McGuire @hughmcguire on why he chose WordPress on which to build PressBooks, (@pressbooks) his open-souce book publishing web application, and ways in which you can use your WordPress chops to get involved.

You’re a man of many interests and talents that center around publishing: be it ebooks, books or audio. Tell us how you came to be interested in publishing and creating a new future for publishing with PressBooks.

I’ve always loved books but somehow been involved in technology. In university I did a double major: in Philosophy and Engineering. I loved the Philosophy, and I think it’s fair to say I appreciated Engineering — that is, I appreciated learning the discipline needed to analyze problems and find the most elegant and efficient solutions.

In 2002 I left my job (I was working in the financial sector, looking at financing technical solutions for climate change using the nascent carbon trading market!) and took a year off to try to write a novel. I guess around 2003 I started playing around a little bit with blogging, and by 2004 I was reading up on the philosophy of the free software/open source movement, Creative Commons, Wikipedia, and sometime in there podcasting, and finally WordPress. It seemed that there was just this amazing confluence of things — simple tools for anyone to publish (words in the case of blogs; audio in the case of podcasts), a spirit of opening knowledge (Creative Commons), and collaboration (free/open source software and Wikipedia), and of course these open source tools that anyone could control and “own.”

It seemed a time of revolution and I loved it.

LibriVox came out of that time — bringing together my love of books, audio, and open collaboration models — and we’ve created the largest library of free public domain audiobooks in the world, all made by volunteers.

Since LibriVox’s success, I have been working around new models for book publishing that brings my love of books together with my excitement about the possibilities of the internet.

Recently my energies have gone into PressBooks — a book publishing platform that makes available the free/open source infrastructure for making books. In a way, I’m trying to build the tools needed so that other people can build new kinds of LibriVoxes for “books.”

PressBooks is an application that allows users to make ebooks, print books, and webbooks built on WordPress. Why did you choose to build PressBooks atop WordPress?

There was an earlier incarnation of PressBooks, called BookOven, built from scratch on Python/Django…and I just had this moment pretty far down the line in the life of BookOven when I thought: you know, a lot of the headaches we’re having to deal with, and even the core — text in, edit, text out — is dealt with by blogging platforms. And there are some fine open source blogging platforms that could be modified to our usecase (books).

WordPress has been my blogging platform of choice since 2004, so it was the obvious candidate — helped by the huge community and thriving plugin ecosystem.

PressBooks went open source back in February, 2013. Tell us a bit about why you chose to take PressBooks open source.

I suppose the most honest answer is: if we had had a gazillion users pre-open sourcing, we might not have gone that route. But we are a very small team, running very lean, and we looked out at competing tools that had or were getting venture funding — $8 million here, $17 million there — and we thought the best way to compete was to be the most open platform possible.

Of course, philosophically this fits with my view of things, something that was becoming more clear to me as I saw the growing power of big silos in the book publishing world (Amazon, Apple, etc.). I just don’t think proprietary silos are a good idea for creating and storing the world’s knowledge.

Finally, as I alluded to above, the thing that interests me most about where we are in the world of books, is imagining new and different kinds of models for book publishing. To build new models, we need open platforms that allow people to experiment with new ideas. PressBooks is — I hope — the kind of platform that new publishing models will grow on top of.

What was the most important thing you learned building PressBooks on top of WordPress? Is there anything you would have done differently, looking back?

That is a tough question. We’ve had lots of frustrations over the two years we’ve been working with PressBooks, but at the same time we get so much value out of the platform. We are really bending WordPress to do things it isn’t built to do. At the same time there have been some really important innovations — custom post types and taxonomies in particular — that enabled us to formalize some of our early hacks in a very elegant way.

You’ve mentioned that PressBooks is pushing the envelope of what WordPress was meant to do. Can you tell us a little bit more about how you’re bending WordPress to your will?

Well, to start WordPress is built primarily with the idea of a constantly updated stream of new content. PressBooks is dealing in a relatively static set of content: a book. Of course when you are building a book, there is new content: you add chapters, move things around. And when you are “finished”…you may indeed keep adding to your book.

But, the starting point of a blogging platform, or a web-focused content-management system, is constant, new information. So we had to think a bit about the interface, and how we handle content in a way that makes “static” feel natural.

Next, PressBooks is built on Multisite, with each “book” and individual blog/site. So any given user (say, a publisher), might have 20 or 100 “books,” that might need to be updated, accessed, etc. So we built both an internal “catalog of books” interface for the publisher/user, and an external catalog interface for readers. Again, this was stretching WordPress’ model — where our focus was making it easy for a user to navigate between 20 or 30 or 100 books/sites. This usecase just wasn’t built in to WordPress, so that was significant work.

Of course our bread and butter is export formats — EPUB/MOBI and PDF as well as web, so we have to do a fair bit of scrubbing and cleaning to make sure that the content we pass to our export routines will build valid EPUBs and nice-looking PDFs.

One thing that we have noticed, though, is the value of being on a constantly evolving platform like WordPress — where problems we encountered say a year ago get solved with new releases. An example of that was a frequent feature request we get: a better interface for version control. It has not been a top priority, but been on our minds for ages. Then in 3.6, WordPress releases a great version control/revision history interface! Problem solved!

You’ve mentioned that custom post types and taxonomies have been a boon to PressBooks. Can you tell us a little bit about how PB makes use of custom post types and taxonomies?

You can think of a book as a highly-structured, relatively static collection of content. By highly-structured, I mean that there are conventions about how a book should be organized, what order content should be in, and how different kinds of content is displayed. This is especially true in print. So, you have what is called front-matter — title page, copyright page, dedication, table of contents, etc. And you have your chapters, perhaps parts, and then back-matter: appendix, bibliography, index, etc.

So having formalized custom post-type and custom taxonomies built in to WordPress allows us to define:

  • post-type: front-matter (taxonomies: title, copyright, dedication, etc.)
  • post-type: part
  • post-type: chapter
  • post-type: back-matter (taxonomies: bibliography, index, appendix … etc.)

This means that as we manipulate the content into various exports we “know” what kind of content a particular bit is, and this allows us to style things appropriately not just on the web, but especially for PDF and EPUB.

As an example, you might have certain running headers on chapters, but different ones on back-matter. Or, you might want a different font on your copyright page.

Because we use CSS/themes for all our exports, the custom post type/taxonomy approach of WordPress means we can define a “platonic” instance of a book, and then just apply different stylesheets depending on what we want that book to look like, and what formats we want to export.

Users often create their own desire paths in software. Have you discovered anyone using PressBooks in novel ways that you hadn’t envisioned?

Actually, I’ve been a bit disappointed to find the opposite. I expected that the web version of our books (which are beautiful) would have been embraced more fully by our users and explored more — with more models for web book publishing emerging. But we’ve seen very little of that, and instead PressBooks is used primarily as a powerful and flexible book production/conversion tool. There are some really interesting projects happening with the web versions of books, but I am excited for the next few years to see much more of this.

If I was a developer with a love of ebooks and open source, what is the best way for me to get involved in the project? Are there specific skills that are particularly in need?

Well, we’re on GitHub, and we have a developer mailing list on Google Groups. But we’ve seen less engagement than I imagined…I guess in part because PressBooks does require some dev chops to get running properly (mainly to do with server configuration and some dependencies). Still, we’ve seen some great use cases, especially in the academic space, that are really exciting. We’d love to see more themes getting developed for PressBooks, and I have a long list of would-love-to-have features (docx import!) that I would be happy to share with anyone motivated enough to get involved!


Krista Stevens

I'm a runner, reader, writer, and editor.

Submit your own resource