Ad Libris


Jump to: navigation, search
for related tagging discussions, see content stamping

This is a working document taken from a recent discussion; please edit and comment.



Ad Libris is a way to carry around a little bit of information about a big file. It's a lightweight indexing syntax written (currently in XML) that can be embedded in a webpage next to a file and used as a way to incorporate tags, reviews, and other sorts of useful metadata in a way that makes it discoverable to OLPC library users (and other users on the internet).

The specification is under construction and is available here.

This is an outdated pictorial representation (not an interface design!) of some of the different things you could do with the Ad Libris system. Hopefully will post more up to date pictures soonish. Mchua 01:10, 18 June 2007 (EDT)


Problems we're solving

  • People want to contribute educational content (existing or new) to the OLPC project, but there's no way to "put it in the library," or more accurately, make it easily available via a semi-standard interface to XO users.
  • OLPC wants to facilitate a distributed library; it does not want to maintain a file repository.
  • There are many existing content collections, each with their own indexing systems which would be difficult if not impossible to refactor.
  • Students looking for information on a topic have to search through many different types of indexing systems. Even after doing this, the results they get may not necessarily be in their native tongue, released under an open license, or at the reading level or writing quality they are looking for.
  • There is no "standard" way to rate/review, comment on, group, tag, or otherwise add "library-useful" metadata to files.
  • The lack of such a standard metadata format makes it difficult to develop repository/database back-ends and searchable/filterable front-ends for content.

Current solutions

  • (To contribute) "Just post it online somehow." - This is the current solution, but we still don't know how to find it, how to deal with separate indexing systems, etc. and we can't rate or tag it with a standard system.
  • (To find content) "Google it." - doesn't find everything, can't search by tags or reviews, may contain non-open content that kids aren't supposed to remix.
  • (To review content) "Put it up on your own site" or "Use this commercial website." - Again, lack of standardization means the wheel is constantly reinvented.

Use case scenarios

