Automated update checking (Mivvi and DOAP)


<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.

Mivvi’s a desktop application, but it’s also an exercise in desktop RDF. To satisfy both requirements, I used DOAP, Edd Dumbill’s RDF vocabulary for describing software projects.


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:name and doap:homepage. It also allows releases to be described:

<Project xmlns="http://usefulinc.com/ns/doap#">
 <name>Mivvi Desktop Client</name>

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#"

It’s then a simple matter to iterate over all doap:Versions identified as doap:releases 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.

What’s the upside?

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.

(Music: The Fall, “New Big Prinz”)
(More from this year, or the front page? [K])