Dynamic library

From OLPC
Revision as of 21:23, 9 February 2008 by Sj (talk | contribs) (library views)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Dynamic Library view specification

Intro

The XO content library, the set of browsable collections of materials on the laptop, is currently presented as a static set of HTML pages. It is not searchable and all navigation information exists on a single web page generated on installation, upgrade, or the install of a new content bundle. The only navigation system is a single directory hierarchy; viewing a library bundle removes all navigation from the user interface.

A dynamic view of the content library will allow for many options in terms of display, searching and navigation. It should also allow for capturing and storing information about how the user wishes to interact with and navigate the system, including annotation, collection-tagging, and toggling of language selection within a collection without changing the entire user interface. Finally, and collaboration and sharing of this information with other XOs.

We propose an implementation that relies on an on-system webserver, for a few aditional reasons: this allows collection maintainers to design custom dynamic views, and allows for current implementations of interactive collections to work with minimal rewriting on the XO. This would also allow users to enjoy offline use of webserver-based services during periods without connectivity, by sharing infrastructure with other planned applications, such as a wiki system that are designed to have both XO and school server components.


Rationale

As the variety of collections available to the XO grows and becomes more customized by countries and the individual users of XOs, the lack of a dynamic interface to content on the laptop makes search and navigation more difficult. Dynamic interaction with content bundles and bundle metadata will dramatically improve users' ability to find, explore, and navigate content on their systems and to interact and contribute with this content in more meaningful ways.

Moreover, the creators of library collections will know best what sorts of dynamic navigation are appropriate for their collections, and will benefit from access to a library of tools that can manipulate views of files and descriptions they contain, while leveraging the rendering and caching features of the shared Browser.


Use Cases

Jorn opens his content library and sees a dynamically generated view of available materials on his machine. He is able to search and to limit his view to certain tags and categories. When Jorn is viewing a bundle -- distributed as set of static HTML pages and associated files -- he is able shown navigation information for the entire content library not included in the HTML files from the bundle.

Bardolf downloads a content bundle on the XO. At the end of each "unit" in the bundle, he is allowed to take a quiz to test his knowledge an understanding and to store the results of these quizzes these for future reference. These results can be saved in a format that allows them to be sent to others in a group collaboration.

Wambua views a page hosted on her school library. She returns to the page later when not connected to the library, and sees an intelligent error message, specific to how long ago she had been able to see it and her current level of connectivity.

Abeba opens a content library in a school with access to a school server. A search for available content turns up no hits in the XO content library but the system contacts the school server and, without prompting Abeba again, finds content there that match his search. These show up in the search results. The same search done later in the night while Abeba is at home without access to the school server and works, but does not include the school server results [which are not available].

Extended use case: the second search result notes that it is no longer returning the same search result as before, because it has cached catalog-level information about what materials have been located/browsed in searches -- while it cannot turn up full cached pages of the prior results, it knows they exist.

Jose finds a picture in the content library of an animal he recently saw. He adds a annotation to the picture describing his experience and the differences he noticed. The annotation is stored for later reference.

Maria edits a document in wiki while at school with friends. She stores a copy in her on-laptop wiki to work on while at home. The next morning, she syncs to the system. In all cases, she uses the same interface in her webserver.


Proposed Implementation

A dynamic webserver, as well as interaction with other web-based interfaces on the system, should be implemented using a single webserver on the machine which runs a simple WSGI application implementing the dynamic contact library functionaly.

The content library will be the first application to use this webserver and, in first phase, will be the only application to do so. Ultimately, content bundles should be able to include their own interactive content to be run by the same server -- in a secure fashion -- and additional applications in activities should be able to use the same framework to launch their own dynamic web content.

The system should minimize the resource footprint of running applications so they are only loaded when needed in order to conserve resources and should be lightweight and secure.