Programming, Software and Code

Making books more like books

At Wikibooks we've been thinking for a long time for a way to make MediaWiki work better with books. It's no surprise that some of our users, such as the WiTTIE group that I'm working with, feel the same way. That's why one of the things on my task list for this project is to add some sort of understanding of "books" to the interface.

There are, as I see it, a few steps we need to take to make this happen. Luckily for us, a lot of the work has been done already by PediaPress with the Collections Extension. What the Collections Extension does is to take a group of pages and put them into an order, called a "collection", which can then be used to generate PDFs or even be sent to a print-on-demand publisher. The Collections Extension also has notions of "official" and "personal" collections. A collection stored at PROJECT:Collections/BOOKNAME is an official global collection. Collections stored by individual users at User:USERNAME/Collections/* are personal.

So we have a way, using the Collections extension to store a list of pages in the book in a specific reading order. All we need to do is add some code to the extension (or maybe write an extension-extension) to look for an existing global extension (and maybe default to a personal extension if a global one isn't provided, or the other way around, or whatever). Once we find the collection, we can read the page list from it, divine the page order of the current book, and create links as necessary. Presto.

It's interesting to think of other possibilities too, which are relate but might be a little bit outside the scope of this WiTTIE project. For instance, we could find interesting ways to marry a book collection with it's TOC. Creating one could automatically create the other, and vice-versa. A good graphical automation tool for creating books could create both automatically. Maybe the Collections Extension could be modified not to use a separate save page for a global collection, but to use the TOC page directly (assuming a certain simplicity of page formatting). Again, lots of interesting possibilities.

So these are some of the things to consider as we move forward. I'm still putting my team together for this, and we don't have the server so I haven't started any serious work yet. However, things should get moving soon and I'll post updates when they do.

This entry was originally posted on Blogger and was automatically converted. There may be some broken links and other errors due to the conversion. Please let me know about any serious problems.