Busy Sponge Requirements

Joseph Reagle <reagle@w3.org>
$Revision: 1.7 $ on $Date: 2003/02/05 03:13:20 $ GMT


This document describes the design requirements for a "Busy Sponge" application.

Status of this document

This is a personal draft with no standing.

Table of Contents



I spend a lot of my time typing things into various interfaces: such as a log of important/useful things I've done during the day, an outline of things I need to do, a list of interesting links and my thoughts on them, web site passwords, proto-ideas and scribbles, annotations/comments on things I've read, and travel information. Some of these things are stored in (different) html pages and some in (different) flat text files, and I use different editors/browsers for these files! I'd like to have a single easy to use interface for entering all these things. This will require a data store/model, an interface, and perhaps some syntactical conventions for easy freeform entry..

I'm not keen to have to design or build anything, if someone can make a recommendation to an application that does the job, all the better!

Data Store/Model

I've looked at PDA applications and desktop databases for scribbling down ideas. These databases tend to need apriori definition with little flexibility, or are little better than a flat text file. RDF is akin to a decentralized ad-hoc database that should be sufficiently flexible.

RDF: I'm not familiar enough with RDF tools to necessarily want to use a RDF store and query engine right now: the data model might be sufficient and however it is stored should be easily output/scraped as RSS/XML to their various destinations.

Data Syntax

Part of my goal is to have an easy syntax for capturing ideas.

N3: very flexible and permits much to be unspecified.

Chump: very useful for commenting on a URI, but not much beyond that.

WikiSyntax: a shorthand for authoring HTML.

I then might be able to use this in free entry parts of the area where I need to add some of adhoc notation.

Data Interface

I want a forms based interface that can easily allow me to enter data such that it provides defaults and quick access keys to common properties such as a time stamp, activity, confidentiality, etc. Free form areas will then take whatever syntax/conventions I choose.

XHTML: I think the interface could easily specified as XHTML; the application logic would sit in a Python CGI.

Python GUIs: if use python with some interface (e.g., Qt) then the application and the interface are rather tightly bound. However, I don't know anything about those technologies and it would not be very portable.

Usage Cases

Log of Done Items

Presently I use a few simple conventions to keep a record of things done at work: it's an ordered list of entries with a date, an activity, and a free form xhtml entry. I used to scrape this into an RSS feed, however I discontinue it because it seemed awkward, and I was not sure if/how to include XHTML. The following is an example of my "Done Log":

  1. 020820: misc] Sent email to chairs regarding the need for a public draft between a last call and CR.
  2. 020819: misc] Noted my email on QA and levels of conformance has some traction with Dom.

In N3, which some of the context a bit more explicit: this might look like:

:joseph action:emailed 
        [:description "<p>chairs regarding the <a href="http://www.w3.org/2002/02/mid/200208201403.42359.reagle@w3.org">
          need for a public draft between a last call and CR</a>"
         :mid "200208201403.42359.reagle@w3.org";
         :activity activities:misc;
         :publish dest:member-w3c
         dc:date "2002-08-20T12:00+00:00"].
:joseph action:noted 
        [:description "<p>my email on QA and <a href="http://lists.w3.org/Archives/Public/www-qa/2002Aug/0017.html">
          levels of conformance</a> has some traction with Dom</p>";
         :activity activities:misc;
         :publish dest:w3c-team
         dc:date "2002-08-19T02:00+00:00"].

The date can be automatically be provided by the sponge, the action {requested, wrote, proposed, published, noted, sent} and activity {dsig, xenc, sec, legal, process, misc} can be quickly selected from the keyboard access key. The only two things I should need to do is type in the description and the location.

Nifty Stuff

Presently I use an html editor to also publish interesting things with excerpts or comments on a nifty page:

The 1000Journal Project (020612)
"A thousand blank journals travelling from hand to hand across the world..."
Moo Shoes and Aesop (020425)
Two vegan shoestores recommended by a colleague.

in N3 this would look like (I think!):

:joseph action:noted 
        [:excerpt "<blockquote>A thousand blank journals travelling from hand to hand across the world...<blockquote>";
         :title "<a href='http://www.1000journals.com/home.html'>1000Journal Project</a>
         :activity activities:misc;
         :publish dest:nifty-goatee;
         dc:date "2002-06-12T13:00+00:00"].
:joseph action:noted 
        [:description "<p>Two vegan shoestores recommended by a colleague.</p>"
         :title "<a href='http://www.mooshoes.com/'>Moo Shoes</a> 
          and <a href='http://www.aesopinc.com/'>Aesop</a>";
         :activity activities:misc;
         :publish dest:nifty-goatee;
         dc:date "2002-04-25T04:00+00:00"].

Note, the later event only has one of the is a comma delimited set of URLs.

Example Interface


Resulting RSS Feed (or store)

Since my goal is to have a single interface and data source that can then feed my various pages, I want the output to obviously be what I currently input it, I also might want to generate an RSS feed (I'm also considering this as the format of the store....)

     <item rdf:about='http://reagle.org/joseph/event#20020820-00001'>
         <title>Event 20020820-00001</title>
         <description>Emailed &lt;xhtml:a href="http://www.w3.org/2002/02/mid/200208201403.42359.reagle@w3.org"&rt;
          chairs regarding the need for a public draft between a last call and CR&lt;/xhtml:a&gt;</description>
     <item rdf:about='http://reagle.org/joseph/event#20020819-00005'>
         <title>Event 20020819-00005</title>
         <description>Noted &lt;xhtml:a href="http://lists.w3.org/Archives/Public/www-qa/2002Aug/0017.html"&gt;my email on QA and levels of conformance has some traction with Dom&lt;/xhtml:a&gt;</description>

Note I'm using a QName in my "activity log" module, these can easily be turned into URIs.

Other possibilities for representing the html of the description include the RDF approach:

     <title rdf:parseType='Literal'>
        <span class='description'> Emailed <xhtml:a href="http://www.w3.org/2002/02/mid/200208201403.42359.reagle@w3.org"</xhtml:a>
        my email on QA and levels of conformance has some traction with Dom</xhtml:a></span>

or the RSS content module.


My big problem is the data model, and mapping it into RDF and having it be easily representable in a simple GUI. If I have a single comment on a single resources, things are fairly straightforward. However, what if I'm noting a couple of sites in one breath, or a couple of comments about a book? Additionally, should the title be the title of the event (which in many cases will be a UID), or the title of the result/location of the event (such as an email subject or html:title)? I expect the easiest way to deal with that is every entry has a single referent.

Something that would be really cool would be a self configuring GUI (based on a schema), which would be super flexible if it could be kept simple...

Possible Solutions

Since I posted this document, folks have sent numerous references to papers/research, their own requirements and prototypes, and applications that might address some of my requirements. I've quickly reviewed many of the references folks sent me and consider these to be the top two candidate in terms of meeting my requirements (including textual interface, there seems to be quite a lot of graph based tools), maturity, platform portability, etc. -- though I appreciate all the emails, particularly the ad hoc ways in which other people are managing such information.

  1. Sailor: permits multiple textual lanaguages and forms!
  2. Haystack: doesn't appear to be released yet.
  3. SpongeHack: the present command line tool I use to log things.