We had a really fantastic code/work sprint for the BookReader organized by the most excellent NYPL Labs. The sprint was designed to bring together organizations that have an interest in the BookReader as a way to foster the sharing of interest, code and expertise.
We started by making a list of desired features and prioritizing them. High on the list was to make the code more modular and easier to understand, reuse and extend. We made great progress towards that goal by creating a new plugin architecture that allows new views of the book to be added cleanly to the existing code. For example, it will be possible to create a book view that uses the <canvas> tag or other advanced web technologies and have it automatically included in the BookReader application simply by including that plugin’s JavaScript file.
Another highly desired feature is making it easier for people to use their own books with the BookReader application. Doug Reside from NYPL Labs contributed a “book loader” (our new term for the piece of code that connects the BookReader to the underlying images and metadata for a book to display) that allows you to specify the images for a book directly inside an HTML file. This new loader provides a simple way to use the BookReader for your own books.
The new code is currently on the codesprint branch of the BookReader github repository. We plan to integrate the new plugin system once the code has been polished and tested. Updated documentation is also coming. You can subscribe to the bookreader-announce mailing list to be notified when the code is released. You can also find more information about developing and using the BookReader in our developer resources.
This works sprint hosted by NYPL Labs marks an exciting new milestone in the development of the BookReader. We’re setting the foundation for greater re-use and collaboration around the BookReader. Many thanks to Doug Reside, David Riordan and Ben Vershbow of NYPL Labs for organizing the sprint and the fantastic attendees who contributed ideas and code commits!