[uf-discuss] hAtom + Sparkle

Denis Defreyne denis.defreyne at stoneship.org
Thu Jul 26 12:15:14 PDT 2007


Hello list,

I have a Downloads page, which I would like to mark up in such a way that
Sparkle (<http://sparkle.andymatuschak.org/>), an application update
framework, can use the HTML page (as well as an RSS feed) to determine
whether there are application updates, present the version history, and
download the update as well as install it.

I have a few ideas already, but I'd love to get some feedback so I can make
this better.

Sparkle currently relies on an RSS feed with a few extra attributes for
version checking. This results in content duplication, though: both the RSS
feed and the downloads page contain very similar data. Only maintaining the
HTML page would mean less work, and less chance of syncing errors between
the feed and the page.

As for the way the HTML page would be structured… this is more or less what
I have in mind: I'd use hAtom to mark up the page. Every application version
would be in its own hentry, with a rel-enclosure link to the actual
download, and the version history in the entry-content.

Sparkle can use some extra metadata, though: MD5 sums, DSA signatures, and
the application version (the latter is mandatory). The application version
could be marked up using a sparkle-version class, perhaps, but the MD5 sum
is a bit harder: I'd need something bigger than just rel-enclosure.

Here's a quick example of what this could look like:

	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
	<html>
		<head>
			<title>Appcast</title>
		</head>
		<body>
			<h1>Appcast</h1>
			<div class="hentry">
				<h2 class="entry-title">Adium <span
class="sparkle-version">1.0.4</span></h2>
				<p>Updated on <abbr class="updated"
title="2007-06-20T18:00+01:00">24 June</abbr>.</p>
				<div class="entry-content">
					<ul>
						<li>Fixed a crash introduced in 1.0.3 which could occur when
accounts disconnected or status changed</li>
						<li>Fixed group chat when message history is enabled</li>
					</ul>
				</div>
				<p><a href="http://adiumx.cachefly.net/Adium_1.0.4.dmg"
rel="enclosure">Download</a>. MD5 sum: <span
class="sparkle-md5sum">0f182a2c88373e6d77c69fa15c910f08</span>.</p>
			</div>
		</body>
	</html>

In this example, I've chose to make the sparkle-md5sum property part of the
hentry, which would mean that one hentry can unfortunately have only one
md5sum and thus one download, and I'm not happy about that.

(I've also left out the author in the example above, mostly because it makes
the example a bit easier to read.)

I've been working on a patch for Sparkle which adds very basic support for
hAtom, and it's looking good. Before I continue, I'd love to get some
feedbacks on the ideas outlined above.

Regards,

Denis



More information about the microformats-discuss mailing list