<Phil> Ringnalda talks, as a developer, about software update notification; Tim Bray sets his requirements as a user. It’s clear that a modern desktop application must, at least, tell you about new releases.
There are three parts to update notification: discover the most recent version, then compare it to the current version. If it’s later, tell the user.
Notification is a user interaction problem; as Phil explains, it’s hard to do well. For now, Mivvi includes a subtle status bar on the main window (added in version 0.2.2).
So how to discover the most recent version? Publishing it at a well-known URL would be simple, but Mivvi already has an update mechanism – it has the current series RDF data. DOAP, as RDF, embeds perfectly in this.
DOAP’s main type is
doap:Project, with properties including
doap:homepage. It also allows
releases to be described:
<Project xmlns="http://usefulinc.com/ns/doap#"> <name>Mivvi Desktop Client</name> ... <release> <Version> <created>2006-01-31</created> <revision>0.2.2</revision> </Version> </release> ... </Project>
By giving our
doap:Project a URI,
we can discover its current information from the RDF included in the
episode data archive:
<Project xmlns="http://usefulinc.com/ns/doap#" rdf:about='http://mivvi.net/code/#desktop-client'> ...
It’s then a simple matter to iterate over all
doap:Versions identified as
and check the
doap:revisions. Take the latest and, if it’s more
recent than the application build, include a notice with a website
link in the status bar.
DOAP is extremely simple, but clear and comprehensive. It exposes a well-defined vocabulary that is repurposable without losing the original semantics. This reuse isn’t automatic, but it’s made possible and even easy by RDF’s loose binding.
The upside is flexibility in two dimensions. For my benefit, using a general format allows expansion – annotating versions with direct download links and comments, say – without breaking old clients.
For consumers, the value of general purpose DOAP (and RDF) tools grows as more data arrives. Maybe you want to graph release frequency. Perhaps you’d like to create a hub to aggregate as many software tools as possible. Or, if none of that appeals, maybe you’d rather write the great killer desktop update notification app, then use scraping and evangelism to push support past critical mass?
Just an idea.