Functional Spec for eBook/OEPC Reader Interface.

Overview

Since there is a lot of overlap between the functionality of the eBook reader and OEPC projects, there will be a single interface for reading both eBooks and OEPC articles. This interface should be easy and intuitive to use, yet provide enough functionality to be able to search for either eBooks or OEPC articles, fetch them from an external source, download them, convert them to a single, back-end format, index the content for searching, display the text, allow for formatting of text, display images, formulae, and hyperlinks inline.

Functionality will be broken up into a client/server design. The idea is that since the laptops have limited memory, disk space, and CPU, tasks involving large amounts of storage or intense CPU usage will be delegated to a central server. The clients (laptops) will then communicate with this server to fetch books/articles and send search queries. The clients should not have to do much beyond the display of text and storage of small(ish) (g/b)zip files.

For a discussion on the reader's back-end format, see EBookViewerFormatSpec.


Client/Server Design

As mentioned in the overview, tasks will be delegated between a client and a server. This reduces the load on the laptops and allows for greater flexibility in how much disk space/CPU can be used. A general sense of which tasks will be client-side and which will be server-side is outlined below.


Server

  • Listens for search requests from the laptops. When a search query is sent, server first checks its local cache to see if this particular book/article has already been requested by another laptop. If it has (and thus has been packaged and saved on the server), send it to the laptop. If it has not been downloaded before, search the appropriate source (Project Gutenberg, ICDL, OEPC, etc) and download it.
  • When a book/article is downloaded for the first time, convert it to a back-end format. This involves creating an index file (for searching), creating a preferences/config file for this book/article (more on this later), and adding these files to a compressed file format along with the book.
  • More...

Client

  • The laptops send search queries to the server. Once the server returns the search results, the user selects which book/article to fetch. The server then sends a compressed file to the laptops.
  • The books will be read directly from the compressed format. In order to minimize memory usage, only a certain amount of pages will be loaded into memory at a time.

Full Interface Specification

On opening the Reader, the first screen displayed is the user's Library. The central element on this screen is a list of books and articles, with fields for titles, authors (or editors), and the language the document is written in. Other optional fields might include subject, genre, fiction vs. non-fiction, and so forth. Note that the interface should allow for nesting of documents into a single collection (such as OEPC modules), which can be expanded to show the full listing.

Below the Library list, the secondary feature of the screen should be the "Search the Books" interface. This should be as basic and intuitive as possible, presenting the user with a text field for keyword entry and a set of options. In particular, it should be possible to search by title or author, as well as searching the actual text of the book. It should be simple to restrict the search to a certain set of sources (OEPC, Project Gutenberg, and ICDL among them) or to a certain set of languages. On searching, the results should be shown in the Library list, in a similar form - but if possible, relevant excerpts should be shown when searching the content of the books, as in current web searching. Opening a document not currently in local storage should confirm that the user wants to retrieve it from the server.

The Reader screen opens after choosing a document. This screen should be mostly occupied by the display box, which renders the document to the screen. To the right of the display box is the Reader's control panel. The control panel should be much narrower than the display box, but should contain several features: Page/Continuous Mode, Next/Previous Page, Bigger/Smaller, Full Screen, Find, Bookmark, Highlight, Notes, a Navigation tab, and a link to "Go Back to the Library". If necessary, the control panel may be placed on the bottom of the screen for additional space, in which case it may be best to display the Navigation section as a separate panel on the right side of the screen when selected.

The Page and Continuous Mode buttons change the Reader's mode, moving between page-by-page rendering and rendering as a continuous document. When in Page mode, the Next and Previous Page buttons should act as expected, moving the Reader forward or backward one page per click. However, when in Continuous mode, these buttons should act identically to the Page Down and Page Up keys, respectively, moving approximately one screen at a click. Note that while in Page mode, a page number indicator should be active and editable, allowing the user to go directly to a specified page number.

