Librarian decrypts the broadcast content that has been downloaded to the device, allows the user to discard content or add it to the archive, provides a list of favorites to which content can be added, and (in the future) it will also provide search and configuration interfaces.
Check out some of the screenshots below. If you’re a programmer and want to see the gritty details and contribute yourself, see Librarian on Github.
Dashboard is the Librarian's startup page. It lists the basic content archive statistics, information about the disk space, and shows the list of favorites.
The toolbar at the top provides access to other features.
The updates screen shows the decrypted content that has been downloaded. This content is not yet added to the archive. User has an option of either adding it, or discarding it. Once content is added to the archive, it appears on the Archive page.
Archive page shows the list of content in the archive. In this early prototype, there is no search functionality yet, but normally the search interface would be present on this page as well.
Each content has a 'favorite' button that can be used to add it to the favorites list.
Favorites are… well, favorites. :) The 'unfavorite' button allows the user to remove content from this page.
Five most viewed and most recently added/updated favorites are also listed in the dashboard. Outernet has no way of tracking user Favorites or what information is most popular in the Archive of users. Remember, Outernet is a one-way data broadcast. We will rely on alternative feedback channels (SMS, USSD, web-based voting, etc.) to prioritize content that is broadcast.
Original Wikipedia page:
Page as it appears on Librarian via Outernet:
Content is broadcast stripped of all junk content (ads, navigation, etc), and appearance (stylesheets). Librarian provides its own stylesheet to make the reading experience arguably a bit nicer than the browser defaults. It does so by providing a fairly minimal stylesheet in order to allow even older browsers to take full advantage.
Implementation detailsHere is some under-the-hood highlights:
From start, Librarian has been built with multi-language support. This does not extend to content, though. Content is always shown in the original language in which it was found on the Web.
Each piece of content (HTML page and/or images) is sent in encrypted format using GnuPG and 2048-bit encryption key. The Librarian has a key for decrypting content and it discards any content that it cannot decrypt. This prevents injection of content that hasn't been broadcast by Outernet in the the data stream.
In order to conserve bandwidth and storage, all content is broadcast as zip files. These files are never unpacked to storage. Instead, all files are served after being unpacked into memory and served directly from RAM. Although this has a small speed impact, it is almost unnoticeable and it potentially saves a lot of storage space.
This is a companion discussion topic for the original entry at http://blog.outernet.is/2014/07/first-glimpse-of-librarian-outernets.html