This document describes the design requirements for a "Busy Sponge" application.
This is a personal draft with no standing.
...
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!
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.
Part of my goal is to have an easy syntax for capturing ideas.
Chump: very useful for commenting on a URI, but not much beyond that.
WikiSyntax: a shorthand for authoring HTML.
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.
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.
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":
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.
Presently I use an html editor to also publish interesting things with excerpts or comments on a nifty page:
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.
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 <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</xhtml:a></description> <ac:activity>ac:misc</ac:activity> <pub:dest>dest:member-w3c</pub:dest> <dc:date>2002-08-20</dc:date> </item> <item rdf:about='http://reagle.org/joseph/event#20020819-00005'> <title>Event 20020819-00005</title> <description>Noted <xhtml:a href="http://lists.w3.org/Archives/Public/www-qa/2002Aug/0017.html">my email on QA and levels of conformance has some traction with Dom</xhtml:a></description> <ac:activity>ac:misc</ac:activity> <pub:dest>dest:member-w3c</pub:dest> <dc:date>2002-08-19</dc:date> </item> ..
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> </title>
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...
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.
...