
Today I created a new backend for Dashboard, backend-htmlchainer.cs.
This backend listens out for the content clues coming from the
Epiphany web browser frontend and looks inside the <head>
tag of the HTML, looking for common metadata tags such as:
<meta name="keywords" content="keyword, keyword, keyword" />
<meta name="description" content="yada yada yada" />
When it finds these tags it injects extra clues into the Dashboard clue chain so other backends can match on them. One particularly exciting tag I implemented support for is the RSS autodetection one:
<link rel="alternate" type="application/rss+xml" title="RSS"
href="http://foo.com/rss.xml" />
Now, when you're browsing a site with a linked RSS feed from Epiphany,
Dashboard shows the first four items from the linked RSS file. Check out
this screenshot.
It shows me browsing my weblog, with the associated RSS file. (I also updated
Dashboard's RSS backend to read RSS 1.0 as well as
0.91 and 2.0.) The bookmarks
and FOAF entry come from the fact that the DC.Creator metadata in my
weblog says Edd Dumbill, providing Dashboard with a clue to send to the
bookmarks and FOAFbot backends.
I wrote a short description of the meta tags the HTML chainer backend interprets.
I should also remark here how enjoyable hacking on Dashboard has been. I'm finding C# a pretty nice language to work with. Also, the people hacking on Dashboard are great. Nat Friedman, whose brainchild Dashboard is, is full of energy and very encouraging to contributors, while managing to keep enough grip on the project to keep it spinning out of control. An extremely multi-threaded application like Dashboard has also been putting Mono through some strenuous testing, and the Mono guys have been great with fixing problems and educating newbies like me about threads and C#.
Next step: FOAF
The next stage in my Dashboard implementation will be identifying authorship
using FOAF. While it's easy to link to a FOAF
file from an HTML file, there's currently no mechanism of saying "I made this
HTML page!" in the same way you might with DC.Creator. I've been discussing
this on the FOAF IRC channel, and posted a
proposal to the RDFweb wiki.
The fundamental addition to your HTML will be two meta tags like this:
<!-- a lot of FOAF users will already use this first one -->
<link rel="meta" type="application/rdf+xml" title="FOAF"
href="http://heddley.com/edd/foaf.rdf" />
<!-- this links the maker of this page to a Person described
in the linked FOAF file -->
<meta name="foaf:maker"
content="foaf:mbox mailto:edd@usefulinc.com" />
(You could alternatively use the mbox_sha1sum property
in the second tag, see the proposal for details.)
This tag is
taken to mean "This page's maker is a thing with email address edd@usefulinc.com."
The contents of the content attribute are essentially a shorthand
for <rdf:Description><foaf:mbox rdf:resource="mailto:edd@usefulinc.com"
/></rdf:Description>.
Watch this space. It'll be so much cooler with a screenshot.