The following personas and tasks represent a range of user needs that the Ad Libris system should be able to accommodate.


  • Persona: "Nathaniel," full-time English speaking software engineer at a Bay-area startup called In Tunes; developing a new system for organizing and answering questions about works of public domain and open-license music.
  • Values:
    • Minimize manual labor - scripting it once and letting it run forever suits him just fine.
    • A coding expert, not a music or education expert; thinks in terms of software implementations
    • Has a vested interest in using widely available open standards - wants to build a content community by encouraging remixing and participation as well as integration with other webapps
  • Tasks:
    • Create a bot to crawl and discover files "in" the "OLPC Library"
    • Create a lightweight queryable database with information about the songs he's found for the library without having to store the full sound files of the songs themselves
    • Make it possible for his system to answer the question "Find every song in the key of D"
    • Make it possible for his system to answer the question "Find all reviews of recording X"
    • Make it possible for users to tag and rate songs using his interface


  • Persona: "Rosalyn," part-time pastry chef at the Buenos Aires Hilton Hotel who spends her off-time creating digital movies as a hobby. She is currently interested in fractals and is very interested in education (her brother is a math teacher) and making her content available for educational purposes. She speaks Spanish and is beginning to learn English.
  • Values:
    • Ease of use - doesn't want to have to learn to program; wants to spend her computer time editing videos, not debugging syntax
    • Education - willing to put in a little extra legwork if it means schoolchildren will be able to benefit more from her work
    • Findability - wants her work to be openly available to as many people as possible
    • Two-way communication - wants to dialogue with and get feedback from the people who are viewing her videos
  • Tasks:
    • Post her existing 5 movies "on the OLPC library system"
    • Find existing open-licence music and images of fractals that she can use to make a new movie
    • Cite or somehow "point to" and attribute the source images and music she used to make her new movie
    • Post a new movie she's created (animations of fractals with a voiceover narration in Mandarin) "on the OLPC library system"
    • Group the three movies she's made about mathematics together
    • Get feedback from users and viewers of her movies


  • Persona: "Ming," Chinese composer doing freelance work for electronic games; speaks Mandarin.
  • Values:
    • Exposure - wants to get recognition so he'll get more gigs
    • Low-hassle - not really interested in education, just wants to make music and get his work out there; not willing to spend extra time to make stuff accessible for kids
    • Attribution - wants to make sure his content is recognized as coming from him
  • Tasks:
    • Make 106 existing songs and 2 new songs available "in" the "OLPC Library" under an open content license (they're currently sitting in his hard drive)
    • Make all his songs "his" and ensure that people can contact and find him when they find his music files no matter what
    • Keep track on what people are using the songs he composed for; where are they getting remixed or used?

Existing Repository

  • Persona: "VJ," assistant coordinator of the Tamil Math Media Library (TMLL), a nonprofit organization based in Sri Lanka with an existing (10,000+ items) large content repository and custom indexing system; they work with local university research groups to produce, translate, and store Tamil versions of public-domain math papers on their site. They have one part-time volunteer programmer (she's a local CS undergrad and is rather overworked); VJ himself knows only MATLAB (his background is in mathematics).
  • Values:
    • Low activation energy - wants content to conform to OLPC library with as little hassle as possible
    • Availability - Wants their content to be read by as many students as possible
    • Partnerships - Wants to work with as many universities as possible
    • Internationalization - Wants their stuff to be translatable and wants it easy for them to be able to translate stuff
  • Tasks:
    • Make all materials available "on OLPC library"
    • Make it so that all new materials posted to the TMLL library are also "added" to the "OLPC library"
    • Translate an article on the Mandelbrot Set from Spanish to Tamil and link the two translations together (so that it's apparent that X is a translation of Y)
    • Allow users to rate, review, and comment on papers
    • Group papers by "domain" of mathematics (abstract algebra, topology, surreal numbers...)
    • Create a search interface that will let users search by author, topic, or tag/keyword
    • Partner with a speech laboratory that wants to make text-to-speech recordings of their content available on their own website


  • Persona: "Anita," Puerto Rican third grader from a lower-middle-class urban family. Her parents run a small barbershop and she has an older sister who sings. She attends school regularly and doesn't like math class but does like to draw. She speaks Spanish.
  • Values:
    • Fun - she wants to do things that feel like playing, not homework.
    • Friends - she wants to be able to do things with her friends and see what they think about things.
    • Participation - she doesn't want to stand on the sidelines; she wants to contribute her own drawings to the library and to be able to talk with the authors of the content she finds "in" the library.
    • Independence - she wants to be able to do all of this by herself without a grownup.
  • Tasks:
    • Find resources on mathematical art (she does not know the phrase "mathematical art," nor that there are things called "fractals" out there)
    • Write a paper on math and art (with lots of pictures and maybe movies embedded)
    • Cite (link to) the sources of her paper
    • Put her paper "into" the library
    • Create a collection that includes her paper along with other resources on math and art
    • Send a message to the authors of the content she used for her paper telling them what she's made
    • Look at the projects her classmates have made


  • Persona: "Bonnie," recent college grad (physics major) volunteering as an elementary school teacher in Puerto Rico for two years. Speaks English, relatively decent Spanish. Teacher of Anita. Planning on going to graduate school in physics afterwards.
  • Values:
    • Education - get her students interested in and excited about learning, especially math and science
    • Connection - get her students in touch with the international math and physics communities, and keep in touch with them herself
    • Ease of use - Bonnie is tech savvy and can program moderately well but doesn't have a lot of time to spend on it because she has to keep up with the daily rush of the classroom.
  • Tasks:
    • Find math resources that other 3rd grade teachers have marked as good
    • Build a "reading list" of neat materials for her class
    • Write reviews and comments and "tag" the content in her "reading list" for her class
    • See the collections and projects that her students are making

Design principles

  • Flexible design; allow people to create their own indexing systems on top of ours, just as Flickr sets/tags allow users to create their own groupings.
  • Design for obsolesence and ease of replacement. We're not going to get it right the first time.
  • Storage and display agnostic. We're making a sample engine, not the engine. A sample viewer, not the viewer. In the MVC (Model View Controller) model, we're making the syntax for the information that passes via the Controller between the Model and the View.

Brainstorm of Requirements

  • Hierarchy of tags - to tag objects or sets of objects
  • Required or strongly suggested tags - language, type of object/filetype
  • Format - XML namespace?
  • Allow files to be associated with multiple languages. Our scheme implied that files would always be written in one primary language; it's not clear to me that this will be appropriate for translation dictionaries, bilingual books, and so on.
  • Encourage files to have "captions". Captions would be derivative works (somewhat like reviews) preferably written by file authors. For example, a JPEG file that is a picture of the Taj Mahal could have a caption that explains where and when the picture was taken, and what the subject of the picture is. Conceivably captions could be part of file names, but names are traditionally shorter than what I have in mind.

Examples of tags

  • Index
  • Language(s)
  • Review
  • User comment
  • License
  • Contributors

XHMTL Analogy

We're writing something akin to XHTML in the sense that it's a markup syntax that can be used for indexing information of any sort. Others can write databases to store this information, interfaces to view it with, and so forth. The analagous parts for XHTML would be as follows.

  • XML - syntactic conventions used to write a markup language
  • XHTML - markup language
  • - content document written in XHTML
  • Firefox - "viewer" for XHTML markup (there are other viewers)
  • mySQL - database portion of "back-end" that stores information about XHTML pages for recreation later (there are other back-ends possible)
  • google - search/index engine for XHTML pages (there are other indices and search engines)
Personal tools
  • Log in
  • Login with OpenID
About OLPC
About the laptop
About the tablet
OLPC wiki