Outernet: First Glimpse of "Librarian," Outernet's Content Application


#1
We are excited to share a first glance of our end user program, Librarian. Librarian is what a user would have installed on their device that would receive our content and act as their browser; it is the content archive/library manager.

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.

(Don't forget to sign up for our newsletter for critical project updates!)

Dashboard

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.

Updates

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

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

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.

Content

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 details

Here is some under-the-hood highlights:

Multi-language support

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.

Content signature

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.

Storage conservation

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