A goal of the Google Summer of Code project is to develop an eBook application for GNOME. An eBook application will use GNOME Documents as a relative. This post will give you an overview of the project. Your comments and toughs are very welcome.


Documents is a document manager application. It integrates GNOME Online Accounts for accounts and credentials. The implemented features are: listing of the local and online documents in list and grid view, document preview, presentation view, search through documents, filtering, print, online edit mode for docs in Google drive, etc. The popularity of eBooks is constantly growing. There is need for the application which has functionality similar to eBook readers.

Project description

I’m proposing to develop an eBook application for listing, searching and reading eBooks, called gnome-books. The idea is to integrate gnome-books with an existing online eBook store. One option could be Google Books. It has millions of books from libraries and publishers worldwide, with the big collection of free eBooks. The user will have to login with his Google account in GNOME Online Accounts and approve access to Google Books.

gnome-books will be implemented upon the application gnome-documents, and it is going to live in the same git repository. This would be a great solution regarding code duplication, because it would be possible to reuse relevant code blocks from gnome-documents and add extra features related to eBooks.

The gnome-books application will have three different modes:

  1. Overview mode – user can see the list of his eBooks, local and from the online eBook store (by the filter he applies)
  2. Preview mode – user can read the eBooks from its collection
  3. eBookStore mode – which will open the web application inside gnome-documents to allow the user to buy new eBooks

Two ideas of how to implement Preview mode have been evaluated:

  1. Browser preview – using epub.js library [1]
    This solution will give gnome-books possibility to have a preview mode with some nice animations that HTML5 is delivering. Changing the interface, or adding the annotation functionality can be easily customized.
  2. Glib/GObject library for interfacing .epub files
    Integrate the library within the existing Evince Document library which is used in Documents. This solution would lead to a much faster interface for the user, because there is no need for opening a web browser to preview the eBook. A possible start could be libgepub [2] library. libgepub library is a GObject based library for handling and rendering .epub files. This library could be used to extend the Evince Document library with the functionality of interfacing .epub files which is going to be used by gnome-books.
    I have been researching this option so you can find more information in my post EPUB support in Evince.

Updates about the progress will come soon. Thank you for reading.

[1] epub java script library
[2] libgepub library

“A journey of a thousand miles must begin with a single step.”
– LAO-TZU, Tao Te Ching