Project Gutenberg (PG) collects and maintains a library of public domain books in electronic text format, in an assortment of languages. That's all well and good, but potential readers still need a method to access PG's collection. I recently sat down to test a handful of e-text readers that offer integration with the 24,000 PG titles.
Searching on Freshmeat and SourceForge.net turns up five alternatives: GutenPy, Guten, JBook, PyGE, and GutenBrowser. Of those, GutenPy, Guten, and PyGE are all Python applications, JBook is a Java app, and GutenBrowser is written in C++.
All five claim at least some level of platform independence -- provided that you can set up your system with the correct dependencies. JBook is self-contained; with a sufficiently modern Java Runtime Engine, it should work on any OS. PyGE requires Python and wxPython, a set of Python bindings for the wxWindows UI toolkit.
Guten requires Python, Glade, SQLite and GTK+; GutenPy uses Python and GTK+ as well, but also uses Cairo and the pyCairo hooks. GutenBrowser requires Qt. All of the required libraries are available in one form or another for Linux, Windows, and Mac OS X, but Mac users may be left on their own -- all three test on and provide builds for Linux and Windows, but none do the same for OS X.
The good, the bad, and the ugly
The bad news is that out of that class of five, I could successfully coax only two of the apps into running consistently: Guten and JBook.
GutenPy does start up, and operates just fine as a general-purpose ebook reader, but its built-in link to PG's online catalog does not work. By default, its local index of the PG catalog is empty; updating it retrieves the latest list of titles, but it fails to parse the list correctly and hangs.
PyGE is installable, but it fails to start, complaining of a missing attribute named PyGApp. That is clearly an internal reference, so perhaps someone more familiar with Python than I am could track down the fix.
GutenBrowser's most recent Linux releases are 0.8.1 in a source code tarball, and 0.6.8 in binary form. The binary is provided only as an RPM for SUSE 7. I could not coax it into running; it dumps core instantly. I also could not get the source code release to compile. It seems to be build against Qt3 -- which is still available from most distros -- but judging by the compiler errors, it is also built against some older libraries with now-deprecated functions.
The good news, of course, is that Guten and JBook both work. JBook is available as a .jar file, so no installation is required to run it. Just download the file to any directory, and type java -jar jbook.jar & from a terminal window.
Guten is provided as a tarball; to install it you must unpack the contents into a directory, then run python ./setup.py install from within the directory, with root privileges. Subsequently, you can launch Guten with guten &.
JBook and Guten use the same basic interface: a basic text frame and navigation controls for the ebook reader, and a separate pop-up catalog with which you can select PG titles to download and read.
JBook uses a local file named gutenberg.lst for its list of PG titles, and although you can manually update the file (it is plain text), JBook cannot update it to add new PG titles automatically. More problematic is that JBook appears to expect gutenberg.lst to be in the directory from which the app is launched, so if you want to create a panel or desktop launcher for it, you must copy the file to your home folder.
JBook allows you to select the font and the text and background colors of the ebook display, which is a nice touch, especially if you prefer light-on-dark for reading long passages. It also has an autoscrolling mode, which is exactly what it sounds like -- advancing the text automatically. You can increase or decrease the scroll speed through the toolbars.
Autoscrolling does re-grab the window focus every time it advances a line, which is defensible if you assume the reader's attention is on the ebook, but that can be annoying. If an IM pops up in another window, you might want to take care of it without shutting down your book-reading session, but autoscrolling will make that difficult.
JBook can also be used as a standalone ebook reader, something that Guten cannot do.
Guten remotely retrieves the available titles from PG's catalog, so you can be sure to always see the latest updates. You can choose your own font for Guten's ebook display, but the app uses your system's GTK+ colors for the text and background.
Although Guten does not offer autoscrolling, it does support bookmarking the text (which JBook does not). You can add as many bookmarks per title as you wish, you can assign names to them, and you can jump back and forth between them.
Finally, Guten has clipboard support, while JBook does not. Whether reading for fun or for education, there are bound to arise occasions when you want to copy a snippet of text for quotation elsewhere, so the feature is a thoughtful inclusion.
The final chapter?
I found using Guten to be the more pleasant experience, in part because of the better integration with the rest of my desktop (i.e., the clipboard and the GTK+ widgets), but in larger part because of JBook's PG indexing limitations.
I must confess that I am not a frequent ebook reader, PG or otherwise. But I have the utmost respect for the people who have spent so many years building and refining PG into what it is today, and the same goes for all of the other digital library projects that endeavor to make free cultural works available to the public at large.
Consequently, it is a little frustrating that the PG-connected ebook reader market is so under-developed. There is a lot of content out there, but it just isn't simple to get to it yet. Or, to put it another way, PG is a killer collection, there just isn't a killer app for it.
As both GNOME and KDE developers -- not to mention Apple's iTunes Store team and Web storage companies like Box.net -- know, our desktops and our desktop apps are always online. Maybe the standalone ebook reader isn't the best way to integrate access to online libraries and collections; maybe plugins for word processors or PDF viewers would attract more readers. After all, just look at the additional listeners that Amarok's and Rhythmbox's integration brought to Magnatune and Jamendo.
Until the perfect solution arrives, thanks to Guten and JBook you can still catch up on your reading without leaving the warm glow of your monitor or endangering yourself with the threat of papercuts.