The Bigger and Smaller buttons on the control panel should act as a combination of Zoom and font size changes. These buttons change the font size on the document and re-render appropriately, resizing all displayed images in proportion. A Normal button should also be included in this set, resetting the font and image sizes to their default.

The Find feature searches within the document. Specifically, it provides a field for the user to provide the targeted text, a checkbox for case-sensitivity, and a button to go on to the next occurrence of the text. When the search is executed, all instances of the text through the document should be highlighted (or possibly boxed, when in black-and-white).

The Bookmark, Highlight, and Notes features allow the user to place bookmarks at locations, highlight inside the book, and make "margin" notes, while all such markings are remembered on re-opening the book. The Bookmark button creates a bookmark (accessible by the Navigation tab/panel) at the current location in the text. For display purposes, it would be excellent (but not necessary) to have something like the Microsoft bookmark interface, as displayed below, which allows the user to graphically choose a bookmark. In this interface, if the bookmark is on the current page, it is filled in.

http://www.microsoft.com/reader/info/features/images/bookmarks.gif

The Highlight button causes the currently-selected text to be highlighted. The Notes button switches to a tool that allows the user to click on the page to type in a margin note. It is probably best to mimic Microsoft Reader here and display a small icon in the margin that, when clicked, displays the note. A screenshot is shown below.

http://www.microsoft.com/reader/info/features/images/notes.gif

However, for an alternate approach to annotation, we might take the Mobipocket approach of overlaying a note directly, as below.

http://www.mobipocket.com/en/DownloadSoft/img/reader5/library6.gif

The Navigation tab/panel should give access to various sorts of bookmarks. Every user-created bookmark should be shown under a Bookmarks section, and a list of chapters (sections, for articles) should be shown under the respective section title. All of these entries, on double-clicking, take the user to the specified location in the document.

When in the Reader or Library sections, a link to an Editor should always be present, defaulting to a copy of the current document when coming from the Reader and a new document when coming from the Library. The Editor interface itself will be decided on at a later date, but if possible, should include WYSIWYG functionality.


Use Cases

Case 1:

Alexander starts up the reader. He is immediately brought to his library, a list box which shows all of the books/articles he has downloaded, with an option to sort by title, author, language, and type. Below the listing of his books is an option to search his library. He can find books by title, author, language, type, or any combination. Since he is doing his geology homework and needs help, he decides to search his library by title. He enters "geology" into the search field and checks the "title" box, then clicks the "Find" button. A new tab called "Search Results" is displayed, which shows another list box with columns for "title", "author", "language", and "type", just like his library. The contents displayed are:

Title Author Language Type
Town Geology Charles Kingsley English Book
The Elements of Geology W. H. Norton English Book
The Student's Elements of Geology Charles Lyell English Book
South American Geology Charles Darwin English Book
Geology Wikipedia English Encyclopedia Entry

Case 2:

Bergitte has already searched her library for books written in Danish. She is looking at her search results tab, which contains:

Title Author Language Type
Ambrosius Chris K.F. Molbech Danish Book
Haablose Slaegter Herman Bang Danish Book

She decides she wants to read Ambrosius and clicks on it. Several buttons at the top of the screen which were previously greyed out are now enabled. She could have clicked "Delete", "Edit", or "Read", but she clicks the "Read" button, which opens this book in a new tab.


Case 3:

Carlos has already opened the book La Montana by Eliseo Reclus. He has the book open in the reader tab. He sees a large text field with the actual content of the book displayed. Below that are buttons for next/previous page, as well as an editable text field to enter a page number to go to.

(More...)

Desired/Possible Features

Views

  • Metadata-aware views (freshness cues; copyright & authorship cues; history & diff views)
  • Search view(s) (text search results)
  • Gallery views (text index/summaries; image galleries; media lists)

If Possible

  • WYSIWYG Editor
  • Views : recently visited/edited breadcrumbs

If Time Allows

  • Dictionary lookup support (including multilingual)

Attachments