Guest post: User story on searching and reading article on web

In order to identify the requirements for an encyclosphere protocol, here’s a sketch of how one user might use one online encyclopedia one day. Nothing about this is prescriptive, it’s just an example of how it might work. Jane, and are fictional


A user “Jane” wants to search for an article about blood types on an encyclosphere-enabled website

The website “” is not a neutral gateway to the encyclopshere. It is a particular encyclopedia with particular policies about notability and authority, and it has a community who rate articles. Some articles are written for the site, others were written elsewhere but are included because they meet the editorial policy.

Jane types “blood types” into a search box on

sciepedia keeps a database of article rating objects, as described in . This database is indexed by search terms.

The search function finds a number of rating objects, where the author of the rating is either a member of the sciepedia community or an external author who has been rated as useful by members of the sciepedia community, where the rating is positive, and where the search terms in the rating object match “blood types”. It aggregates them by article ID. In some cases there are multiple rating objects with different target ID (which is a revision of an article) but the same article ID.

It displays to Jane a list of targets. For each article ID it found, it lists the article title, the author, date and aggregate rating of the highest-rated revision of that article, the count of other revisions.

Jane chooses an article from the list.

In this case, the server does not actually have the article content and its linked media stored. It fetches the article content and media via a P2P protocol and renders it as a web page.

Where there are references in the article content to other encyclosphere-format articles, it writes web links into its output in the form “{article ID}”

The server also holds a list of known http feed addresses. It queries all those feed addresses for articles and ratings that relate to the article ID of the article it presented. These might be newer versions, annotations.

Because Jane is logged in as a member of the sciepedia community with rating rights, all these links are presented to her in a pulldown. She is offered the chance to view these variant articles and rate them, but right now she just wants to read the article that is already rated by sciepedia members.

The server caches the retrieved article content and media and seeds it back to the P2P network for a period of time (hours to months)

Jane follows a link to another article on Blood Plasma. The link in the Blood Types articles was an encyclosphere link with an article revision ID, but in rendering the Blood Plasma article in a page had transformed it to an http link back to Therefore when Jane clicks the link is able to resolve the link itself, fetch the requested article on Blood Plasma and render it in exactly the same way as it did for the Blood Types article.

Jane follows another link, to the Korean War. That is also an encyclosphere link, and was output in the Blood Plasma web page as a link back to in the same way as the Blood Plasma link from the Blood Types page. However, the page does not have any ratings which are recognised by the sciepedia community, so does not want to show it on its own web page. Instead it looks for rating objects for the article which provide a “web url” attribute. It finds two of these and shows a subwindow to Jane giving her a choice of viewing the Korean War article on or It also gives her a copy-and-paste button for the canonical encyclopshere link to the article, which she could use in a desktop P2P encyclosphere viewer application.


The existence of a P2P substrate carrying encyclosphere content is vital, but casual users need to be insulated from it so they can work with just a regular web browser.

As one example, in “protocol-areas” I said that an encyclosphere identity is equivalent to a public key. That cannot always be the case: in this example, Jane’s identity would be a identity. It would include a public key belonging to, and also a user identifier for Jane’s account. Therefore content contributed by Jane (which technically would have to be a different story, since there isn’t any above) would be signed by with an indication that it was contributed by Jane.

The rating objects have to carry enough metadata of the article to enable some kind of useful searching. It’s possible to have a more powerful search that does involve full-text indexing of content, but that shouldn’t be required. (it’s possible to have some indirection or normalisation, so it might not be the case that every rating object has this much metadata, but collectively it needs to be there)

Also, rating objects have to be small enough that it is practical for a server to keep and index all the objects relevant to its interests.

Rating objects should be able to carry web addresses at which it is reasonable to look for the content referenced. URIs can always go stale or dead, but that’s still useful information.

By Anomaly UK

Software Developer and blogger

Leave a comment