<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DenisDefreyne</id>
	<title>Microformats Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DenisDefreyne"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/DenisDefreyne"/>
	<updated>2026-04-24T22:59:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=wiki-formats&amp;diff=20233</id>
		<title>wiki-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=wiki-formats&amp;diff=20233"/>
		<updated>2007-08-20T09:56:48Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Assuming this meant to read &amp;quot;mediawiki&amp;quot; and not &amp;quot;microformats&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= wiki formats =&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* Tantek Çelik&lt;br /&gt;
* Ben West&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
&lt;br /&gt;
Ian Hickson recently lamented to me that:&lt;br /&gt;
 &amp;quot;I have yet to find a wiki that has both a nice syntax (i.e. one that looks &lt;br /&gt;
 like text/plain as opposed to one that looks like just another obscure &lt;br /&gt;
 markup language -- if you're going to use markup, why not just use HTML &lt;br /&gt;
 in the first place), and that produces semantic markup (as opposed to &lt;br /&gt;
 having tags for &amp;quot;bold&amp;quot; and &amp;quot;italics&amp;quot;).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And I have to kind of agree with him.  My experience with current wiki formats is that they haven't done that good a job of &amp;quot;paving the cowpaths&amp;quot;, that is, taking what people write in plain text documents, and interpreting them as structure, rather than inventing new text conventions (e.g. equal signs for headings?!?) and getting people to learn them.&lt;br /&gt;
&lt;br /&gt;
This page is an attempt to catalog/document current wiki and wiki-like text formats to see if there is any chance of solving this problem.&lt;br /&gt;
&lt;br /&gt;
Technically a wiki format would not be a microformat because it is not expressed in XHTML building blocks.  However, many of the other [[microformats|principles of microformats]] can be applied to perhaps come up with a better solution that what wikis use today (since they all seem to use their own variant formats anyway).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== wiki software ==&lt;br /&gt;
&lt;br /&gt;
=== MediaWiki ===&lt;br /&gt;
&lt;br /&gt;
What you're using now.&lt;br /&gt;
&lt;br /&gt;
* paragraphs&lt;br /&gt;
** blank line creates a new paragraph&lt;br /&gt;
* unordered lists&lt;br /&gt;
** start a line with &amp;quot;* &amp;quot; and it will put it into an unordered list.&lt;br /&gt;
** use multiple &amp;quot;*&amp;quot;, e.g. &amp;quot;** &amp;quot; for 2nd level, for nested unordered lists.&lt;br /&gt;
* ordered lists&lt;br /&gt;
** start a line with &amp;quot;# &amp;quot; and it will put it into an ordered list.&lt;br /&gt;
** use multiple &amp;quot;#&amp;quot;, e.g. &amp;quot;## &amp;quot; for 2nd level, for nested ordered lists.&lt;br /&gt;
* headings&lt;br /&gt;
** prefix and suffix with &amp;quot;=&amp;quot; for level 1 heading, &amp;quot;==&amp;quot; for level 2 heading etc.&lt;br /&gt;
* literal&lt;br /&gt;
** use&lt;br /&gt;
* [[mediawiki-mark-up-issues|mediawiki mark-up issues]]&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
&lt;br /&gt;
Guy Fraser: I assume you've not seen Confluence from www.atlassian.com - what you describe above is exactly how Confluence wiki notation works. Confluence has one major benefit over MediaWiki in that it has decent navigation tools - you can, for example, see a page index, site map, etc. In media wiki, unless you know what you are searching for or unless someone makes a link in a prominent place, content tends to dissapear unless you know what to search for. [unsigned comment from [[User:Aubergine10]] ]&lt;br /&gt;
&lt;br /&gt;
JimMahoney: http://www.wikicreole.org is working on a common wiki markup language - the discussion there seems closely related to the issues raised here.&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=32291</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=32291"/>
		<updated>2007-08-18T15:19:53Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding shortVersionNumber to Version Numbers issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and software update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
					The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
					&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
It's been suggested that tags could be used to mark up OSes and architectures.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
* [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
* Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Smaller Download Microformat ===&lt;br /&gt;
&lt;br /&gt;
Merging the appcast and the downloads microformat might not have been a smart idea, for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;downloads&amp;quot; is very general and very vague.&lt;br /&gt;
* Marking up a single download with hAtom doesn't make much sense.&lt;br /&gt;
&lt;br /&gt;
A simpler download microformat, which is basically a rel-enclosure with some extra data (MD5 sum, DSA signature) may be useful. Something along these lines, perhaps:&lt;br /&gt;
&lt;br /&gt;
* download&lt;br /&gt;
** [[rel-enclosure]]&lt;br /&gt;
** hash (see [[hash-brainstorming]])&lt;br /&gt;
** signature&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;p class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
    Download &amp;lt;a href=&amp;quot;blah.zip&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Blah 2.1&amp;lt;/a&amp;gt;!&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum: &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;c23316cb51ca5125d1417faba5cef51e&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;).&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This smaller download microformat could then be used inside a hentry in the larger appcast microformat.&lt;br /&gt;
&lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
What name should this microformat have?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;appcast&amp;quot;: too specific? appcast shouldn't be limited to applications, and the term may be too jargony. Tantek doesn't like it.&lt;br /&gt;
* &amp;quot;downloads&amp;quot;: too general? Chris doesn't like it.&lt;br /&gt;
* &amp;quot;software-updates&amp;quot;: is &amp;quot;software&amp;quot; too general?&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Each entry needs a version number, so software update frameworks can figure out which version number to display. (Sparkle can actually figure out the version number from the download URL, but not always.)&lt;br /&gt;
&lt;br /&gt;
In the proposal above, the &amp;quot;version&amp;quot; class name is used, but I'm not happy about it. In other microformats, &amp;quot;version&amp;quot; is used to indicate the version of the microformat, not the version of something that is described using the microformat. &amp;quot;revision&amp;quot; is probably a better name.&lt;br /&gt;
&lt;br /&gt;
Sparkle can actually use a &amp;quot;shortVersionNumber&amp;quot; argument, which is displayed in Sparkle instead of &amp;quot;version&amp;quot; if present.&lt;br /&gt;
&lt;br /&gt;
These two version attributes will need to be marked up in some way in the appcast microformat at well. Some possible names:&lt;br /&gt;
* &amp;quot;revision&amp;quot; and &amp;quot;short-revision&amp;quot;&lt;br /&gt;
** The term &amp;quot;revision&amp;quot; isn't usually used in released software; I think I've only heard the term in VCSes (CVS, SVN, etc).&lt;br /&gt;
* &amp;quot;app-version&amp;quot; and &amp;quot;app-version-short&amp;quot;&lt;br /&gt;
* &amp;quot;enclosure-version&amp;quot; and &amp;quot;short-enclosure-version&amp;quot;&lt;br /&gt;
** Seems to refer to the version of the download, and not necessarily the version of the application included in the download&lt;br /&gt;
&lt;br /&gt;
=== Overlap with Changesets ===&lt;br /&gt;
&lt;br /&gt;
Changesets are very similar to downloads, with the exception that there are no downloads (another reason why the &amp;quot;downloads&amp;quot; name sucks?). Each changeset entry (hentry) usually has a short description (entry-title), a list of changes (entry-description), and a revision number.&lt;br /&gt;
&lt;br /&gt;
=== Download Link in entry-content ===&lt;br /&gt;
&lt;br /&gt;
It makes sense for the download link (the one with rel-enclosure) to sit inside the entry-content. Otherwise, what's the point of having a download link if it doesn't show up in the feed?&lt;br /&gt;
&lt;br /&gt;
If the download link is inside the entry-content, though, Sparkle's &amp;quot;release notes&amp;quot; view will show that download link as well. This is confusing, because people could click that link in the release notes view, which would download the update in Safari like a regular file. Instead, the user should click the &amp;quot;Install Update&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
Additionally, stuff such as MD5 checksums and DSA signatures should probably be hidden from the release notes view as well, because they can't be used by the user anyway (but they are used by Sparkle).&lt;br /&gt;
&lt;br /&gt;
To prevent this download link (as well as the MD5 sum etc) from showing up, anything inside a mini &amp;quot;download&amp;quot; microformat (see above) could be hidden.&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
&lt;br /&gt;
* Create a hash microformat (see [[hash-brainstorming]]).&lt;br /&gt;
* Figure out how to include DSA signatures for enclosures.&lt;br /&gt;
* Figure out whether [[hListing]] could be used instead of [[hAtom]].&lt;br /&gt;
* Figure out whether changesets can benefit from this microformat.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19851</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19851"/>
		<updated>2007-08-18T13:10:25Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding &amp;quot;download link in entry-content&amp;quot; issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and software update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
					The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
					&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
It's been suggested that tags could be used to mark up OSes and architectures.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
* [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
* Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Smaller Download Microformat ===&lt;br /&gt;
&lt;br /&gt;
Merging the appcast and the downloads microformat might not have been a smart idea, for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;downloads&amp;quot; is very general and very vague.&lt;br /&gt;
* Marking up a single download with hAtom doesn't make much sense.&lt;br /&gt;
&lt;br /&gt;
A simpler download microformat, which is basically a rel-enclosure with some extra data (MD5 sum, DSA signature) may be useful. Something along these lines, perhaps:&lt;br /&gt;
&lt;br /&gt;
* download&lt;br /&gt;
** [[rel-enclosure]]&lt;br /&gt;
** hash (see [[hash-brainstorming]])&lt;br /&gt;
** signature&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;p class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
    Download &amp;lt;a href=&amp;quot;blah.zip&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Blah 2.1&amp;lt;/a&amp;gt;!&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum: &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;c23316cb51ca5125d1417faba5cef51e&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;).&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This smaller download microformat could then be used inside a hentry in the larger appcast microformat.&lt;br /&gt;
&lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
What name should this microformat have?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;appcast&amp;quot;: too specific? appcast shouldn't be limited to applications, and the term may be too jargony. Tantek doesn't like it.&lt;br /&gt;
* &amp;quot;downloads&amp;quot;: too general? Chris doesn't like it.&lt;br /&gt;
* &amp;quot;software-updates&amp;quot;: is &amp;quot;software&amp;quot; too general?&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Each entry needs a version number, so software update frameworks can figure out which version number to display. (Sparkle can actually figure out the version number from the download URL, but not always.)&lt;br /&gt;
&lt;br /&gt;
In the proposal above, the &amp;quot;version&amp;quot; class name is used, but I'm not happy about it. In other microformats, &amp;quot;version&amp;quot; is used to indicate the version of the microformat, not the version of something that is described using the microformat. &amp;quot;revision&amp;quot; is probably a better name.&lt;br /&gt;
&lt;br /&gt;
=== Overlap with Changesets ===&lt;br /&gt;
&lt;br /&gt;
Changesets are very similar to downloads, with the exception that there are no downloads (another reason why the &amp;quot;downloads&amp;quot; name sucks?). Each changeset entry (hentry) usually has a short description (entry-title), a list of changes (entry-description), and a revision number.&lt;br /&gt;
&lt;br /&gt;
=== Download Link in entry-content ===&lt;br /&gt;
&lt;br /&gt;
It makes sense for the download link (the one with rel-enclosure) to sit inside the entry-content. Otherwise, what's the point of having a download link if it doesn't show up in the feed?&lt;br /&gt;
&lt;br /&gt;
If the download link is inside the entry-content, though, Sparkle's &amp;quot;release notes&amp;quot; view will show that download link as well. This is confusing, because people could click that link in the release notes view, which would download the update in Safari like a regular file. Instead, the user should click the &amp;quot;Install Update&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
Additionally, stuff such as MD5 checksums and DSA signatures should probably be hidden from the release notes view as well, because they can't be used by the user anyway (but they are used by Sparkle).&lt;br /&gt;
&lt;br /&gt;
To prevent this download link (as well as the MD5 sum etc) from showing up, anything inside a mini &amp;quot;download&amp;quot; microformat (see above) could be hidden.&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
&lt;br /&gt;
* Create a hash microformat (see [[hash-brainstorming]]).&lt;br /&gt;
* Figure out how to include DSA signatures for enclosures.&lt;br /&gt;
* Figure out whether [[hListing]] could be used instead of [[hAtom]].&lt;br /&gt;
* Figure out whether changesets can benefit from this microformat.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=23389</id>
		<title>downloads-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=23389"/>
		<updated>2007-08-15T17:56:26Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Mozilla Firefox===&lt;br /&gt;
&lt;br /&gt;
*Extension (single instance) e.g. [https://addons.mozilla.org/en-US/firefox/addon/722 NoScript]&lt;br /&gt;
**Extension version history (multiple instances of one app) e.g. [https://addons.mozilla.org/en-US/firefox/addons/versions/722 NoScript history]&lt;br /&gt;
&lt;br /&gt;
===iusethis===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://osx.iusethis.com/app/peek-a-boo&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
* Appcast, e.g. http://osx.iusethis.com/appcast/igtd&lt;br /&gt;
** Every download page has a related appcast RSS feed (with autodiscovery)&lt;br /&gt;
&lt;br /&gt;
iusethis provides RSS appcasts with Sparkle extensions. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;rss xmlns:blogChannel=&amp;quot;http://backend.userland.com/blogChannelModule&amp;quot;&lt;br /&gt;
     xmlns:iusethis=&amp;quot;http://osx.iusethis.com/ns/rss&amp;quot;&lt;br /&gt;
     xmlns:content=&amp;quot;http://purl.org/rss/1.0/modules/content/&amp;quot;&lt;br /&gt;
     xmlns:sparkle=&amp;quot;http://www.andymatuschak.org/xml-namespaces/sparkle&amp;quot;&lt;br /&gt;
     version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;channel&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Appcast for iGTD&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link&amp;gt;http://osx.iusethis.com/app/igtd&amp;lt;/link&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;version history with a sparkle via iusethis.com&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en-us&amp;lt;/language&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:universal&amp;gt;1&amp;lt;/iusethis:universal&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:homepage&amp;gt;http://bargiel.home.pl/iGTD/&amp;lt;/iusethis:homepage&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:developer&amp;gt;bartek:bargiel&amp;lt;/iusethis:developer&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:usecount&amp;gt;517&amp;lt;/iusethis:usecount&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:tags&amp;gt;GTD productivity get things done&amp;lt;/iusethis:tags&amp;gt;&lt;br /&gt;
    &amp;lt;sparkle:appLicense&amp;gt;Freeware&amp;lt;/sparkle:appLicense&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;iGTD 1.4.5.5&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;link&amp;gt;http://osx.iusethis.com/app/versions/7961#ver_35136&amp;lt;/link&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;... appcast description goes here ...&amp;lt;/p&amp;gt;]]&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;guid isPermaLink=&amp;quot;false&amp;quot;&amp;gt;35136&amp;lt;/guid&amp;gt;&lt;br /&gt;
      &amp;lt;pubDate&amp;gt;Thu, 09 Aug 2007 09:31:55 -0000&amp;lt;/pubDate&amp;gt;&lt;br /&gt;
      &amp;lt;enclosure url=&amp;quot;http://bargiel.home.pl/downloads/iGTD.dmg&amp;quot; type=&amp;quot;application/octet-stream&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;sparkle:shortVersionString&amp;gt;1.4.5.5&amp;lt;/sparkle:shortVersionString&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ... more appcast items go here .. --&amp;gt;&lt;br /&gt;
  &amp;lt;/channel&amp;gt;&lt;br /&gt;
&amp;lt;/rss&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some notes about the RSS appcast:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:appLicense&amp;lt;/code&amp;gt; is something iusethis-specific, something the iusethis team seems to have made up. No idea why they are using the sparkle namespace here...&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; seems to be used instead of &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt;, and I'm not sure why.&lt;br /&gt;
&lt;br /&gt;
===VersionTracker===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://www.versiontracker.com/dyn/moreinfo/macosx/3410&lt;br /&gt;
** Does not have a direct download link, but a link to a separate page that starts the download&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
===MySQL Downloads===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://dev.mysql.com/downloads/mysql/5.0.html&lt;br /&gt;
** Very big page with downloads with different applications, architectures, OSes, etc&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
&lt;br /&gt;
===MacUpdate===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://macupdate.com/info.php/id/10225/yum&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a direct download link&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19675</id>
		<title>downloads-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19675"/>
		<updated>2007-08-15T17:55:49Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: I'd love to know where that &amp;amp; keeps coming from. &amp;gt;:(&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Mozilla Firefox===&lt;br /&gt;
&lt;br /&gt;
*Extension (single instance) e.g. [https://addons.mozilla.org/en-US/firefox/addon/722 NoScript]&lt;br /&gt;
**Extension version history (multiple instances of one app) e.g. [https://addons.mozilla.org/en-US/firefox/addons/versions/722 NoScript history]&lt;br /&gt;
&lt;br /&gt;
===iusethis===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://osx.iusethis.com/app/peek-a-boo&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
* Appcast, e.g. http://osx.iusethis.com/appcast/igtd&lt;br /&gt;
** Every download page has a related appcast RSS feed (with autodiscovery)&lt;br /&gt;
&lt;br /&gt;
iusethis provides RSS appcasts with Sparkle extensions. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;rss xmlns:blogChannel=&amp;quot;http://backend.userland.com/blogChannelModule&amp;quot;&lt;br /&gt;
     xmlns:iusethis=&amp;quot;http://osx.iusethis.com/ns/rss&amp;quot;&lt;br /&gt;
     xmlns:content=;http://purl.org/rss/1.0/modules/content/&amp;quot;&lt;br /&gt;
     xmlns:sparkle=&amp;quot;http://www.andymatuschak.org/xml-namespaces/sparkle&amp;quot;&lt;br /&gt;
     version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;channel&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Appcast for iGTD&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link&amp;gt;http://osx.iusethis.com/app/igtd&amp;lt;/link&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;version history with a sparkle via iusethis.com&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en-us&amp;lt;/language&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:universal&amp;gt;1&amp;lt;/iusethis:universal&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:homepage&amp;gt;http://bargiel.home.pl/iGTD/&amp;lt;/iusethis:homepage&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:developer&amp;gt;bartek:bargiel&amp;lt;/iusethis:developer&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:usecount&amp;gt;517&amp;lt;/iusethis:usecount&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:tags&amp;gt;GTD productivity get things done&amp;lt;/iusethis:tags&amp;gt;&lt;br /&gt;
    &amp;lt;sparkle:appLicense&amp;gt;Freeware&amp;lt;/sparkle:appLicense&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;iGTD 1.4.5.5&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;link&amp;gt;http://osx.iusethis.com/app/versions/7961#ver_35136&amp;lt;/link&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;... appcast description goes here ...&amp;lt;/p&amp;gt;]]&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;guid isPermaLink=&amp;quot;false&amp;quot;&amp;gt;35136&amp;lt;/guid&amp;gt;&lt;br /&gt;
      &amp;lt;pubDate&amp;gt;Thu, 09 Aug 2007 09:31:55 -0000&amp;lt;/pubDate&amp;gt;&lt;br /&gt;
      &amp;lt;enclosure url=&amp;quot;http://bargiel.home.pl/downloads/iGTD.dmg&amp;quot; type=&amp;quot;application/octet-stream&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;sparkle:shortVersionString&amp;gt;1.4.5.5&amp;lt;/sparkle:shortVersionString&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ... more appcast items go here .. --&amp;gt;&lt;br /&gt;
  &amp;lt;/channel&amp;gt;&lt;br /&gt;
&amp;lt;/rss&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some notes about the RSS appcast:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:appLicense&amp;lt;/code&amp;gt; is something iusethis-specific, something the iusethis team seems to have made up. No idea why they are using the sparkle namespace here...&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; seems to be used instead of &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt;, and I'm not sure why.&lt;br /&gt;
&lt;br /&gt;
===VersionTracker===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://www.versiontracker.com/dyn/moreinfo/macosx/3410&lt;br /&gt;
** Does not have a direct download link, but a link to a separate page that starts the download&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
===MySQL Downloads===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://dev.mysql.com/downloads/mysql/5.0.html&lt;br /&gt;
** Very big page with downloads with different applications, architectures, OSes, etc&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
&lt;br /&gt;
===MacUpdate===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://macupdate.com/info.php/id/10225/yum&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a direct download link&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19674</id>
		<title>downloads-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19674"/>
		<updated>2007-08-15T17:55:24Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Clearing up sparkle:appLicence mystery&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;&amp;lt;h1&amp;gt;Downloads examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Mozilla Firefox===&lt;br /&gt;
&lt;br /&gt;
*Extension (single instance) e.g. [https://addons.mozilla.org/en-US/firefox/addon/722 NoScript]&lt;br /&gt;
**Extension version history (multiple instances of one app) e.g. [https://addons.mozilla.org/en-US/firefox/addons/versions/722 NoScript history]&lt;br /&gt;
&lt;br /&gt;
===iusethis===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://osx.iusethis.com/app/peek-a-boo&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
* Appcast, e.g. http://osx.iusethis.com/appcast/igtd&lt;br /&gt;
** Every download page has a related appcast RSS feed (with autodiscovery)&lt;br /&gt;
&lt;br /&gt;
iusethis provides RSS appcasts with Sparkle extensions. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;rss xmlns:blogChannel=&amp;quot;http://backend.userland.com/blogChannelModule&amp;quot;&lt;br /&gt;
     xmlns:iusethis=&amp;quot;http://osx.iusethis.com/ns/rss&amp;quot;&lt;br /&gt;
     xmlns:content=;http://purl.org/rss/1.0/modules/content/&amp;quot;&lt;br /&gt;
     xmlns:sparkle=&amp;quot;http://www.andymatuschak.org/xml-namespaces/sparkle&amp;quot;&lt;br /&gt;
     version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;channel&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Appcast for iGTD&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link&amp;gt;http://osx.iusethis.com/app/igtd&amp;lt;/link&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;version history with a sparkle via iusethis.com&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en-us&amp;lt;/language&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:universal&amp;gt;1&amp;lt;/iusethis:universal&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:homepage&amp;gt;http://bargiel.home.pl/iGTD/&amp;lt;/iusethis:homepage&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:developer&amp;gt;bartek:bargiel&amp;lt;/iusethis:developer&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:usecount&amp;gt;517&amp;lt;/iusethis:usecount&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:tags&amp;gt;GTD productivity get things done&amp;lt;/iusethis:tags&amp;gt;&lt;br /&gt;
    &amp;lt;sparkle:appLicense&amp;gt;Freeware&amp;lt;/sparkle:appLicense&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;iGTD 1.4.5.5&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;link&amp;gt;http://osx.iusethis.com/app/versions/7961#ver_35136&amp;lt;/link&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;... appcast description goes here ...&amp;lt;/p&amp;gt;]]&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;guid isPermaLink=&amp;quot;false&amp;quot;&amp;gt;35136&amp;lt;/guid&amp;gt;&lt;br /&gt;
      &amp;lt;pubDate&amp;gt;Thu, 09 Aug 2007 09:31:55 -0000&amp;lt;/pubDate&amp;gt;&lt;br /&gt;
      &amp;lt;enclosure url=&amp;quot;http://bargiel.home.pl/downloads/iGTD.dmg&amp;quot; type=&amp;quot;application/octet-stream&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;sparkle:shortVersionString&amp;gt;1.4.5.5&amp;lt;/sparkle:shortVersionString&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ... more appcast items go here .. --&amp;gt;&lt;br /&gt;
  &amp;lt;/channel&amp;gt;&lt;br /&gt;
&amp;lt;/rss&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some notes about the RSS appcast:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:appLicense&amp;lt;/code&amp;gt; is something iusethis-specific, something the iusethis team seems to have made up. No idea why they are using the sparkle namespace here...&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; seems to be used instead of &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt;, and I'm not sure why.&lt;br /&gt;
&lt;br /&gt;
===VersionTracker===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://www.versiontracker.com/dyn/moreinfo/macosx/3410&lt;br /&gt;
** Does not have a direct download link, but a link to a separate page that starts the download&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
===MySQL Downloads===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://dev.mysql.com/downloads/mysql/5.0.html&lt;br /&gt;
** Very big page with downloads with different applications, architectures, OSes, etc&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
&lt;br /&gt;
===MacUpdate===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://macupdate.com/info.php/id/10225/yum&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a direct download link&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19845</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19845"/>
		<updated>2007-08-15T10:05:25Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Improving the Smaller Download Microformat section.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and software update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
					The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
					&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
It's been suggested that tags could be used to mark up OSes and architectures.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
* [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
* Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Smaller Download Microformat ===&lt;br /&gt;
&lt;br /&gt;
Merging the appcast and the downloads microformat might not have been a smart idea, for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;downloads&amp;quot; is very general and very vague.&lt;br /&gt;
* Marking up a single download with hAtom doesn't make much sense.&lt;br /&gt;
&lt;br /&gt;
A simpler download microformat, which is basically a rel-enclosure with some extra data (MD5 sum, DSA signature) may be useful. Something along these lines, perhaps:&lt;br /&gt;
&lt;br /&gt;
* download&lt;br /&gt;
** [[rel-enclosure]]&lt;br /&gt;
** hash (see [[hash-brainstorming]])&lt;br /&gt;
** signature&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;p class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
    Download &amp;lt;a href=&amp;quot;blah.zip&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Blah 2.1&amp;lt;/a&amp;gt;!&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum: &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;c23316cb51ca5125d1417faba5cef51e&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;).&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This smaller download microformat could then be used inside a hentry in the larger appcast microformat.&lt;br /&gt;
&lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
What name should this microformat have?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;appcast&amp;quot;: too specific? appcast shouldn't be limited to applications, and the term may be too jargony. Tantek doesn't like it.&lt;br /&gt;
* &amp;quot;downloads&amp;quot;: too general? Chris doesn't like it.&lt;br /&gt;
* &amp;quot;software-updates&amp;quot;: is &amp;quot;software&amp;quot; too general?&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Each entry needs a version number, so software update frameworks can figure out which version number to display. (Sparkle can actually figure out the version number from the download URL, but not always.)&lt;br /&gt;
&lt;br /&gt;
In the proposal above, the &amp;quot;version&amp;quot; class name is used, but I'm not happy about it. In other microformats, &amp;quot;version&amp;quot; is used to indicate the version of the microformat, not the version of something that is described using the microformat. &amp;quot;revision&amp;quot; is probably a better name.&lt;br /&gt;
&lt;br /&gt;
=== Overlap with Changesets ===&lt;br /&gt;
&lt;br /&gt;
Changesets are very similar to downloads, with the exception that there are no downloads (another reason why the &amp;quot;downloads&amp;quot; name sucks?). Each changeset entry (hentry) usually has a short description (entry-title), a list of changes (entry-description), and a revision number.&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
&lt;br /&gt;
* Create a hash microformat (see [[hash-brainstorming]]).&lt;br /&gt;
* Figure out how to include DSA signatures for enclosures.&lt;br /&gt;
* Figure out whether [[hListing]] could be used instead of [[hAtom]].&lt;br /&gt;
* Figure out whether changesets can benefit from this microformat.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19673</id>
		<title>downloads-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19673"/>
		<updated>2007-08-15T09:48:01Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Documenting iusethis's rss appcast format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--pages featuring software downloads--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mozilla Firefox===&lt;br /&gt;
&lt;br /&gt;
*Extension (single instance) e.g. [https://addons.mozilla.org/en-US/firefox/addon/722 NoScript]&lt;br /&gt;
**Extension version history (multiple instances of one app) e.g. [https://addons.mozilla.org/en-US/firefox/addons/versions/722 NoScript history]&lt;br /&gt;
&lt;br /&gt;
===iusethis===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://osx.iusethis.com/app/peek-a-boo&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
* Appcast, e.g. http://osx.iusethis.com/appcast/igtd&lt;br /&gt;
** Every download page has a related appcast RSS feed (with autodiscovery)&lt;br /&gt;
&lt;br /&gt;
iusethis provides RSS appcasts with Sparkle extensions. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;rss xmlns:blogChannel=&amp;quot;http://backend.userland.com/blogChannelModule&amp;quot;&lt;br /&gt;
     xmlns:iusethis=&amp;quot;http://osx.iusethis.com/ns/rss&amp;quot;&lt;br /&gt;
     xmlns:content=&amp;quot;http://purl.org/rss/1.0/modules/content/&amp;quot;&lt;br /&gt;
     xmlns:sparkle=&amp;quot;http://www.andymatuschak.org/xml-namespaces/sparkle&amp;quot;&lt;br /&gt;
     version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;channel&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Appcast for iGTD&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link&amp;gt;http://osx.iusethis.com/app/igtd&amp;lt;/link&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;version history with a sparkle via iusethis.com&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en-us&amp;lt;/language&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:universal&amp;gt;1&amp;lt;/iusethis:universal&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:homepage&amp;gt;http://bargiel.home.pl/iGTD/&amp;lt;/iusethis:homepage&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:developer&amp;gt;bartek:bargiel&amp;lt;/iusethis:developer&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:usecount&amp;gt;517&amp;lt;/iusethis:usecount&amp;gt;&lt;br /&gt;
    &amp;lt;iusethis:tags&amp;gt;GTD productivity get things done&amp;lt;/iusethis:tags&amp;gt;&lt;br /&gt;
    &amp;lt;sparkle:appLicense&amp;gt;Freeware&amp;lt;/sparkle:appLicense&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;iGTD 1.4.5.5&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;link&amp;gt;http://osx.iusethis.com/app/versions/7961#ver_35136&amp;lt;/link&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;... appcast description goes here ...&amp;lt;/p&amp;gt;]]&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;guid isPermaLink=&amp;quot;false&amp;quot;&amp;gt;35136&amp;lt;/guid&amp;gt;&lt;br /&gt;
      &amp;lt;pubDate&amp;gt;Thu, 09 Aug 2007 09:31:55 -0000&amp;lt;/pubDate&amp;gt;&lt;br /&gt;
      &amp;lt;enclosure url=&amp;quot;http://bargiel.home.pl/downloads/iGTD.dmg&amp;quot; type=&amp;quot;application/octet-stream&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;sparkle:shortVersionString&amp;gt;1.4.5.5&amp;lt;/sparkle:shortVersionString&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ... more appcast items go here .. --&amp;gt;&lt;br /&gt;
  &amp;lt;/channel&amp;gt;&lt;br /&gt;
&amp;lt;/rss&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some notes about the RSS appcast:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:appLicense&amp;lt;/code&amp;gt; is a mystery to me. I have no idea where this comes from, why it is there, or how it's used. Even Google doesn't know about it.&lt;br /&gt;
* &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; seems to be used instead of &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt;, and I'm not sure why.&lt;br /&gt;
&lt;br /&gt;
===VersionTracker===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://www.versiontracker.com/dyn/moreinfo/macosx/3410&lt;br /&gt;
** Does not have a direct download link, but a link to a separate page that starts the download&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
===MySQL Downloads===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://dev.mysql.com/downloads/mysql/5.0.html&lt;br /&gt;
** Very big page with downloads with different applications, architectures, OSes, etc&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
&lt;br /&gt;
===MacUpdate===&lt;br /&gt;
&lt;br /&gt;
* Download page, e.g. http://macupdate.com/info.php/id/10225/yum&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a direct download link&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19651</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19651"/>
		<updated>2007-08-12T23:21:52Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
					The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
					&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
It's been suggested that tags could be used to mark up OSes and architectures.&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
* [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
* Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Smaller Download Microformat ===&lt;br /&gt;
&lt;br /&gt;
Merging the appcast and the downloads microformat might not have been a smart idea, for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;downloads&amp;quot; is very general and very vague.&lt;br /&gt;
* Marking up a single download with hAtom doesn't make much sense.&lt;br /&gt;
&lt;br /&gt;
A simpler download microformat, which is basically a rel-enclosure with some extra data (MD5 sum, DSA signature) may be useful.&lt;br /&gt;
&lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
What name should this microformat have?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;appcast&amp;quot;: too specific? appcast shouldn't be limited to applications, and the term may be too jargony. Tantek doesn't like it.&lt;br /&gt;
* &amp;quot;downloads&amp;quot;: too general? Chris doesn't like it.&lt;br /&gt;
* &amp;quot;software-updates&amp;quot;: is &amp;quot;software&amp;quot; too general?&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Each entry needs a version number, so software update frameworks can figure out which version number to display. (Sparkle can actually figure out the version number from the download URL, but not always.)&lt;br /&gt;
&lt;br /&gt;
In the proposal above, the &amp;quot;version&amp;quot; class name is used, but I'm not happy about it. In other microformats, &amp;quot;version&amp;quot; is used to indicate the version of the microformat, not the version of something that is described using the microformat. &amp;quot;revision&amp;quot; is probably a better name.&lt;br /&gt;
&lt;br /&gt;
=== Overlap with Changesets ===&lt;br /&gt;
&lt;br /&gt;
Changesets are very similar to downloads, with the exception that there are no downloads (another reason why the &amp;quot;downloads&amp;quot; name sucks?). Each changeset entry (hentry) usually has a short description (entry-title), a list of changes (entry-description), and a revision number.&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
&lt;br /&gt;
* Create a hash microformat (see [[hash-brainstorming]]).&lt;br /&gt;
* Figure out how to include DSA signatures for enclosures.&lt;br /&gt;
* Figure out whether [[hListing]] could be used instead of [[hAtom]].&lt;br /&gt;
* Figure out whether changesets can benefit from this microformat.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=33363</id>
		<title>downloads-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=33363"/>
		<updated>2007-08-12T22:19:48Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Removing Apple SU XML sample and adding link to a typical .dist XML file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads formats&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Formats==&lt;br /&gt;
&lt;br /&gt;
===PAD===&lt;br /&gt;
&lt;br /&gt;
Portable Application Description (PAD) is an XML format: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is PAD? PAD is the Portable Application Description, and it helps authors provide product descriptions and specifications to online sources in a standard way, using a standard data format that will allow webmasters and program librarians to automate program listings. PAD saves time for both authors and webmasters. For more, see the PAD FAQ. [http://198.63.208.118/pad/]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://groups.google.com/group/uk.net.web.authoring/browse_thread/thread/40f6766f7fc76793/cac367289eebe35b?lnk=st&amp;amp;q=shareware+schema+author%3AMabbett&amp;amp;rnum=1#cac367289eebe35b Microformats &amp;amp; Pad were discussed on Usenet in March 2006]&lt;br /&gt;
&lt;br /&gt;
===Appcast===&lt;br /&gt;
&lt;br /&gt;
Quoted from the [http://connectedflow.com/appcasting/ Connected Flow Appcast page]:&lt;br /&gt;
&lt;br /&gt;
:Appcasting is the practice of using the 'enclosure' feature of RSS 2.0 feeds to deliver updates and release notes for new software applications.&lt;br /&gt;
&lt;br /&gt;
===Appcast + Sparkle===&lt;br /&gt;
&lt;br /&gt;
[http://sparkle.andymatuschak.org/ Sparkle], an application update framework, uses appcasts as described above, but adds several new features. An appcast with Sparkle extensions can, for example, have MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
===DOAP===&lt;br /&gt;
&lt;br /&gt;
[http://usefulinc.com/doap/ DOAP (Description Of A Project)] is a way of describing open-source projects. It has a &amp;lt;code&amp;gt;file-release&amp;lt;/code&amp;gt; property which can be used for describing application updates.&lt;br /&gt;
&lt;br /&gt;
===Apple Software Update XML===&lt;br /&gt;
&lt;br /&gt;
Apple's Software Updater uses XML files. There seem to be two ones: an  [http://phobos.apple.com/version iTunes-specific one], and a [http://swscan.apple.com/content/catalogs/index-1.sucatalog general-purpose one]. For example, here's a [http://swcdn.apple.com/content/downloads/46/57/022-3271/rmqY4rJMxLgmYp8fMxJCfB22drKT5CMvxC/022-3271.Dutch.dist typical software update description].&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-examples]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=19601</id>
		<title>downloads-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=19601"/>
		<updated>2007-08-12T22:05:50Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads formats&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Formats==&lt;br /&gt;
&lt;br /&gt;
===PAD===&lt;br /&gt;
&lt;br /&gt;
Portable Application Description (PAD) is an XML format: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is PAD? PAD is the Portable Application Description, and it helps authors provide product descriptions and specifications to online sources in a standard way, using a standard data format that will allow webmasters and program librarians to automate program listings. PAD saves time for both authors and webmasters. For more, see the PAD FAQ. [http://198.63.208.118/pad/]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://groups.google.com/group/uk.net.web.authoring/browse_thread/thread/40f6766f7fc76793/cac367289eebe35b?lnk=st&amp;amp;q=shareware+schema+author%3AMabbett&amp;amp;rnum=1#cac367289eebe35b Microformats &amp;amp; Pad were discussed on Usenet in March 2006]&lt;br /&gt;
&lt;br /&gt;
===Appcast===&lt;br /&gt;
&lt;br /&gt;
Quoted from the [http://connectedflow.com/appcasting/ Connected Flow Appcast page]:&lt;br /&gt;
&lt;br /&gt;
:Appcasting is the practice of using the 'enclosure' feature of RSS 2.0 feeds to deliver updates and release notes for new software applications.&lt;br /&gt;
&lt;br /&gt;
===Appcast + Sparkle===&lt;br /&gt;
&lt;br /&gt;
[http://sparkle.andymatuschak.org/ Sparkle], an application update framework, uses appcasts as described above, but adds several new features. An appcast with Sparkle extensions can, for example, have MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
===DOAP===&lt;br /&gt;
&lt;br /&gt;
[http://usefulinc.com/doap/ DOAP (Description Of A Project)] is a way of describing open-source projects. It has a &amp;lt;code&amp;gt;file-release&amp;lt;/code&amp;gt; property which can be used for describing application updates.&lt;br /&gt;
&lt;br /&gt;
===Apple Software Update XML===&lt;br /&gt;
&lt;br /&gt;
Apple's Software Updater uses XML files. There seem to be two ones: an  [http://phobos.apple.com/version iTunes-specific one], and a [http://swscan.apple.com/content/catalogs/index-1.sucatalog general-purpose one]. It looks something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dict&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;iTunesMacVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;7.3.2&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;iPodSoftwareVersions&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;dict&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;11&amp;lt;/key;&lt;br /&gt;
      &amp;lt;dict&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;UpdaterFamilyID&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;11&amp;lt;/integer&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;BuildID&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;69304320&amp;lt;/integer&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;FirmwareURL&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-2694.20060912.ipDcD/iPod_11.1.2.1.ipsw&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;DocumentationURL&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-2694.20060912.ipDcD/iPodDocumentation_11.1.2.1.ipd&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;VisibleBuildID&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;18972672&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;/dict&amp;gt;&lt;br /&gt;
    &amp;lt;/dict&amp;gt;&lt;br /&gt;
  &amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-examples]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19602</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19602"/>
		<updated>2007-08-12T21:57:59Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding &amp;quot;Overlap with Changesets&amp;quot; issue; adding hListing todo item&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
* [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
* Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Smaller Download Microformat ===&lt;br /&gt;
&lt;br /&gt;
Merging the appcast and the downloads microformat might not have been a smart idea, for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;downloads&amp;quot; is very general and very vague.&lt;br /&gt;
* Marking up a single download with hAtom doesn't make much sense.&lt;br /&gt;
&lt;br /&gt;
A simpler download microformat, which is basically a rel-enclosure with some extra data (MD5 sum, DSA signature) may be useful.&lt;br /&gt;
&lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
What name should this microformat have?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;appcast&amp;quot;: too specific? appcast shouldn't be limited to applications, and the term may be too jargony. Tantek doesn't like it.&lt;br /&gt;
* &amp;quot;downloads&amp;quot;: too general? Chris doesn't like it.&lt;br /&gt;
* &amp;quot;software-updates&amp;quot;: is &amp;quot;software&amp;quot; too general?&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Each entry needs a version number, so software update frameworks can figure out which version number to display. (Sparkle can actually figure out the version number from the download URL, but not always.)&lt;br /&gt;
&lt;br /&gt;
In the proposal above, the &amp;quot;version&amp;quot; class name is used, but I'm not happy about it. In other microformats, &amp;quot;version&amp;quot; is used to indicate the version of the microformat, not the version of something that is described using the microformat. &amp;quot;revision&amp;quot; is probably a better name.&lt;br /&gt;
&lt;br /&gt;
=== Overlap with Changesets ===&lt;br /&gt;
&lt;br /&gt;
Changesets are very similar to downloads, with the exception that there are no downloads (another reason why the &amp;quot;downloads&amp;quot; name sucks?). Each changeset entry (hentry) usually has a short description (entry-title), a list of changes (entry-description), and a revision number.&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
&lt;br /&gt;
* Create a hash microformat (see [[hash-brainstorming]]).&lt;br /&gt;
* Figure out how to include DSA signatures for enclosures.&lt;br /&gt;
* Figure out whether [[hListing]] could be used instead of [[hAtom]].&lt;br /&gt;
* Figure out whether changesets can benefit from this microformat.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=19600</id>
		<title>downloads-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=19600"/>
		<updated>2007-08-12T21:29:24Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads formats&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Formats==&lt;br /&gt;
&lt;br /&gt;
===PAD===&lt;br /&gt;
&lt;br /&gt;
Portable Application Description (PAD) is an XML format: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is PAD? PAD is the Portable Application Description, and it helps authors provide product descriptions and specifications to online sources in a standard way, using a standard data format that will allow webmasters and program librarians to automate program listings. PAD saves time for both authors and webmasters. For more, see the PAD FAQ. [http://198.63.208.118/pad/]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://groups.google.com/group/uk.net.web.authoring/browse_thread/thread/40f6766f7fc76793/cac367289eebe35b?lnk=st&amp;amp;q=shareware+schema+author%3AMabbett&amp;amp;rnum=1#cac367289eebe35b Microformats &amp;amp; Pad were discussed on Usenet in March 2006]&lt;br /&gt;
&lt;br /&gt;
===Appcast===&lt;br /&gt;
&lt;br /&gt;
Quoted from the [http://connectedflow.com/appcasting/ Connected Flow Appcast page]:&lt;br /&gt;
&lt;br /&gt;
:Appcasting is the practice of using the 'enclosure' feature of RSS 2.0 feeds to deliver updates and release notes for new software applications.&lt;br /&gt;
&lt;br /&gt;
===Appcast + Sparkle===&lt;br /&gt;
&lt;br /&gt;
[http://sparkle.andymatuschak.org/ Sparkle], an application update framework, uses appcasts as described above, but adds several new features. An appcast with Sparkle extensions can, for example, have MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
===DOAP===&lt;br /&gt;
&lt;br /&gt;
[http://usefulinc.com/doap/ DOAP (Description Of A Project)] is a way of describing open-source projects. It has a &amp;lt;code&amp;gt;file-release&amp;lt;/code&amp;gt; property which can be used for describing application updates.&lt;br /&gt;
&lt;br /&gt;
===Apple Software Update XML===&lt;br /&gt;
&lt;br /&gt;
Apple's Software Updater uses the XML file from [http://phobos.apple.com/version here]. It looks something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dict&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;iTunesMacVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;7.3.2&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;iPodSoftwareVersions&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;dict&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;11&amp;lt;/key;&lt;br /&gt;
      &amp;lt;dict&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;UpdaterFamilyID&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;11&amp;lt;/integer&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;BuildID&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;69304320&amp;lt;/integer&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;FirmwareURL&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-2694.20060912.ipDcD/iPod_11.1.2.1.ipsw&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;DocumentationURL&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-2694.20060912.ipDcD/iPodDocumentation_11.1.2.1.ipd&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;VisibleBuildID&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;18972672&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;/dict&amp;gt;&lt;br /&gt;
    &amp;lt;/dict&amp;gt;&lt;br /&gt;
  &amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-examples]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19599</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19599"/>
		<updated>2007-08-12T21:05:16Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding version numbering issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
* [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
* Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Smaller Download Microformat ===&lt;br /&gt;
&lt;br /&gt;
Merging the appcast and the downloads microformat might not have been a smart idea, for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;downloads&amp;quot; is very general and very vague.&lt;br /&gt;
* Marking up a single download with hAtom doesn't make much sense.&lt;br /&gt;
&lt;br /&gt;
A simpler download microformat, which is basically a rel-enclosure with some extra data (MD5 sum, DSA signature) may be useful.&lt;br /&gt;
&lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
What name should this microformat have?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;appcast&amp;quot;: too specific? appcast shouldn't be limited to applications, and the term may be too jargony. Tantek doesn't like it.&lt;br /&gt;
* &amp;quot;downloads&amp;quot;: too general? Chris doesn't like it.&lt;br /&gt;
* &amp;quot;software-updates&amp;quot;: is &amp;quot;software&amp;quot; too general?&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Each entry needs a version number, so software update frameworks can figure out which version number to display. (Sparkle can actually figure out the version number from the download URL, but not always.)&lt;br /&gt;
&lt;br /&gt;
In the proposal above, the &amp;quot;version&amp;quot; class name is used, but I'm not happy about it. In other microformats, &amp;quot;version&amp;quot; is used to indicate the version of the microformat, not the version of something that is described using the microformat. &amp;quot;revision&amp;quot; is probably a better name.&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
&lt;br /&gt;
* Create a hash microformat (see [[hash-brainstorming]]).&lt;br /&gt;
* Figure out how to include DSA signatures for enclosures.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19597</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19597"/>
		<updated>2007-08-12T20:51:36Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding To Do section; adding a few more issues&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
* [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
* Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Smaller Download Microformat ===&lt;br /&gt;
&lt;br /&gt;
Merging the appcast and the downloads microformat might not have been a smart idea, for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;downloads&amp;quot; is very general and very vague.&lt;br /&gt;
* Marking up a single download with hAtom doesn't make much sense.&lt;br /&gt;
&lt;br /&gt;
A simpler download microformat, which is basically a rel-enclosure with some extra data (MD5 sum, DSA signature) may be useful.&lt;br /&gt;
&lt;br /&gt;
=== Naming ===&lt;br /&gt;
&lt;br /&gt;
What name should this microformat have?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;appcast&amp;quot;: too specific? appcast shouldn't be limited to applications, and the term may be too jargony. Tantek doesn't like it.&lt;br /&gt;
* &amp;quot;downloads&amp;quot;: too general? Chris doesn't like it.&lt;br /&gt;
* &amp;quot;software-updates&amp;quot;: is &amp;quot;software&amp;quot; too general?&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
&lt;br /&gt;
* Create a hash microformat (see [[hash-brainstorming]]).&lt;br /&gt;
* Figure out how to include DSA signatures for enclosures.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19596</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19596"/>
		<updated>2007-08-12T20:21:29Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
** Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
*** Sparkle 2.0 will likely make DSA signatures a requirement. There will also be a tool that auto-signs updates. Something to keep in mind. [[User:DenisDefreyne|DenisDefreyne]] 13:21, 12 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19595</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19595"/>
		<updated>2007-08-12T07:59:59Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding Spangle/Perrier link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
** Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
* [http://hohle.net/projects/spangle/ Spangle] (formerly known as Perrier) uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=uid-brainstorming&amp;diff=25017</id>
		<title>uid-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=uid-brainstorming&amp;diff=25017"/>
		<updated>2007-08-06T11:19:01Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding link to isbn page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= UID Brainstorming =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming about ideas, proposals, constraints, requirements for a UID microformat.&lt;br /&gt;
&lt;br /&gt;
== Authors == &lt;br /&gt;
&lt;br /&gt;
* Tantek Çelik&lt;br /&gt;
* Ed Summers&lt;br /&gt;
&lt;br /&gt;
== Experience ==&lt;br /&gt;
&lt;br /&gt;
* a microformat for indicating something *is* an identifier rather than the solved problem of providing a microformat *for* identifiers ([http://www.ietf.org/rfc/rfc2396.txt RFC 2396])&lt;br /&gt;
&lt;br /&gt;
* Tantek has had conversations with LiveClipboard folks and upcoming.org who have had questions about how to do UID properly in hCard and hCalendar. So a separate microformat that those two could call out to would serve a real need.&lt;br /&gt;
&lt;br /&gt;
* It would be useful for autodiscovery puposes to be able to follow a network resolvabale UID and extract more metadata from the referenced UID. Having a well defined UID pattern would prevent an explosion of rel values: rel-vcard, rel-vevent, etc.&lt;br /&gt;
&lt;br /&gt;
* Efforts such as [http://unapi.info unAPI] have a real need for marking up identifiers so that they can be used for retrieving identified objects.&lt;br /&gt;
&lt;br /&gt;
* Greasemonkey and other browser based scripts could make real use of URIs found in pages as opposed to resorting to elaborate regexen. See Jon Udell's  [http://weblog.infoworld.com/udell/stories/2002/12/11/librarylookup.html LibraryLookup] project.&lt;br /&gt;
&lt;br /&gt;
* GoogleScholar embed identifiers in their citations and it would enable moving citations from the browser to a citation manager greatly if there were a way to mark them up.&lt;br /&gt;
&lt;br /&gt;
== Goals Requirements ==&lt;br /&gt;
&lt;br /&gt;
* a method of publishing an asserted globally unique identifier for a piece of content or a referenced item&lt;br /&gt;
&lt;br /&gt;
== Thoughts ==&lt;br /&gt;
&lt;br /&gt;
=== UID + SOURCE -&amp;amp;gt; permalink? ===&lt;br /&gt;
URL is used in hcalendar examples to point not to the permalink of the vevent, but to the permalink for the event home page. If the event home page contains the authorative hcalendar entry, that's fine. Alternatively the source attribute could be borrowed from vcard to mean &amp;quot;microformat permalink&amp;quot; instead of &amp;quot;permalink of the thing the microformat is about&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There seems to be a conflict between iCalendar and vCard rfcs as to what a url is. iCalendar says permalink of iCalendar object. vCard says identifying url (eg home page) of the person or object the vCard is about. vCard uses &amp;quot;source&amp;quot; for iCalendar's &amp;quot;url&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== UIDs that are URLs ===&lt;br /&gt;
&lt;br /&gt;
It seems like in the 80% case (perhaps 99.99% case on the Web), a UID is going to be a URL, thus a common pattern will likely be things like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url uid&amp;quot; href=&amp;quot;http://example.com/contentspace/somenumber&amp;quot;&amp;gt;the item&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SHOULD rather than MUST ===&lt;br /&gt;
&lt;br /&gt;
A UID SHOULD be a URL rather than MUST. The UID microformat will ordinarily be a URL, but it should be flexible enough to allow it to contain non-network resolvable URIs.&lt;br /&gt;
&lt;br /&gt;
=== UID + URL -&amp;amp;gt; permalink? ===&lt;br /&gt;
&lt;br /&gt;
Can you infer that if something is a URL and a UID that it is also a permalink?  It seems so.  I can't think of any semantic of &amp;quot;permalink&amp;quot; that isn't covered by the union of the semantics of URL and UID.&lt;br /&gt;
&lt;br /&gt;
=== abbr pattern ===&lt;br /&gt;
&lt;br /&gt;
Use the [[abbr-design-pattern]] to allow identifiers to be more fully described.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;abbr class=&amp;quot;uid&amp;quot; title=&amp;quot;urn:isbn:0950788120&amp;quot;&amp;gt;0 9507881-2-0&amp;lt;/abbr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML ID attribute ===&lt;br /&gt;
&lt;br /&gt;
How does/doesn't the ID attribute from HTML fit into all this? Can it be repurposed to help here?&lt;br /&gt;
&lt;br /&gt;
== Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== Just use UID from hCard ===&lt;br /&gt;
&lt;br /&gt;
* Tantek proposed that we see if we can reuse uid from [[hcard|hCard]], similar to how we have reused [[geo]] and [[adr]] from [[hcard|hCard]].&lt;br /&gt;
* In particular we should define per the RFC2426 and RFC2445 definitions of UID, and also state that UID identifies the singular thing which this microformat is about (primary reference). (Thanks Joe Andrieu for this wording).&lt;br /&gt;
* Since microformats are about things published on the *Web*, we can say:&lt;br /&gt;
** UIDs SHOULD be URLs and if you cannot use a URL (for whatever reason), then you SHOULD at least use a URI, thereby indicating our preference for UIDs which can be resolved to a network location, and barring that, UIDs which follow the URN registry.&lt;br /&gt;
&lt;br /&gt;
=== Use rel-bookmark from hAtom ===&lt;br /&gt;
hAtom currently uses the HTML standard rel-bookmark to identify its bookmark. This appears to be precisely eqivalent to the class combination &amp;quot;uid url&amp;quot;. This does not appear to permit non-url uids, but if we are identifying the authorative id of a piece of microformatted data that we already have in-hand a non-url uid may never be required. Non-url uids (eg isbn) can still appear in citation formats without affecting the development of this &amp;quot;identify myself&amp;quot; microformat.&lt;br /&gt;
&lt;br /&gt;
If rel-bookmark is not appropriate for this format, we should consider retrofiting this format back to hAtom. It may be appropriate to replace rel-bookmark with the separate url and uid classes, or to allow either form to be used.&lt;br /&gt;
&lt;br /&gt;
=== Create a URI microformat ===&lt;br /&gt;
&lt;br /&gt;
* Xiaoming proposed leaving UID intact in hcalendar and hcard, because whatever written in rfc2426/rfc2445 and their examples cannot be easily changed, and they seem to work well with hcalendar/hcard. Instead a new &amp;quot;URI&amp;quot; microformat should be established for the purpose of indicating something *is* an identifier in general.In this case you can easily reference URI RFC and no further elaboration about persistence, resolvability or uniqueness will be necessary because these issues are addressed by various URI specifications.&lt;br /&gt;
** The problem with &amp;quot;just use URI&amp;quot; is that URI (or URL for that matter) merely is a *type* of data.  What that data *means* to the microformat still needs additional semantics, and that's why we need a property name like UID (even if it is defined to be of type URI or URL) which specifies this particular semantic.  Thanks to Joe Andrieu for asking the questions which lead to this clarification. - Tantek&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[adr]]&lt;br /&gt;
* [[geo]]&lt;br /&gt;
* [[hatom|hAtom]]&lt;br /&gt;
* [[hcard|hCard]]&lt;br /&gt;
* [[hcalendar|hCalendar]]&lt;br /&gt;
* [[abbr-design-pattern]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[isbn]]&lt;br /&gt;
* [http://www.iana.org/assignments/urn-namespaces IANA URN Namespaces - RFC2141, RFC3406]&lt;br /&gt;
* [http://www.iana.org/assignments/uri-schemes.html IANA Uniform Resource Identifer (URI) Schemes]&lt;br /&gt;
* [http://ocoins.info COinS] for putting attaching openurl context objexts to a span.&lt;br /&gt;
* [http://unapi.info unAPI] has a technique for embedding IDs in html so that they can be retrieved from an unAPI service.&lt;br /&gt;
* [http://www.taguri.org/ Tag URI] an algorithm that lets people mint identifiers that no one else using the same algorithm could ever mint.&lt;br /&gt;
&lt;br /&gt;
== Related Discussion ==&lt;br /&gt;
* [http://microformats.org/discuss/mail/microformats-discuss/2006-April/003726.html UID, URL, live microformats]&lt;br /&gt;
* [http://microformats.org/discuss/mail/microformats-discuss/2005-November/002046.html format for identifiers]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=Main_Page&amp;diff=29531</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=Main_Page&amp;diff=29531"/>
		<updated>2007-08-05T23:10:18Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Renaming appcast-* to downloads-*&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right;margin-left:1em&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to the microformats wiki!&lt;br /&gt;
&lt;br /&gt;
Please start with the [[introduction]] page and read [[how-to-play]] before making any edits.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
* Learn what it means to be [http://microformats.org/wiki/posh &amp;lt;abbr title=&amp;quot;Plain Old Semantic HTML&amp;quot;&amp;gt;POSH&amp;lt;/abbr&amp;gt;] {{NewMarker}}.&lt;br /&gt;
* See the [http://microformats.org/about/ about page], [http://microformats.org/ latest news], [[press]], [[presentations]], [[books]], [[podcasts]], &amp;amp; [[screencasts]].&lt;br /&gt;
* Have questions? Read the [[faq|frequently asked questions]] and see the [[glossary]] for new terms. &lt;br /&gt;
* Want to learn more in person? Check out microformats [[events]].&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
Microformats are small bits of HTML that represent things like people, events, tags etc. in webpages.  &lt;br /&gt;
&lt;br /&gt;
Microformats enable the publishing of higher fidelity information on the Web, providing the fastest &amp;amp; simplest way to support feeds and APIs for your website.  See more explanations of [[what-are-microformats|what are microformats]], and [[what-can-you-do-with-microformats|what you can do with them]]. &lt;br /&gt;
&lt;br /&gt;
== How to contribute ==&lt;br /&gt;
Do you want to help take microformats to the next level?  You can:&lt;br /&gt;
* [[get-started|Get started]] by adding microformats to your website, services, and products.&lt;br /&gt;
* [[advocacy|Advocate]] the use of microformats on other web sites, especially those you use.&lt;br /&gt;
* Write a [[testimonial]].&lt;br /&gt;
* Do something on the [[to-do|to do list]].&lt;br /&gt;
* Join the [[irc|IRC Channel]] and [http://microformats.org/discuss mailing lists] to learn and help answer questions about microformats.&lt;br /&gt;
* [[Main_Page#microformats_wiki_translations|Translate this microformats wiki into other languages]] to make microformats more accessible to readers of languages around the world.&lt;br /&gt;
* Find [[orphans|orphaned]] pages, and add links to them.&lt;br /&gt;
* Before proposing any new microformats, make sure your website is [[POSH]], [[get-started|uses existing microformats]], and then read the [[process]].&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
[[microformats|Microformats]] open standards specifications (see also: [[implementations]], [[examples-in-the-wild]])&lt;br /&gt;
* [[hcalendar|hCalendar]] - [http://microformats.org/code/hcalendar/creator hcalendar creator]&lt;br /&gt;
* [[hcard|hCard]] - [http://microformats.org/code/hcard/creator hcard creator]&lt;br /&gt;
* [[rel-license]]&lt;br /&gt;
* [[rel-nofollow]]&lt;br /&gt;
* [[rel-tag]]&lt;br /&gt;
* [[vote-links|VoteLinks]]&lt;br /&gt;
* [http://gmpg.org/xfn/ XFN] (see also: [[xfn-implementations]])&lt;br /&gt;
* [http://gmpg.org/xmdp/ XMDP]&lt;br /&gt;
* [[xoxo|XOXO]]&lt;br /&gt;
&lt;br /&gt;
== Drafts ==&lt;br /&gt;
* [[adr|adr]]&lt;br /&gt;
* [[geo|geo]]&lt;br /&gt;
* [[hatom|hAtom]]&lt;br /&gt;
* [[hresume|hResume]]&lt;br /&gt;
* [[hreview|hReview]] - [http://microformats.org/code/hreview/creator hreview creator]&lt;br /&gt;
* [[rel-directory]]&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[rel-home]]&lt;br /&gt;
* [[rel-payment]]&lt;br /&gt;
* [[robots-exclusion|Robots Exclusion]]&lt;br /&gt;
* [[xfolk|xFolk]]&lt;br /&gt;
&lt;br /&gt;
== Design Patterns ==&lt;br /&gt;
&lt;br /&gt;
{{design_patterns}} &amp;lt;!-- this can be edited in /wiki/Template:design_patterns --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exploratory Discussions ==&lt;br /&gt;
Per the microformats [[process]]: research and analysis of real-world [[examples]], existing formats, and brainstorming to motivate the microformat. Please check [[rejected-formats]] before making additions.&lt;br /&gt;
&lt;br /&gt;
* alternates [[alternates-brainstorming|alternates brainstorming]], [[alternates-examples|alternates examples]]&lt;br /&gt;
*[[attention]]&lt;br /&gt;
* audio-info ([[audio-info-examples|examples]], [[audio-info-formats|formats]], [[audio-info-brainstorming|brainstorming]], [[audio-info-proposal|proposal]], [[audio-info-issues|issues]]) - Marking up information and metadata related to audio (speech, music, and sound in general).&lt;br /&gt;
* blog description [[blog-description-examples|blog description examples]]&lt;br /&gt;
* blog info [[blog-info-examples|blog info examples]]&lt;br /&gt;
* blog post [[blog-post-examples|examples]], [[blog-post-formats|blog post formats]], and [[blog-post-brainstorming|blog post brainstorming]] (yielded the [[hatom|hAtom]] draft)&lt;br /&gt;
* book [[book-examples|book examples]], [[book-formats|book formats]], and [[book-brainstorming|book brainstorming]]&lt;br /&gt;
* chat [[chat-examples|chat examples]], [[chat-formats|chat formats]], and [[chat-brainstorming|chat brainstorming]]&lt;br /&gt;
* citation [[citation|citation effort]], [[citation-examples|citation examples]], [[citation-formats|citation formats]], [[citation-brainstorming|citation brainstorming]], and [[citation-faq|citation FAQ]]&lt;br /&gt;
* code [[code-examples| code examples]], [[code-brainstorming|code brainstorming]] {{NewMarker}}&lt;br /&gt;
* comment [[comment-problem|comment problem]], [[comment-examples|comment examples]], and [[comments-formats|comment formats]] (Some stuff needs to be extracted from [[comments-formats]])&lt;br /&gt;
* [[collection-description|collection description]] - for describing collections in libraries {{NewMarker}}&lt;br /&gt;
* [[course-catalog]]; [[course-catalog-examples]] {{NewMarker}}&lt;br /&gt;
* [[currency]]; [[currency-examples]]; [[currency-brainstorming]]; [[currency-proposal]]; [[currency-issues]]&lt;br /&gt;
* [[depend-examples]]: examples of dependency graphs, especially as they relate to software {{NewMarker}}&lt;br /&gt;
* [[digital-signatures]]: incorporation of digital signatures in Microformatted data; ([[digitalsignature-examples|digital-signature examples]], [[digitalsignature-brainstorming|digital-signatures brainstorming]]) {{NewMarker}}&lt;br /&gt;
* directions [[directions-examples|directions examples]] {{NewMarker}}&lt;br /&gt;
* directory inclusion [[directory-inclusion-examples|directory inclusion examples]], [[directory-inclusion-formats|directory inclusion formats]]. (see also [[rel-directory]])&lt;br /&gt;
* distributed conversation [[distributed-conversation|distributed conversation overview]], [[distributed-conversation-brainstorming|distributed conversation brainstorming]], [[distributed-conversation-examples|distributed conversation examples]], and [[distributed-conversation-formats|distributed conversation formats]]&lt;br /&gt;
* [[downloads]] [[downloads-examples|downloads examples]], [[downloads-formats|downloads formats]], [[downloads-brainstorming|downloads brainstorming]] {{NewMarker}}&lt;br /&gt;
* error messages [[error-message-examples|error message examples]], [[error-message-brainstorming|error message brainstorming]]&lt;br /&gt;
* forms [[forms-examples|forms examples]]&lt;br /&gt;
* file-format ([[file-format-examples|examples]], formats, brainstorming) - for the mark-up of file format information (size, type, codecs, bitrate, etc.) {{NewMarker}}&lt;br /&gt;
* genealogy [[genealogy-formats|genealogy exploration]]&lt;br /&gt;
* geo extensions&lt;br /&gt;
** [[geo-extension-strawman]] - extend geo for moons, other planets, etc.&lt;br /&gt;
** [[geo-elevation-examples]] - extend geo for representing altitude {{NewMarker}}&lt;br /&gt;
** [[geo-waypoint-examples]] - extend geo for representing routes and boundaries, using waypoints {{NewMarker}}&lt;br /&gt;
* group [[group-brainstorming|group brainstorming]] and [[group-examples|group examples]]&lt;br /&gt;
* grouping ([[grouping-examples|examples]], [[grouping-formats|formats]], [[grouping-brainstorming|brainstorming]], [[grouping-proposal|proposal]]) - Metadata markup of items that should be grouped together. {{NewMarker}}&lt;br /&gt;
* items [[items-brainstorming|items brainstorming]] and [[items-examples|items examples]]&lt;br /&gt;
* hash [[hash-examples|hash examples]]&lt;br /&gt;
* job listing [[job-listing-examples|job listing examples]] and [[job-listing-brainstorming|job listing brainstorming]]&lt;br /&gt;
* last modified [[last-modified-examples|last modified examples]], [[last-modified-formats|last modified formats]], and [[last-modified-brainstorming|last modified brainstorming]]&lt;br /&gt;
* hListing [[hlisting-proposal|hListing proposal]], and [[hlisting-feedback|hListing feedback]] &lt;br /&gt;
** Also, listing [[listing-examples|examples]], [[listing-formats|formats]], and [[listing-brainstorming|brainstorming]]&lt;br /&gt;
* [[product|hProduct]] - [[product-brainstorming|hProduct brainstorming]] | [[product-examples|hProduct examples]]&lt;br /&gt;
* [[htodo|hToDo]]&lt;br /&gt;
* location [[location-formats|location formats]]. (see also [[adr]] and [[geo]])&lt;br /&gt;
* measures and measurement units [[measure]]&lt;br /&gt;
* [[media-info]] ([[media-info-examples|media-info examples]], [[media-info-formats|media-info formats]], [[media-info-brainstorming|media-info brainstorming]]) {{UpdateMarker}}&lt;br /&gt;
* meeting minutes [[meeting-minutes-examples|meeting minutes examples]], [[meeting-minutes-formats|meeting minutes formats]], and [[meeting-minutes-brainstorming|meeting minutes brainstorming]]&lt;br /&gt;
* metalink [[metalink-examples|metalink examples]] {{NewMarker}}&lt;br /&gt;
* microsummary [[microsummary-brainstorming|microsummary brainstorming]]&lt;br /&gt;
* [[mfo-examples|MFO examples]]&lt;br /&gt;
* music [[music-examples|music examples]] {{UpdateMarker}}&lt;br /&gt;
* news [[news-examples|news examples]] {{NewMarker}}&lt;br /&gt;
* [[operating-hours]]: [[operating-hours-examples]] ..of stores, restaurants, etc. {{UpdateMarker}}&lt;br /&gt;
* [[payment]]&lt;br /&gt;
* photo note [[photo-note-examples|photo note examples]]&lt;br /&gt;
*[[question-answer]], [[question-answer-brainstorming]]; [[question-answer-examples]] {{NewMarker}}&lt;br /&gt;
* receipt ([[receipt-examples|examples]], [[receipt-formats|formats]], [[receipt-brainstorming|brainstorming]], [[receipt-proposal|proposal]]) - Marking up information and metadata related to purchase receipts. {{NewMarker}}&lt;br /&gt;
* recipe [[recipe-examples|recipe examples]], [[recipe-brainstorming]] {{UpdateMarker}}&lt;br /&gt;
* rel-product [[rel-product-brainstorming|rel-product brainstorming]]&lt;br /&gt;
* requirements testing [[requirements-testing|requirements testing overview]], and [[requirements-testing-examples|requirements testing examples]]&lt;br /&gt;
* [[rest-examples|REST examples]]&lt;br /&gt;
* resume [[resume-brainstorming|resume brainstorming]], and [[resume-formats|resume formats]]&lt;br /&gt;
* review [[review-examples|review examples]], and [[review-formats|review formats]] (yielded the [[hreview|hReview]] draft)&lt;br /&gt;
* search results [[search-results-example|search results example]]&lt;br /&gt;
* show [[show-brainstorming|show brainstorming]]&lt;br /&gt;
* showroll [[showroll-brainstorming|brainstorming]]&lt;br /&gt;
* [[species]] - for the marking up of the scientific names of living things: [[species-examples]]; [[species-brainstorming]] {{UpdateMarker}}&lt;br /&gt;
* table [[table-examples|examples]]&lt;br /&gt;
* tagspeak [[tagspeak-examples|tagspeak examples]]&lt;br /&gt;
* tagcloud [[tagcloud-examples|tagcloud examples]], and [[tagcloud-brainstorming|tagcloud  brainstorming]].&lt;br /&gt;
* transit table [[transit-table-examples|transit table examples]]&lt;br /&gt;
* [[uid]]&lt;br /&gt;
* widget [[widget-examples|widget examples]], and [[widget-brainstorming|widget brainstorming]]&lt;br /&gt;
* [[wiki-formats|wiki formats]]&lt;br /&gt;
* work of art [[work-of-art|work of art overview]], [[workofart-examples|work of art examples]], [[workofart-formats|work of art formats]], and [[workofart-brainstorming|work of art brainstorming]] &lt;br /&gt;
*[[xmdp-brainstorming|XMDP brainstorming]] (see also [[xmdp-faq]])&lt;br /&gt;
*[[realestate-propertydetail|realestate-propertydetail brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
* [[examples-in-the-wild]]&lt;br /&gt;
* [[implementations]]&lt;br /&gt;
* [[zen-garden]]&lt;br /&gt;
&lt;br /&gt;
== tools, test cases, additional research ==&lt;br /&gt;
&lt;br /&gt;
The first place to look for examples, code, and test cases is in the pages for each individual microformat. There are only a few cross-cutting tools and services that need to process more than one microformat. This section is intended for editors, parsers, validators, test cases, and other information relevant across multiple microformats.&lt;br /&gt;
&lt;br /&gt;
*[[accessibility]]&lt;br /&gt;
*[[faqs-for-rdf]]&lt;br /&gt;
*[[icalendar-implementations]]&lt;br /&gt;
*[[internationalization]]&lt;br /&gt;
*[[parsing-microformats]]&lt;br /&gt;
*[[profile-uri-examples-in-wild|Profile URI examples, in the wild]] (Profile URIs for &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; elements)&lt;br /&gt;
*[[selected-test-cases-from-the-web]]&lt;br /&gt;
*[http://hg.microformats.org/ Source code repository] -- [[mercurial-quick-start|how to download code from the repository]]&lt;br /&gt;
*[[user-interface]]&lt;br /&gt;
*[[user-profile-examples-in-wild|User profile examples, in the wild]] (User profiles, for social websites)&lt;br /&gt;
*[[vcard-implementations]], [[vcard-errata]], [[vcard-suggestions]]&lt;br /&gt;
*[[why-are-content-standards-hard]]&lt;br /&gt;
&lt;br /&gt;
== resources ==&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[cheatsheets]] are handy if you need a quick reminder about a particular microformat.&lt;br /&gt;
* [[spread-microformats]]&lt;br /&gt;
* [[buttons]]&lt;br /&gt;
* [[icons]]&lt;br /&gt;
* [[demo]] - a page with links for quickly demonstrating microformats working in practice.&lt;br /&gt;
* [[semacode|Semacode]]&lt;br /&gt;
* [[jobs]]&lt;br /&gt;
* [[user-interface]]&lt;br /&gt;
* [[shortcuts]] to wiki pages with long names&lt;br /&gt;
* [[marked-for-deletion]]&lt;br /&gt;
* [[spellcheck|spell-check dictionary]]&lt;br /&gt;
&lt;br /&gt;
== shared work areas ==&lt;br /&gt;
* [[to-do]]&lt;br /&gt;
* [[microformats-issues]] - issues related to more than one microformat.&lt;br /&gt;
* [[external-issues]]&lt;br /&gt;
&lt;br /&gt;
== microformats wiki translations ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;microformats_wiki_translations_in_other_languages&amp;quot;&amp;gt;You may read and edit microformats articles in many other languages:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* languages with over 100 articles&lt;br /&gt;
** [[Main_Page-fr|Français (French)]] {{UpdateMarker-fr}}&lt;br /&gt;
* languages with over 10 articles&lt;br /&gt;
** [[Main_Page-pt-br| Português (Brazilian Portuguese)]]&lt;br /&gt;
** [[Main_Page-ja|日本語 (Japanese)]]&lt;br /&gt;
* languages with over 2 articles&lt;br /&gt;
** [[Main_Page-es|Español (Spanish)]]&lt;br /&gt;
** [[Main_Page-de|Deutsch (German)]]&lt;br /&gt;
** [[Main_Page-ro|Romanian]]&lt;br /&gt;
* elsewhere&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Microformat Wikipedia's article on microformats] has been translated into a number of languages.&lt;br /&gt;
&lt;br /&gt;
See also [[other-languages]], and [[how-to-start-new-translation|how-to-start-a-new-translation]].&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19554</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19554"/>
		<updated>2007-08-05T23:07:04Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Added link to hatom-sparkle Google Code project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
** Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
The hatom-sparkle project on Google Code ([http://code.google.com/p/hatom-sparkle/ project page], [http://hatom-sparkle.googlecode.com/svn/trunk/ repository]) is a fork of Sparkle that adds hAtom support. It is functional, but lacks support for shortVersionString as well as MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-brainstorming&amp;diff=33350</id>
		<title>hash-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-brainstorming&amp;diff=33350"/>
		<updated>2007-08-05T23:02:10Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Hash brainstorming&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== The Problem ==&lt;br /&gt;
Checksums (MD5 &amp;amp; SHA-1 hashes) are offered for files to prove they haven't been tampered with and to uniquely identify them. They are very useful, but they are not used as much as they could be. The current method involves a manual process of hashing the downloaded file (with programs that are not installed by default on all operating systems) and then comparing the value to the one listed. An easy and automatic way to use them would be preferrable to present methods.&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Ant Bryan&lt;br /&gt;
* Charles Iliya Krempeaux&lt;br /&gt;
* [http://stoneship.org/ Denis Defreyne]&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
A microformat for MD5 and SHA-1 hashes could make them more usable. [http://mdhashtool.mozdev.org/index.html MD Hash Tool], another extension, or download managers could be modified to use them automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use with hAtom ===&lt;br /&gt;
For example, with RSS and Atom feeds, we have something called an &amp;quot;enclosure&amp;quot;.  With an &amp;quot;enclosure&amp;quot; you are being told that this file (that the enclosure points to) is &amp;quot;attached&amp;quot; to this item.  (And that you might want to go and download it.) &lt;br /&gt;
&lt;br /&gt;
Now, having checksum information (like a MD5 checksum) could be very useful for this.  Especially in the context of hAtom -- the Microformat variation of Atom.  And the rel-enclosure Microformat.&lt;br /&gt;
 &lt;br /&gt;
So, if we combined the two -- combined this semantic HTML for &amp;quot;downloading&amp;quot; and rel-enclosure -- then we might get something like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark enclosure&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I've added &amp;quot;enclosure&amp;quot; to the &amp;quot;rel&amp;quot; attribute of the &amp;lt;a&amp;gt; element.  This could be used in other Microformats and semantic HTML too.&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&lt;br /&gt;
The proposal above has a few issues.&lt;br /&gt;
&lt;br /&gt;
* Visibility of metadata: The type of checksum (MD5, SHA1, …) should not be inside an attribute, since it is metadata that should be visible.&lt;br /&gt;
* Checksum type attribute: There would need to be a massive number of class names for all possible checksum types: md2, md4, md5, sha1, sha256, sha384, sha512, tiger, ripemd128, ripemd160, etc.&lt;br /&gt;
&lt;br /&gt;
The second sub-section also mentions use with hAtom, even though rel-enclosure is not tied to hAtom.&lt;br /&gt;
&lt;br /&gt;
== Proposal #2 ==&lt;br /&gt;
&lt;br /&gt;
Based on the two issues mentioned above, I propose a following hash format similar to the one in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This introduces a &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute for the kind of checksum (MD5, SHA1, RIPEMD-160, etc), and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; for the actual checksum.&lt;br /&gt;
&lt;br /&gt;
== Hashes and UIDs ==&lt;br /&gt;
&lt;br /&gt;
Hashes an UIDs (unique identifiers) have quite a bit in common. Hashes are, usually, unique as well, except in a few edge cases where two different items have the same MD5 sum. Also see [[uid]] and related pages.&lt;br /&gt;
&lt;br /&gt;
I think the difference between hashes and UIDs is too big for the two concepts to be merged. Hashes are, in my experience, not used to reference items. For example, you wouldn't say &amp;quot;give me the MP3 file with MD5 sum d2c550efaecc2bed137f7e40255177fe&amp;quot; but you could say &amp;quot;give me the book with ISBN ISBN0596002815&amp;quot;. [[User:DenisDefreyne|DenisDefreyne]] 16:02, 5 Aug 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19347</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19347"/>
		<updated>2007-08-05T22:53:19Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
** Is it really worth supporting DSA signatures in downloads? How many people use these DSA signatures anyway?&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=31698</id>
		<title>hash-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=31698"/>
		<updated>2007-08-05T21:57:02Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding reference to media:hash from Yahoo MRSS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Hash examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A microformat for cryptographic hashes, such as MD5 and SHA-1.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Ant Bryan&lt;br /&gt;
* Charles Iliya Krempeaux&lt;br /&gt;
* [http://stoneship.org/ Denis Defreyne]&lt;br /&gt;
&lt;br /&gt;
== Real-World Examples ==&lt;br /&gt;
Currently, MD5 and SHA-1 checksums are either listed on a webpage or email (see Example #1) or stored in a separate file such as (filename.ext.md5 or filename.ext.sha1) (see Example #2). There is no standard or automatic way to use them. Verifying a file after you have the hash is not complex, but it is more than the average user is used to doing (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]). MD5 checksums are 32 digit hexadecimal numbers, while SHA-1 checksums are 40, and SHA-256 checksums are 64.&lt;br /&gt;
&lt;br /&gt;
== Who offers MD5/SHA-1 checksums with software ==&lt;br /&gt;
This is only a small sampling.&lt;br /&gt;
*[http://httpd.apache.org/ Apache HTTP Server] in .md5 file from web.&lt;br /&gt;
*[http://www.cisco.com/ Cisco] MD5 for versions of IOS from Software Center on Cisco website.&lt;br /&gt;
*[http://developer.apple.com/darwin/ Darwin] MD5 on web.&lt;br /&gt;
*[http://fedora.redhat.com/ Fedora Project] SHA-1 on web and SHA1SUM file on ftp.&lt;br /&gt;
*[http://www.freebsd.org/ FreeBSD] on web and in CHECKSUM.MD5 and CHECKSUM.SHA256 files.&lt;br /&gt;
*[http://gcc.gnu.org/ GCC] on ftp as md5.sum file.&lt;br /&gt;
*[http://www.gentoo.org/ Gentoo] as .md5 file on ftp.&lt;br /&gt;
*[http://www.gnome.org/ GNOME] as MD5SUMS-for-gz and MD5SUMS-for-bz2 files on ftp.&lt;br /&gt;
*[http://www.gnupg.org/ GnuPG] SHA-1 on web.&lt;br /&gt;
*[http://www.kde.org/ KDE] on web and on ftp as MD5SUMS file.&lt;br /&gt;
*[http://www.knoppix.org/ Knoppix] in .md5 and .sha1 file.&lt;br /&gt;
*[http://www.mysql.com/ MySQL] MD5 on web.&lt;br /&gt;
*[http://www.openoffice.org/ OpenOffice.org] MD5 on web.&lt;br /&gt;
*[http://www.openssh.com/ OpenSSH] SHA-1 in release announcement.&lt;br /&gt;
*[http://www.openssl.org/ OpenSSL] .md5 and .sha1 files linked to from web.&lt;br /&gt;
*[http://www.perl.org/ Perl] link to .md5 on web.&lt;br /&gt;
*[http://www.postgresql.org/ PostgreSQL] in a .md5 file.&lt;br /&gt;
*[http://www.python.org/ Python] MD5 on web&lt;br /&gt;
*[http://www.ubuntu.com/ Ubuntu] as MD5SUMS on ftp.&lt;br /&gt;
*[http://www.x.org/ X.org] md5sums file on ftp.&lt;br /&gt;
&lt;br /&gt;
=== Example #1: [http://download.openoffice.org/2.0.1/md5sums.html OpenOffice.org MD5 sums] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
English Application Binaries&lt;br /&gt;
&lt;br /&gt;
e0d123e5f316bef78bfdf5a008837577  OOo_2.0.1_LinuxIntel_install.tar.gz&lt;br /&gt;
35d91262b3c3ec8841b54169588c97f7  OOo_2.0.1_LinuxIntel_install_wJRE.tar.gz&lt;br /&gt;
cc273fe9d442850fa18c31c88c823e07  OOo_2.0.1_SolarisSparc_install.tar.gz&lt;br /&gt;
ff6626c69507a6f511cc398998905670  OOo_2.0.1_SolarisSparc_install_wJRE.tar.gz&lt;br /&gt;
ce099d7e208dc921e259b48aadef36c1  OOo_2.0.1_Solarisx86_install.tar.gz&lt;br /&gt;
4fb319211b2e85cace04e8936100f024  OOo_2.0.1_Solarisx86_install_wJRE.tar.gz&lt;br /&gt;
66bd00e43ff8b932c14140472c4b8cc6  OOo_2.0.1_Win32Intel_install.exe&lt;br /&gt;
2d86c4246f3c0eb516628bf324d6b9a3  OOo_2.0.1_Win32Intel_install_wJRE.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example #2: [http://mirrors.csol.org/knoppix/ Knoppix MD5 and SHA-1 sums in separate files ]  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.md5:&lt;br /&gt;
&lt;br /&gt;
1188f67d48c9f11afb8572977ef74c5e *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.sha1:&lt;br /&gt;
&lt;br /&gt;
56857cfc709d3996f057252c16ec4656f5292802 *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: This directory also contains filename.ext.md5.asc and filename.ext.sha1.asc files containing the same checksums and PGP signatures in one file.&lt;br /&gt;
&lt;br /&gt;
== Existing Practices ==&lt;br /&gt;
As described above, I believe almost all solutions are manual (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]), an 8 step process on Windows and 3 steps on Linux. [http://mdhashtool.mozdev.org/lfinfo.html Link Fingerprints] which are used by [http://mdhashtool.mozdev.org/index.html MD Hash Tool], a Firefox extension, is one exception. Here is a Link Fingerprint example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.org/OOo_2.0.1_LinuxIntel_install.tar.gz#!md5!e0d123e5f316bef78bfdf5a008837577&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A Link Fingerprint begins with a traditional URL, then #!md5!, then the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
[http://www.metalinker.org Metalinks] are an XML file format (.metalink) that contain mirrors and checksum information for downloading files. They are used by download programs/managers and mainly open source projects. After a download finishes, the checksum is automatically verified.&lt;br /&gt;
&lt;br /&gt;
Brad Fitzpatrick also [http://brad.livejournal.com/2162507.html suggested referring to &amp;quot;files/patches/changesets&amp;quot; by their unique digest.]&lt;br /&gt;
&lt;br /&gt;
Some HTTP server applications compute a hash over the response body to serve as an effective ETag.  The server must still compute the body but can benefit from reduced network utilization and reduced downstream cache thrashing.  Such applications must be willing to risk a hash collision, albeit scoped to a single URL.&lt;br /&gt;
&lt;br /&gt;
Including a hash in a URL can lead to great cacheability, since the TTL can likely be set to an infinite value.  Such URLs are often referred to as ''versioned URLs''.&lt;br /&gt;
&lt;br /&gt;
== media:hash in Yahoo Media RSS Module ==&lt;br /&gt;
&lt;br /&gt;
Yahoo's [http://search.yahoo.com/mrss Media RSS Module] adds &amp;lt;code&amp;gt;&amp;lt;media:hash&amp;gt;&amp;lt;/code&amp;gt; to RSS feed enclosures, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;media:hash algo=&amp;quot;md5&amp;quot;&amp;gt;dfdec888b72151965a34b4b59031290a&amp;lt;/media:hash&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=33310</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=33310"/>
		<updated>2007-08-05T21:48:06Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Redirecting appcast-brainstorming to downloads-brainstorming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[downloads-brainstorming]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=19598</id>
		<title>downloads-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-formats&amp;diff=19598"/>
		<updated>2007-08-05T21:46:43Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Renaming appcast to downloads where appropriate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads formats&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Formats==&lt;br /&gt;
&lt;br /&gt;
===PAD===&lt;br /&gt;
&lt;br /&gt;
Portable Application Description (PAD) is an XML format: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is PAD? PAD is the Portable Application Description, and it helps authors provide product descriptions and specifications to online sources in a standard way, using a standard data format that will allow webmasters and program librarians to automate program listings. PAD saves time for both authors and webmasters. For more, see the PAD FAQ. [http://198.63.208.118/pad/]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://groups.google.com/group/uk.net.web.authoring/browse_thread/thread/40f6766f7fc76793/cac367289eebe35b?lnk=st&amp;amp;q=shareware+schema+author%3AMabbett&amp;amp;rnum=1#cac367289eebe35b Microformats &amp;amp; Pad were discussed on Usenet in March 2006]&lt;br /&gt;
&lt;br /&gt;
===Appcast===&lt;br /&gt;
&lt;br /&gt;
Quoted from the [http://connectedflow.com/appcasting/ Connected Flow Appcast page]:&lt;br /&gt;
&lt;br /&gt;
:Appcasting is the practice of using the 'enclosure' feature of RSS 2.0 feeds to deliver updates and release notes for new software applications.&lt;br /&gt;
&lt;br /&gt;
===Appcast + Sparkle===&lt;br /&gt;
&lt;br /&gt;
[http://sparkle.andymatuschak.org/ Sparkle], an application update framework, uses appcasts as described above, but adds several new features. An appcast with Sparkle extensions can, for example, have MD5 sums and DSA signatures.&lt;br /&gt;
&lt;br /&gt;
===DOAP===&lt;br /&gt;
&lt;br /&gt;
[http://usefulinc.com/doap/ DOAP (Description Of A Project)] is a way of describing open-source projects. It has a &amp;lt;code&amp;gt;file-release&amp;lt;/code&amp;gt; property which can be used for describing application updates.&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-examples]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-formats&amp;diff=33370</id>
		<title>appcast-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-formats&amp;diff=33370"/>
		<updated>2007-08-05T21:46:12Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: appcast-formats moved to downloads-formats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[downloads-formats]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads&amp;diff=28056</id>
		<title>downloads</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads&amp;diff=28056"/>
		<updated>2007-08-05T21:45:49Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Renaming appcast to downloads where appropriate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Related pages==&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast&amp;diff=33378</id>
		<title>appcast</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast&amp;diff=33378"/>
		<updated>2007-08-05T21:45:16Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: appcast moved to downloads&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[downloads]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19659</id>
		<title>downloads-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19659"/>
		<updated>2007-08-05T21:44:46Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Renaming appcast to downloads where appropriate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;!--pages featuring software downloads--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mozilla Firefox===&lt;br /&gt;
*Extension (single instance) e.g. [https://addons.mozilla.org/en-US/firefox/addon/722 NoScript]&lt;br /&gt;
**Extension version history (multiple instances of one app) e.g. [https://addons.mozilla.org/en-US/firefox/addons/versions/722 NoScript history]&lt;br /&gt;
&lt;br /&gt;
===iusethis===&lt;br /&gt;
* Download page, e.g. http://osx.iusethis.com/app/peek-a-boo&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
* Appcast, e.g. http://osx.iusethis.com/appcast/igtd&lt;br /&gt;
** Every download page has a related appcast RSS feed (with autodiscovery)&lt;br /&gt;
&lt;br /&gt;
===VersionTracker===&lt;br /&gt;
* Download page, e.g. http://www.versiontracker.com/dyn/moreinfo/macosx/3410&lt;br /&gt;
** Does not have a direct download link, but a link to a separate page that starts the download&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
===MySQL Downloads===&lt;br /&gt;
* Download page, e.g. http://dev.mysql.com/downloads/mysql/5.0.html&lt;br /&gt;
** Very big page with downloads with different applications, architectures, OSes, etc&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
&lt;br /&gt;
===MacUpdate===&lt;br /&gt;
* Download page, e.g. http://macupdate.com/info.php/id/10225/yum&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a direct download link&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-brainstorming]]&lt;br /&gt;
* [[downloads-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-examples&amp;diff=33374</id>
		<title>appcast-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-examples&amp;diff=33374"/>
		<updated>2007-08-05T21:44:19Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: appcast-examples moved to downloads-examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[downloads-examples]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19342</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19342"/>
		<updated>2007-08-05T21:41:41Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Merging appcast-brainstorming into downloads-brainstorming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This appcast-brainstorming is obsolete; please visit [[downloads-brainstorming]].&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19345</id>
		<title>downloads-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-brainstorming&amp;diff=19345"/>
		<updated>2007-08-05T21:40:09Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Merging appcast-brainstorming into downloads-brainstorming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Downloads Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to capture software download and sofware update practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
This page was recently merged from appcast-brainstorming, and may therefore still have references to an &amp;quot;appcast microformat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com], among others, provide software downloads, both new releases and updates. &lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The downloads microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an downloads microformat can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Version History&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Version History&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... download pages ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* download pages are hard to do right, and therefore probably not worth supporting. A single HTML page should therefore only contain downloads for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads]]&lt;br /&gt;
* [[downloads-examples]]&lt;br /&gt;
* [[downloads-formats]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[hash-brainstorming]]&lt;br /&gt;
* [[hash-examples]]&lt;br /&gt;
* [http://usefulinc.com/doap DOAP]&lt;br /&gt;
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19338</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19338"/>
		<updated>2007-08-05T19:52:56Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Clearing up the version string section and adding reference to shortVersionString&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
** Tantek suggests that work on an appcast microformat should be continued under the name of a downloads microformat, arguing that the term &amp;quot;appcast&amp;quot; is rather jargony, and I agree. [[User:DenisDefreyne|DenisDefreyne]] 02:59, 5 Aug 2007 (PDT) &lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Version strings: Sparkle will try to determine the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip. If this is not possible, the &amp;lt;code&amp;gt;sparkle:version&amp;lt;/code&amp;gt; attribute will be used. The &amp;lt;code&amp;gt;sparkle:shortVersionString&amp;lt;/code&amp;gt; attribute contains the version string that will be displayed to the user (useful when the actual version number is an internal build number, for example).&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an appcast can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* appcasts are hard to do right, and therefore probably not worth supporting. An appcast HTML page should therefore only contain updates for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;appcast&amp;quot; is too technical (&amp;quot;downloads&amp;quot; is much more clear) and too general (because it only refers to application downloads). Renaming appcasts to downloads would solve these issues.&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19333</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19333"/>
		<updated>2007-08-05T13:41:10Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: /* Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
** Tantek suggests that work on an appcast microformat should be continued under the name of a downloads microformat, arguing that the term &amp;quot;appcast&amp;quot; is rather jargony, and I agree. [[User:DenisDefreyne|DenisDefreyne]] 02:59, 5 Aug 2007 (PDT) &lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an appcast can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* appcasts are hard to do right, and therefore probably not worth supporting. An appcast HTML page should therefore only contain updates for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;appcast&amp;quot; is too technical (&amp;quot;downloads&amp;quot; is much more clear) and too general (because it only refers to application downloads). Renaming appcasts to downloads would solve these issues.&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19339</id>
		<title>downloads-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=downloads-examples&amp;diff=19339"/>
		<updated>2007-08-05T13:27:10Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
&amp;lt;!--alpahbetical by surname--&amp;gt;&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;!--pages featuring software downloads--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mozilla Firefox===&lt;br /&gt;
*Extension (single instance) e.g. [https://addons.mozilla.org/en-US/firefox/addon/722 NoScript]&lt;br /&gt;
**Extension version history (multiple instances of one app) e.g. [https://addons.mozilla.org/en-US/firefox/addons/versions/722 NoScript history]&lt;br /&gt;
&lt;br /&gt;
===iusethis===&lt;br /&gt;
* Download page, e.g. http://osx.iusethis.com/app/peek-a-boo&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
* Appcast, e.g. http://osx.iusethis.com/appcast/igtd&lt;br /&gt;
** Every download page has a related appcast RSS feed (with autodiscovery)&lt;br /&gt;
&lt;br /&gt;
===VersionTracker===&lt;br /&gt;
* Download page, e.g. http://www.versiontracker.com/dyn/moreinfo/macosx/3410&lt;br /&gt;
** Does not have a direct download link, but a link to a separate page that starts the download&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
===MySQL Downloads===&lt;br /&gt;
* Download page, e.g. http://dev.mysql.com/downloads/mysql/5.0.html&lt;br /&gt;
** Very big page with downloads with different applications, architectures, OSes, etc&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** No version history or release notes&lt;br /&gt;
&lt;br /&gt;
===MacUpdate===&lt;br /&gt;
* Download page, e.g. http://macupdate.com/info.php/id/10225/yum&lt;br /&gt;
** Has a version history section&lt;br /&gt;
** Does not list older downloads&lt;br /&gt;
** Has a direct download link&lt;br /&gt;
** Has a system requirements section&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-brainstorming]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19317</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19317"/>
		<updated>2007-08-05T10:19:24Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding issues: naming (appcast vs download) and dsa signatures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
** Tantek suggests that work on an appcast microformat should be continued under the name of a downloads microformat, arguing that the term &amp;quot;appcast&amp;quot; is rather jargony, and I agree. [[User:DenisDefreyne|DenisDefreyne]] 02:59, 5 Aug 2007 (PDT) &lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link. A hentry in an appcast can only have one enclosure, so the MD5 sum and DSA signature should be part of the hentry.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;&lt;br /&gt;
						The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is&lt;br /&gt;
						&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&lt;br /&gt;
				&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* appcasts are hard to do right, and therefore probably not worth supporting. An appcast HTML page should therefore only contain updates for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
* The name &amp;quot;appcast&amp;quot; is too technical (&amp;quot;downloads&amp;quot; is much more clear) and too general (because it only refers to application downloads). Renaming appcasts to downloads would solve these issues.&lt;br /&gt;
* How should DSA signatures be handled? Should a simple &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;dsa-signature&amp;quot;&amp;gt;...&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19305</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19305"/>
		<updated>2007-08-05T09:59:16Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding &amp;quot;downloads&amp;quot; vs. &amp;quot;appcast&amp;quot; line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
** Tantek suggests that work on an appcast microformat should be continued under the name of a downloads microformat, arguing that the term &amp;quot;appcast&amp;quot; is rather jargony, and I agree. [[User:DenisDefreyne|DenisDefreyne]] 02:59, 5 Aug 2007 (PDT) &lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link; a larger &amp;quot;enclosure&amp;quot; microformat may be necessary.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]).&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* appcasts are hard to do right, and therefore probably not worth supporting. An appcast HTML page should therefore only contain updates for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19302</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19302"/>
		<updated>2007-08-05T09:33:57Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link; a larger &amp;quot;enclosure&amp;quot; microformat may be necessary.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]). &lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* appcasts are hard to do right, and therefore probably not worth supporting. An appcast HTML page should therefore only contain updates for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts, including those generated by [http://iusethis.com/ iusethis] (e.g. [http://osx.iusethis.com/appcast/igtd the iGTD appcast]).&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19343</id>
		<title>hash-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19343"/>
		<updated>2007-08-03T13:57:53Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Re-adding missing participants&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Hash examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A microformat for cryptographic hashes, such as MD5 and SHA-1.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Ant Bryan&lt;br /&gt;
* Charles Iliya Krempeaux&lt;br /&gt;
* [http://stoneship.org/ Denis Defreyne]&lt;br /&gt;
&lt;br /&gt;
== Real-World Examples ==&lt;br /&gt;
Currently, MD5 and SHA-1 checksums are either listed on a webpage or email (see Example #1) or stored in a separate file such as (filename.ext.md5 or filename.ext.sha1) (see Example #2). There is no standard or automatic way to use them. Verifying a file after you have the hash is not complex, but it is more than the average user is used to doing (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]). MD5 checksums are 32 digit hexadecimal numbers, while SHA-1 checksums are 40, and SHA-256 checksums are 64.&lt;br /&gt;
&lt;br /&gt;
== Who offers MD5/SHA-1 checksums with software ==&lt;br /&gt;
This is only a small sampling.&lt;br /&gt;
*[http://httpd.apache.org/ Apache HTTP Server] in .md5 file from web.&lt;br /&gt;
*[http://www.cisco.com/ Cisco] MD5 for versions of IOS from Software Center on Cisco website.&lt;br /&gt;
*[http://developer.apple.com/darwin/ Darwin] MD5 on web.&lt;br /&gt;
*[http://fedora.redhat.com/ Fedora Project] SHA-1 on web and SHA1SUM file on ftp.&lt;br /&gt;
*[http://www.freebsd.org/ FreeBSD] on web and in CHECKSUM.MD5 and CHECKSUM.SHA256 files.&lt;br /&gt;
*[http://gcc.gnu.org/ GCC] on ftp as md5.sum file.&lt;br /&gt;
*[http://www.gentoo.org/ Gentoo] as .md5 file on ftp.&lt;br /&gt;
*[http://www.gnome.org/ GNOME] as MD5SUMS-for-gz and MD5SUMS-for-bz2 files on ftp.&lt;br /&gt;
*[http://www.gnupg.org/ GnuPG] SHA-1 on web.&lt;br /&gt;
*[http://www.kde.org/ KDE] on web and on ftp as MD5SUMS file.&lt;br /&gt;
*[http://www.knoppix.org/ Knoppix] in .md5 and .sha1 file.&lt;br /&gt;
*[http://www.mysql.com/ MySQL] MD5 on web.&lt;br /&gt;
*[http://www.openoffice.org/ OpenOffice.org] MD5 on web.&lt;br /&gt;
*[http://www.openssh.com/ OpenSSH] SHA-1 in release announcement.&lt;br /&gt;
*[http://www.openssl.org/ OpenSSL] .md5 and .sha1 files linked to from web.&lt;br /&gt;
*[http://www.perl.org/ Perl] link to .md5 on web.&lt;br /&gt;
*[http://www.postgresql.org/ PostgreSQL] in a .md5 file.&lt;br /&gt;
*[http://www.python.org/ Python] MD5 on web&lt;br /&gt;
*[http://www.ubuntu.com/ Ubuntu] as MD5SUMS on ftp.&lt;br /&gt;
*[http://www.x.org/ X.org] md5sums file on ftp.&lt;br /&gt;
&lt;br /&gt;
=== Example #1: [http://download.openoffice.org/2.0.1/md5sums.html OpenOffice.org MD5 sums] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
English Application Binaries&lt;br /&gt;
&lt;br /&gt;
e0d123e5f316bef78bfdf5a008837577  OOo_2.0.1_LinuxIntel_install.tar.gz&lt;br /&gt;
35d91262b3c3ec8841b54169588c97f7  OOo_2.0.1_LinuxIntel_install_wJRE.tar.gz&lt;br /&gt;
cc273fe9d442850fa18c31c88c823e07  OOo_2.0.1_SolarisSparc_install.tar.gz&lt;br /&gt;
ff6626c69507a6f511cc398998905670  OOo_2.0.1_SolarisSparc_install_wJRE.tar.gz&lt;br /&gt;
ce099d7e208dc921e259b48aadef36c1  OOo_2.0.1_Solarisx86_install.tar.gz&lt;br /&gt;
4fb319211b2e85cace04e8936100f024  OOo_2.0.1_Solarisx86_install_wJRE.tar.gz&lt;br /&gt;
66bd00e43ff8b932c14140472c4b8cc6  OOo_2.0.1_Win32Intel_install.exe&lt;br /&gt;
2d86c4246f3c0eb516628bf324d6b9a3  OOo_2.0.1_Win32Intel_install_wJRE.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example #2: [http://mirrors.csol.org/knoppix/ Knoppix MD5 and SHA-1 sums in separate files ]  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.md5:&lt;br /&gt;
&lt;br /&gt;
1188f67d48c9f11afb8572977ef74c5e *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.sha1:&lt;br /&gt;
&lt;br /&gt;
56857cfc709d3996f057252c16ec4656f5292802 *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: This directory also contains filename.ext.md5.asc and filename.ext.sha1.asc files containing the same checksums and PGP signatures in one file.&lt;br /&gt;
&lt;br /&gt;
== Existing Practices ==&lt;br /&gt;
As described above, I believe almost all solutions are manual (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]), an 8 step process on Windows and 3 steps on Linux. [http://mdhashtool.mozdev.org/lfinfo.html Link Fingerprints] which are used by [http://mdhashtool.mozdev.org/index.html MD Hash Tool], a Firefox extension, is one exception. Here is a Link Fingerprint example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.org/OOo_2.0.1_LinuxIntel_install.tar.gz#!md5!e0d123e5f316bef78bfdf5a008837577&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A Link Fingerprint begins with a traditional URL, then #!md5!, then the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
[http://www.metalinker.org Metalinks] are an XML file format (.metalink) that contain mirrors and checksum information for downloading files. They are used by download programs/managers and mainly open source projects. After a download finishes, the checksum is automatically verified.&lt;br /&gt;
&lt;br /&gt;
Brad Fitzpatrick also [http://brad.livejournal.com/2162507.html suggested referring to &amp;quot;files/patches/changesets&amp;quot; by their unique digest.]&lt;br /&gt;
&lt;br /&gt;
Some HTTP server applications compute a hash over the response body to serve as an effective ETag.  The server must still compute the body but can benefit from reduced network utilization and reduced downstream cache thrashing.  Such applications must be willing to risk a hash collision, albeit scoped to a single URL.&lt;br /&gt;
&lt;br /&gt;
Including a hash in a URL can lead to great cacheability, since the TTL can likely be set to an infinite value.  Such URLs are often referred to as ''versioned URLs''.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19239</id>
		<title>hash-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19239"/>
		<updated>2007-08-03T13:57:13Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Moving non-example stuff from hash-examples to hash-brainstorming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Hash examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A microformat for cryptographic hashes, such as MD5 and SHA-1.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Real-World Examples ==&lt;br /&gt;
Currently, MD5 and SHA-1 checksums are either listed on a webpage or email (see Example #1) or stored in a separate file such as (filename.ext.md5 or filename.ext.sha1) (see Example #2). There is no standard or automatic way to use them. Verifying a file after you have the hash is not complex, but it is more than the average user is used to doing (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]). MD5 checksums are 32 digit hexadecimal numbers, while SHA-1 checksums are 40, and SHA-256 checksums are 64.&lt;br /&gt;
&lt;br /&gt;
== Who offers MD5/SHA-1 checksums with software ==&lt;br /&gt;
This is only a small sampling.&lt;br /&gt;
*[http://httpd.apache.org/ Apache HTTP Server] in .md5 file from web.&lt;br /&gt;
*[http://www.cisco.com/ Cisco] MD5 for versions of IOS from Software Center on Cisco website.&lt;br /&gt;
*[http://developer.apple.com/darwin/ Darwin] MD5 on web.&lt;br /&gt;
*[http://fedora.redhat.com/ Fedora Project] SHA-1 on web and SHA1SUM file on ftp.&lt;br /&gt;
*[http://www.freebsd.org/ FreeBSD] on web and in CHECKSUM.MD5 and CHECKSUM.SHA256 files.&lt;br /&gt;
*[http://gcc.gnu.org/ GCC] on ftp as md5.sum file.&lt;br /&gt;
*[http://www.gentoo.org/ Gentoo] as .md5 file on ftp.&lt;br /&gt;
*[http://www.gnome.org/ GNOME] as MD5SUMS-for-gz and MD5SUMS-for-bz2 files on ftp.&lt;br /&gt;
*[http://www.gnupg.org/ GnuPG] SHA-1 on web.&lt;br /&gt;
*[http://www.kde.org/ KDE] on web and on ftp as MD5SUMS file.&lt;br /&gt;
*[http://www.knoppix.org/ Knoppix] in .md5 and .sha1 file.&lt;br /&gt;
*[http://www.mysql.com/ MySQL] MD5 on web.&lt;br /&gt;
*[http://www.openoffice.org/ OpenOffice.org] MD5 on web.&lt;br /&gt;
*[http://www.openssh.com/ OpenSSH] SHA-1 in release announcement.&lt;br /&gt;
*[http://www.openssl.org/ OpenSSL] .md5 and .sha1 files linked to from web.&lt;br /&gt;
*[http://www.perl.org/ Perl] link to .md5 on web.&lt;br /&gt;
*[http://www.postgresql.org/ PostgreSQL] in a .md5 file.&lt;br /&gt;
*[http://www.python.org/ Python] MD5 on web&lt;br /&gt;
*[http://www.ubuntu.com/ Ubuntu] as MD5SUMS on ftp.&lt;br /&gt;
*[http://www.x.org/ X.org] md5sums file on ftp.&lt;br /&gt;
&lt;br /&gt;
=== Example #1: [http://download.openoffice.org/2.0.1/md5sums.html OpenOffice.org MD5 sums] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
English Application Binaries&lt;br /&gt;
&lt;br /&gt;
e0d123e5f316bef78bfdf5a008837577  OOo_2.0.1_LinuxIntel_install.tar.gz&lt;br /&gt;
35d91262b3c3ec8841b54169588c97f7  OOo_2.0.1_LinuxIntel_install_wJRE.tar.gz&lt;br /&gt;
cc273fe9d442850fa18c31c88c823e07  OOo_2.0.1_SolarisSparc_install.tar.gz&lt;br /&gt;
ff6626c69507a6f511cc398998905670  OOo_2.0.1_SolarisSparc_install_wJRE.tar.gz&lt;br /&gt;
ce099d7e208dc921e259b48aadef36c1  OOo_2.0.1_Solarisx86_install.tar.gz&lt;br /&gt;
4fb319211b2e85cace04e8936100f024  OOo_2.0.1_Solarisx86_install_wJRE.tar.gz&lt;br /&gt;
66bd00e43ff8b932c14140472c4b8cc6  OOo_2.0.1_Win32Intel_install.exe&lt;br /&gt;
2d86c4246f3c0eb516628bf324d6b9a3  OOo_2.0.1_Win32Intel_install_wJRE.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example #2: [http://mirrors.csol.org/knoppix/ Knoppix MD5 and SHA-1 sums in separate files ]  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.md5:&lt;br /&gt;
&lt;br /&gt;
1188f67d48c9f11afb8572977ef74c5e *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.sha1:&lt;br /&gt;
&lt;br /&gt;
56857cfc709d3996f057252c16ec4656f5292802 *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: This directory also contains filename.ext.md5.asc and filename.ext.sha1.asc files containing the same checksums and PGP signatures in one file.&lt;br /&gt;
&lt;br /&gt;
== Existing Practices ==&lt;br /&gt;
As described above, I believe almost all solutions are manual (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]), an 8 step process on Windows and 3 steps on Linux. [http://mdhashtool.mozdev.org/lfinfo.html Link Fingerprints] which are used by [http://mdhashtool.mozdev.org/index.html MD Hash Tool], a Firefox extension, is one exception. Here is a Link Fingerprint example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.org/OOo_2.0.1_LinuxIntel_install.tar.gz#!md5!e0d123e5f316bef78bfdf5a008837577&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A Link Fingerprint begins with a traditional URL, then #!md5!, then the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
[http://www.metalinker.org Metalinks] are an XML file format (.metalink) that contain mirrors and checksum information for downloading files. They are used by download programs/managers and mainly open source projects. After a download finishes, the checksum is automatically verified.&lt;br /&gt;
&lt;br /&gt;
Brad Fitzpatrick also [http://brad.livejournal.com/2162507.html suggested referring to &amp;quot;files/patches/changesets&amp;quot; by their unique digest.]&lt;br /&gt;
&lt;br /&gt;
Some HTTP server applications compute a hash over the response body to serve as an effective ETag.  The server must still compute the body but can benefit from reduced network utilization and reduced downstream cache thrashing.  Such applications must be willing to risk a hash collision, albeit scoped to a single URL.&lt;br /&gt;
&lt;br /&gt;
Including a hash in a URL can lead to great cacheability, since the TTL can likely be set to an infinite value.  Such URLs are often referred to as ''versioned URLs''.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-brainstorming&amp;diff=19346</id>
		<title>hash-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-brainstorming&amp;diff=19346"/>
		<updated>2007-08-03T13:57:08Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Moving non-example stuff from hash-examples to hash-brainstorming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Hash brainstorming&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== The Problem ==&lt;br /&gt;
Checksums (MD5 &amp;amp; SHA-1 hashes) are offered for files to prove they haven't been tampered with and to uniquely identify them. They are very useful, but they are not used as much as they could be. The current method involves a manual process of hashing the downloaded file (with programs that are not installed by default on all operating systems) and then comparing the value to the one listed. An easy and automatic way to use them would be preferrable to present methods.&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Ant Bryan&lt;br /&gt;
* Charles Iliya Krempeaux&lt;br /&gt;
* [http://stoneship.org/ Denis Defreyne]&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
A microformat for MD5 and SHA-1 hashes could make them more usable. [http://mdhashtool.mozdev.org/index.html MD Hash Tool], another extension, or download managers could be modified to use them automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use with hAtom ===&lt;br /&gt;
For example, with RSS and Atom feeds, we have something called an &amp;quot;enclosure&amp;quot;.  With an &amp;quot;enclosure&amp;quot; you are being told that this file (that the enclosure points to) is &amp;quot;attached&amp;quot; to this item.  (And that you might want to go and download it.) &lt;br /&gt;
&lt;br /&gt;
Now, having checksum information (like a MD5 checksum) could be very useful for this.  Especially in the context of hAtom -- the Microformat variation of Atom.  And the rel-enclosure Microformat.&lt;br /&gt;
 &lt;br /&gt;
So, if we combined the two -- combined this semantic HTML for &amp;quot;downloading&amp;quot; and rel-enclosure -- then we might get something like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark enclosure&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I've added &amp;quot;enclosure&amp;quot; to the &amp;quot;rel&amp;quot; attribute of the &amp;lt;a&amp;gt; element.  This could be used in other Microformats and semantic HTML too.&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&lt;br /&gt;
The proposal above has a few issues.&lt;br /&gt;
&lt;br /&gt;
* Visibility of metadata: The type of checksum (MD5, SHA1, …) should not be inside an attribute, since it is metadata that should be visible.&lt;br /&gt;
* Checksum type attribute: There would need to be a massive number of class names for all possible checksum types: md2, md4, md5, sha1, sha256, sha384, sha512, tiger, ripemd128, ripemd160, etc.&lt;br /&gt;
&lt;br /&gt;
The second sub-section also mentions use with hAtom, even though rel-enclosure is not tied to hAtom.&lt;br /&gt;
&lt;br /&gt;
== Proposal #2 ==&lt;br /&gt;
&lt;br /&gt;
Based on the two issues mentioned above, I propose a following hash format similar to the one in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This introduces a &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute for the kind of checksum (MD5, SHA1, RIPEMD-160, etc), and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; for the actual checksum.&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19238</id>
		<title>hash-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19238"/>
		<updated>2007-08-03T13:55:04Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Hash examples&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A microformat for cryptographic hashes, such as MD5 and SHA-1.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== The Problem ==&lt;br /&gt;
Checksums (MD5 &amp;amp; SHA-1 hashes) are offered for files to prove they haven't been tampered with and to uniquely identify them. They are very useful, but they are not used as much as they could be. The current method involves a manual process of hashing the downloaded file (with programs that are not installed by default on all operating systems) and then comparing the value to the one listed. An easy and automatic way to use them would be preferrable to present methods.&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Ant Bryan&lt;br /&gt;
* Charles Iliya Krempeaux&lt;br /&gt;
* [http://stoneship.org/ Denis Defreyne]&lt;br /&gt;
&lt;br /&gt;
== Real-World Examples ==&lt;br /&gt;
Currently, MD5 and SHA-1 checksums are either listed on a webpage or email (see Example #1) or stored in a separate file such as (filename.ext.md5 or filename.ext.sha1) (see Example #2). There is no standard or automatic way to use them. Verifying a file after you have the hash is not complex, but it is more than the average user is used to doing (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]). MD5 checksums are 32 digit hexadecimal numbers, while SHA-1 checksums are 40, and SHA-256 checksums are 64.&lt;br /&gt;
&lt;br /&gt;
== Who offers MD5/SHA-1 checksums with software ==&lt;br /&gt;
This is only a small sampling.&lt;br /&gt;
*[http://httpd.apache.org/ Apache HTTP Server] in .md5 file from web.&lt;br /&gt;
*[http://www.cisco.com/ Cisco] MD5 for versions of IOS from Software Center on Cisco website.&lt;br /&gt;
*[http://developer.apple.com/darwin/ Darwin] MD5 on web.&lt;br /&gt;
*[http://fedora.redhat.com/ Fedora Project] SHA-1 on web and SHA1SUM file on ftp.&lt;br /&gt;
*[http://www.freebsd.org/ FreeBSD] on web and in CHECKSUM.MD5 and CHECKSUM.SHA256 files.&lt;br /&gt;
*[http://gcc.gnu.org/ GCC] on ftp as md5.sum file.&lt;br /&gt;
*[http://www.gentoo.org/ Gentoo] as .md5 file on ftp.&lt;br /&gt;
*[http://www.gnome.org/ GNOME] as MD5SUMS-for-gz and MD5SUMS-for-bz2 files on ftp.&lt;br /&gt;
*[http://www.gnupg.org/ GnuPG] SHA-1 on web.&lt;br /&gt;
*[http://www.kde.org/ KDE] on web and on ftp as MD5SUMS file.&lt;br /&gt;
*[http://www.knoppix.org/ Knoppix] in .md5 and .sha1 file.&lt;br /&gt;
*[http://www.mysql.com/ MySQL] MD5 on web.&lt;br /&gt;
*[http://www.openoffice.org/ OpenOffice.org] MD5 on web.&lt;br /&gt;
*[http://www.openssh.com/ OpenSSH] SHA-1 in release announcement.&lt;br /&gt;
*[http://www.openssl.org/ OpenSSL] .md5 and .sha1 files linked to from web.&lt;br /&gt;
*[http://www.perl.org/ Perl] link to .md5 on web.&lt;br /&gt;
*[http://www.postgresql.org/ PostgreSQL] in a .md5 file.&lt;br /&gt;
*[http://www.python.org/ Python] MD5 on web&lt;br /&gt;
*[http://www.ubuntu.com/ Ubuntu] as MD5SUMS on ftp.&lt;br /&gt;
*[http://www.x.org/ X.org] md5sums file on ftp.&lt;br /&gt;
&lt;br /&gt;
=== Example #1: [http://download.openoffice.org/2.0.1/md5sums.html OpenOffice.org MD5 sums] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
English Application Binaries&lt;br /&gt;
&lt;br /&gt;
e0d123e5f316bef78bfdf5a008837577  OOo_2.0.1_LinuxIntel_install.tar.gz&lt;br /&gt;
35d91262b3c3ec8841b54169588c97f7  OOo_2.0.1_LinuxIntel_install_wJRE.tar.gz&lt;br /&gt;
cc273fe9d442850fa18c31c88c823e07  OOo_2.0.1_SolarisSparc_install.tar.gz&lt;br /&gt;
ff6626c69507a6f511cc398998905670  OOo_2.0.1_SolarisSparc_install_wJRE.tar.gz&lt;br /&gt;
ce099d7e208dc921e259b48aadef36c1  OOo_2.0.1_Solarisx86_install.tar.gz&lt;br /&gt;
4fb319211b2e85cace04e8936100f024  OOo_2.0.1_Solarisx86_install_wJRE.tar.gz&lt;br /&gt;
66bd00e43ff8b932c14140472c4b8cc6  OOo_2.0.1_Win32Intel_install.exe&lt;br /&gt;
2d86c4246f3c0eb516628bf324d6b9a3  OOo_2.0.1_Win32Intel_install_wJRE.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example #2: [http://mirrors.csol.org/knoppix/ Knoppix MD5 and SHA-1 sums in separate files ]  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.md5:&lt;br /&gt;
&lt;br /&gt;
1188f67d48c9f11afb8572977ef74c5e *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.sha1:&lt;br /&gt;
&lt;br /&gt;
56857cfc709d3996f057252c16ec4656f5292802 *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: This directory also contains filename.ext.md5.asc and filename.ext.sha1.asc files containing the same checksums and PGP signatures in one file.&lt;br /&gt;
&lt;br /&gt;
== Existing Practices ==&lt;br /&gt;
As described above, I believe almost all solutions are manual (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]), an 8 step process on Windows and 3 steps on Linux. [http://mdhashtool.mozdev.org/lfinfo.html Link Fingerprints] which are used by [http://mdhashtool.mozdev.org/index.html MD Hash Tool], a Firefox extension, is one exception. Here is a Link Fingerprint example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.org/OOo_2.0.1_LinuxIntel_install.tar.gz#!md5!e0d123e5f316bef78bfdf5a008837577&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A Link Fingerprint begins with a traditional URL, then #!md5!, then the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
[http://www.metalinker.org Metalinks] are an XML file format (.metalink) that contain mirrors and checksum information for downloading files. They are used by download programs/managers and mainly open source projects. After a download finishes, the checksum is automatically verified.&lt;br /&gt;
&lt;br /&gt;
Brad Fitzpatrick also [http://brad.livejournal.com/2162507.html suggested referring to &amp;quot;files/patches/changesets&amp;quot; by their unique digest.]&lt;br /&gt;
&lt;br /&gt;
Some HTTP server applications compute a hash over the response body to serve as an effective ETag.  The server must still compute the body but can benefit from reduced network utilization and reduced downstream cache thrashing.  Such applications must be willing to risk a hash collision, albeit scoped to a single URL.&lt;br /&gt;
&lt;br /&gt;
Including a hash in a URL can lead to great cacheability, since the TTL can likely be set to an infinite value.  Such URLs are often referred to as ''versioned URLs''.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
A microformat for MD5 and SHA-1 hashes could make them more usable. [http://mdhashtool.mozdev.org/index.html MD Hash Tool], another extension, or download managers could be modified to use them automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use with hAtom ===&lt;br /&gt;
For example, with RSS and Atom feeds, we have something called an &amp;quot;enclosure&amp;quot;.  With an &amp;quot;enclosure&amp;quot; you are being told that this file (that the enclosure points to) is &amp;quot;attached&amp;quot; to this item.  (And that you might want to go and download it.) &lt;br /&gt;
&lt;br /&gt;
Now, having checksum information (like a MD5 checksum) could be very useful for this.  Especially in the context of hAtom -- the Microformat variation of Atom.  And the rel-enclosure Microformat.&lt;br /&gt;
 &lt;br /&gt;
So, if we combined the two -- combined this semantic HTML for &amp;quot;downloading&amp;quot; and rel-enclosure -- then we might get something like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark enclosure&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I've added &amp;quot;enclosure&amp;quot; to the &amp;quot;rel&amp;quot; attribute of the &amp;lt;a&amp;gt; element.  This could be used in other Microformats and semantic HTML too.&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&lt;br /&gt;
The proposal above has a few issues.&lt;br /&gt;
&lt;br /&gt;
* Visibility of metadata: The type of checksum (MD5, SHA1, …) should not be inside an attribute, since it is metadata that should be visible.&lt;br /&gt;
* Checksum type attribute: There would need to be a massive number of class names for all possible checksum types: md2, md4, md5, sha1, sha256, sha384, sha512, tiger, ripemd128, ripemd160, etc.&lt;br /&gt;
&lt;br /&gt;
The second sub-section also mentions use with hAtom, even though rel-enclosure is not tied to hAtom.&lt;br /&gt;
&lt;br /&gt;
== Proposal #2 ==&lt;br /&gt;
&lt;br /&gt;
Based on the two issues mentioned above, I propose a following hash format similar to the one in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This introduces a &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute for the kind of checksum (MD5, SHA1, RIPEMD-160, etc), and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; for the actual checksum.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[hash-brainstorming]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19286</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19286"/>
		<updated>2007-08-03T13:50:26Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: formatting cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link; a larger &amp;quot;enclosure&amp;quot; microformat may be necessary.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;p&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]). &lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* appcasts are hard to do right, and therefore probably not worth supporting. An appcast HTML page should therefore only contain updates for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts and [http://iusethis.com/ iusethis].&lt;br /&gt;
** I'm not sure how the iusethis integration works, but it looks like AppFresh scrapes HTML pages.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19236</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19236"/>
		<updated>2007-08-03T13:47:42Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Changed checksum to use type/value; changing entry-version to version; removing downloads microformat in proposal; cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link; a larger &amp;quot;enclosure&amp;quot; microformat may be necessary.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions.&lt;br /&gt;
&lt;br /&gt;
* Each hentry has one enclosure, and possibly checksums and digital signatures. &lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;. &amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hash microformat used in this proposal is likely to change.&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page]). &lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …&lt;br /&gt;
&lt;br /&gt;
However, multi-* appcasts are hard to do right, and therefore probably not worth supporting. An appcast HTML page should therefore only contain updates for one application, one OS, one architecture, etc.&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts and [http://iusethis.com/ iusethis].&lt;br /&gt;
** I'm not sure how the iusethis integration works, but it looks like AppFresh scrapes HTML pages.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;br /&gt;
* [[appcast-formats]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19237</id>
		<title>hash-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19237"/>
		<updated>2007-08-03T13:42:04Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding proposal #2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hash Examples =&lt;br /&gt;
A microformat for MD5 and SHA-1 hashes.&lt;br /&gt;
&lt;br /&gt;
== The Problem ==&lt;br /&gt;
Checksums (MD5 &amp;amp; SHA-1 hashes) are offered for files to prove they haven't been tampered with and to uniquely identify them. They are very useful, but they are not used as much as they could be. The current method involves a manual process of hashing the downloaded file (with programs that are not installed by default on all operating systems) and then comparing the value to the one listed. An easy and automatic way to use them would be preferrable to present methods.&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Ant Bryan&lt;br /&gt;
* Charles Iliya Krempeaux&lt;br /&gt;
* [http://stoneship.org/ Denis Defreyne]&lt;br /&gt;
&lt;br /&gt;
== Real-World Examples ==&lt;br /&gt;
Currently, MD5 and SHA-1 checksums are either listed on a webpage or email (see Example #1) or stored in a separate file such as (filename.ext.md5 or filename.ext.sha1) (see Example #2). There is no standard or automatic way to use them. Verifying a file after you have the hash is not complex, but it is more than the average user is used to doing (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]). MD5 checksums are 32 digit hexadecimal numbers, while SHA-1 checksums are 40, and SHA-256 checksums are 64.&lt;br /&gt;
&lt;br /&gt;
== Who offers MD5/SHA-1 checksums with software ==&lt;br /&gt;
This is only a small sampling.&lt;br /&gt;
*[http://httpd.apache.org/ Apache HTTP Server] in .md5 file from web.&lt;br /&gt;
*[http://www.cisco.com/ Cisco] MD5 for versions of IOS from Software Center on Cisco website.&lt;br /&gt;
*[http://developer.apple.com/darwin/ Darwin] MD5 on web.&lt;br /&gt;
*[http://fedora.redhat.com/ Fedora Project] SHA-1 on web and SHA1SUM file on ftp.&lt;br /&gt;
*[http://www.freebsd.org/ FreeBSD] on web and in CHECKSUM.MD5 and CHECKSUM.SHA256 files.&lt;br /&gt;
*[http://gcc.gnu.org/ GCC] on ftp as md5.sum file.&lt;br /&gt;
*[http://www.gentoo.org/ Gentoo] as .md5 file on ftp.&lt;br /&gt;
*[http://www.gnome.org/ GNOME] as MD5SUMS-for-gz and MD5SUMS-for-bz2 files on ftp.&lt;br /&gt;
*[http://www.gnupg.org/ GnuPG] SHA-1 on web.&lt;br /&gt;
*[http://www.kde.org/ KDE] on web and on ftp as MD5SUMS file.&lt;br /&gt;
*[http://www.knoppix.org/ Knoppix] in .md5 and .sha1 file.&lt;br /&gt;
*[http://www.mysql.com/ MySQL] MD5 on web.&lt;br /&gt;
*[http://www.openoffice.org/ OpenOffice.org] MD5 on web.&lt;br /&gt;
*[http://www.openssh.com/ OpenSSH] SHA-1 in release announcement.&lt;br /&gt;
*[http://www.openssl.org/ OpenSSL] .md5 and .sha1 files linked to from web.&lt;br /&gt;
*[http://www.perl.org/ Perl] link to .md5 on web.&lt;br /&gt;
*[http://www.postgresql.org/ PostgreSQL] in a .md5 file.&lt;br /&gt;
*[http://www.python.org/ Python] MD5 on web&lt;br /&gt;
*[http://www.ubuntu.com/ Ubuntu] as MD5SUMS on ftp.&lt;br /&gt;
*[http://www.x.org/ X.org] md5sums file on ftp.&lt;br /&gt;
&lt;br /&gt;
=== Example #1: [http://download.openoffice.org/2.0.1/md5sums.html OpenOffice.org MD5 sums] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
English Application Binaries&lt;br /&gt;
&lt;br /&gt;
e0d123e5f316bef78bfdf5a008837577  OOo_2.0.1_LinuxIntel_install.tar.gz&lt;br /&gt;
35d91262b3c3ec8841b54169588c97f7  OOo_2.0.1_LinuxIntel_install_wJRE.tar.gz&lt;br /&gt;
cc273fe9d442850fa18c31c88c823e07  OOo_2.0.1_SolarisSparc_install.tar.gz&lt;br /&gt;
ff6626c69507a6f511cc398998905670  OOo_2.0.1_SolarisSparc_install_wJRE.tar.gz&lt;br /&gt;
ce099d7e208dc921e259b48aadef36c1  OOo_2.0.1_Solarisx86_install.tar.gz&lt;br /&gt;
4fb319211b2e85cace04e8936100f024  OOo_2.0.1_Solarisx86_install_wJRE.tar.gz&lt;br /&gt;
66bd00e43ff8b932c14140472c4b8cc6  OOo_2.0.1_Win32Intel_install.exe&lt;br /&gt;
2d86c4246f3c0eb516628bf324d6b9a3  OOo_2.0.1_Win32Intel_install_wJRE.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example #2: [http://mirrors.csol.org/knoppix/ Knoppix MD5 and SHA-1 sums in separate files ]  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.md5:&lt;br /&gt;
&lt;br /&gt;
1188f67d48c9f11afb8572977ef74c5e *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.sha1:&lt;br /&gt;
&lt;br /&gt;
56857cfc709d3996f057252c16ec4656f5292802 *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: This directory also contains filename.ext.md5.asc and filename.ext.sha1.asc files containing the same checksums and PGP signatures in one file.&lt;br /&gt;
&lt;br /&gt;
== Existing Practices ==&lt;br /&gt;
As described above, I believe almost all solutions are manual (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]), an 8 step process on Windows and 3 steps on Linux. [http://mdhashtool.mozdev.org/lfinfo.html Link Fingerprints] which are used by [http://mdhashtool.mozdev.org/index.html MD Hash Tool], a Firefox extension, is one exception. Here is a Link Fingerprint example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.org/OOo_2.0.1_LinuxIntel_install.tar.gz#!md5!e0d123e5f316bef78bfdf5a008837577&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A Link Fingerprint begins with a traditional URL, then #!md5!, then the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
[http://www.metalinker.org Metalinks] are an XML file format (.metalink) that contain mirrors and checksum information for downloading files. They are used by download programs/managers and mainly open source projects. After a download finishes, the checksum is automatically verified.&lt;br /&gt;
&lt;br /&gt;
Brad Fitzpatrick also [http://brad.livejournal.com/2162507.html suggested referring to &amp;quot;files/patches/changesets&amp;quot; by their unique digest.]&lt;br /&gt;
&lt;br /&gt;
Some HTTP server applications compute a hash over the response body to serve as an effective ETag.  The server must still compute the body but can benefit from reduced network utilization and reduced downstream cache thrashing.  Such applications must be willing to risk a hash collision, albeit scoped to a single URL.&lt;br /&gt;
&lt;br /&gt;
Including a hash in a URL can lead to great cacheability, since the TTL can likely be set to an infinite value.  Such URLs are often referred to as ''versioned URLs''.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
A microformat for MD5 and SHA-1 hashes could make them more usable. [http://mdhashtool.mozdev.org/index.html MD Hash Tool], another extension, or download managers could be modified to use them automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use with hAtom ===&lt;br /&gt;
For example, with RSS and Atom feeds, we have something called an &amp;quot;enclosure&amp;quot;.  With an &amp;quot;enclosure&amp;quot; you are being told that this file (that the enclosure points to) is &amp;quot;attached&amp;quot; to this item.  (And that you might want to go and download it.) &lt;br /&gt;
&lt;br /&gt;
Now, having checksum information (like a MD5 checksum) could be very useful for this.  Especially in the context of hAtom -- the Microformat variation of Atom.  And the rel-enclosure Microformat.&lt;br /&gt;
 &lt;br /&gt;
So, if we combined the two -- combined this semantic HTML for &amp;quot;downloading&amp;quot; and rel-enclosure -- then we might get something like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark enclosure&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I've added &amp;quot;enclosure&amp;quot; to the &amp;quot;rel&amp;quot; attribute of the &amp;lt;a&amp;gt; element.  This could be used in other Microformats and semantic HTML too.&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&lt;br /&gt;
The proposal above has a few issues.&lt;br /&gt;
&lt;br /&gt;
* Visibility of metadata: The type of checksum (MD5, SHA1, …) should not be inside an attribute, since it is metadata that should be visible.&lt;br /&gt;
* Checksum type attribute: There would need to be a massive number of class names for all possible checksum types: md2, md4, md5, sha1, sha256, sha384, sha512, tiger, ripemd128, ripemd160, etc.&lt;br /&gt;
&lt;br /&gt;
The second sub-section also mentions use with hAtom, even though rel-enclosure is not tied to hAtom.&lt;br /&gt;
&lt;br /&gt;
== Proposal #2 ==&lt;br /&gt;
&lt;br /&gt;
Based on the two issues mentioned above, I propose a following hash format similar to the one in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;checksum&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;MD5&amp;lt;/span&amp;gt; checksum of this download is &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This introduces a &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute for the kind of checksum (MD5, SHA1, RIPEMD-160, etc), and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; for the actual checksum.&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19234</id>
		<title>hash-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hash-examples&amp;diff=19234"/>
		<updated>2007-08-03T13:11:56Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding Issues subsection to Proposal section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hash Examples =&lt;br /&gt;
A microformat for MD5 and SHA-1 hashes.&lt;br /&gt;
&lt;br /&gt;
== The Problem ==&lt;br /&gt;
Checksums (MD5 &amp;amp; SHA-1 hashes) are offered for files to prove they haven't been tampered with and to uniquely identify them. They are very useful, but they are not used as much as they could be. The current method involves a manual process of hashing the downloaded file (with programs that are not installed by default on all operating systems) and then comparing the value to the one listed. An easy and automatic way to use them would be preferrable to present methods.&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Ant Bryan&lt;br /&gt;
* Charles Iliya Krempeaux&lt;br /&gt;
== Real-World Examples ==&lt;br /&gt;
Currently, MD5 and SHA-1 checksums are either listed on a webpage or email (see Example #1) or stored in a separate file such as (filename.ext.md5 or filename.ext.sha1) (see Example #2). There is no standard or automatic way to use them. Verifying a file after you have the hash is not complex, but it is more than the average user is used to doing (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]). MD5 checksums are 32 digit hexadecimal numbers, while SHA-1 checksums are 40, and SHA-256 checksums are 64.&lt;br /&gt;
&lt;br /&gt;
== Who offers MD5/SHA-1 checksums with software ==&lt;br /&gt;
This is only a small sampling.&lt;br /&gt;
*[http://httpd.apache.org/ Apache HTTP Server] in .md5 file from web.&lt;br /&gt;
*[http://www.cisco.com/ Cisco] MD5 for versions of IOS from Software Center on Cisco website.&lt;br /&gt;
*[http://developer.apple.com/darwin/ Darwin] MD5 on web.&lt;br /&gt;
*[http://fedora.redhat.com/ Fedora Project] SHA-1 on web and SHA1SUM file on ftp.&lt;br /&gt;
*[http://www.freebsd.org/ FreeBSD] on web and in CHECKSUM.MD5 and CHECKSUM.SHA256 files.&lt;br /&gt;
*[http://gcc.gnu.org/ GCC] on ftp as md5.sum file.&lt;br /&gt;
*[http://www.gentoo.org/ Gentoo] as .md5 file on ftp.&lt;br /&gt;
*[http://www.gnome.org/ GNOME] as MD5SUMS-for-gz and MD5SUMS-for-bz2 files on ftp.&lt;br /&gt;
*[http://www.gnupg.org/ GnuPG] SHA-1 on web.&lt;br /&gt;
*[http://www.kde.org/ KDE] on web and on ftp as MD5SUMS file.&lt;br /&gt;
*[http://www.knoppix.org/ Knoppix] in .md5 and .sha1 file.&lt;br /&gt;
*[http://www.mysql.com/ MySQL] MD5 on web.&lt;br /&gt;
*[http://www.openoffice.org/ OpenOffice.org] MD5 on web.&lt;br /&gt;
*[http://www.openssh.com/ OpenSSH] SHA-1 in release announcement.&lt;br /&gt;
*[http://www.openssl.org/ OpenSSL] .md5 and .sha1 files linked to from web.&lt;br /&gt;
*[http://www.perl.org/ Perl] link to .md5 on web.&lt;br /&gt;
*[http://www.postgresql.org/ PostgreSQL] in a .md5 file.&lt;br /&gt;
*[http://www.python.org/ Python] MD5 on web&lt;br /&gt;
*[http://www.ubuntu.com/ Ubuntu] as MD5SUMS on ftp.&lt;br /&gt;
*[http://www.x.org/ X.org] md5sums file on ftp.&lt;br /&gt;
&lt;br /&gt;
=== Example #1: [http://download.openoffice.org/2.0.1/md5sums.html OpenOffice.org MD5 sums] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
English Application Binaries&lt;br /&gt;
&lt;br /&gt;
e0d123e5f316bef78bfdf5a008837577  OOo_2.0.1_LinuxIntel_install.tar.gz&lt;br /&gt;
35d91262b3c3ec8841b54169588c97f7  OOo_2.0.1_LinuxIntel_install_wJRE.tar.gz&lt;br /&gt;
cc273fe9d442850fa18c31c88c823e07  OOo_2.0.1_SolarisSparc_install.tar.gz&lt;br /&gt;
ff6626c69507a6f511cc398998905670  OOo_2.0.1_SolarisSparc_install_wJRE.tar.gz&lt;br /&gt;
ce099d7e208dc921e259b48aadef36c1  OOo_2.0.1_Solarisx86_install.tar.gz&lt;br /&gt;
4fb319211b2e85cace04e8936100f024  OOo_2.0.1_Solarisx86_install_wJRE.tar.gz&lt;br /&gt;
66bd00e43ff8b932c14140472c4b8cc6  OOo_2.0.1_Win32Intel_install.exe&lt;br /&gt;
2d86c4246f3c0eb516628bf324d6b9a3  OOo_2.0.1_Win32Intel_install_wJRE.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example #2: [http://mirrors.csol.org/knoppix/ Knoppix MD5 and SHA-1 sums in separate files ]  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.md5:&lt;br /&gt;
&lt;br /&gt;
1188f67d48c9f11afb8572977ef74c5e *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
KNOPPIX_V4.0.2CD-2005-09-23-EN.iso.sha1:&lt;br /&gt;
&lt;br /&gt;
56857cfc709d3996f057252c16ec4656f5292802 *KNOPPIX_V4.0.2CD-2005-09-23-EN.iso&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: This directory also contains filename.ext.md5.asc and filename.ext.sha1.asc files containing the same checksums and PGP signatures in one file.&lt;br /&gt;
&lt;br /&gt;
== Existing Practices ==&lt;br /&gt;
As described above, I believe almost all solutions are manual (see [http://www.openoffice.org/dev_docs/using_md5sums.html OpenOffice.org: Using MD5 sums]), an 8 step process on Windows and 3 steps on Linux. [http://mdhashtool.mozdev.org/lfinfo.html Link Fingerprints] which are used by [http://mdhashtool.mozdev.org/index.html MD Hash Tool], a Firefox extension, is one exception. Here is a Link Fingerprint example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.org/OOo_2.0.1_LinuxIntel_install.tar.gz#!md5!e0d123e5f316bef78bfdf5a008837577&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A Link Fingerprint begins with a traditional URL, then #!md5!, then the MD5 hash.&lt;br /&gt;
&lt;br /&gt;
[http://www.metalinker.org Metalinks] are an XML file format (.metalink) that contain mirrors and checksum information for downloading files. They are used by download programs/managers and mainly open source projects. After a download finishes, the checksum is automatically verified.&lt;br /&gt;
&lt;br /&gt;
Brad Fitzpatrick also [http://brad.livejournal.com/2162507.html suggested referring to &amp;quot;files/patches/changesets&amp;quot; by their unique digest.]&lt;br /&gt;
&lt;br /&gt;
Some HTTP server applications compute a hash over the response body to serve as an effective ETag.  The server must still compute the body but can benefit from reduced network utilization and reduced downstream cache thrashing.  Such applications must be willing to risk a hash collision, albeit scoped to a single URL.&lt;br /&gt;
&lt;br /&gt;
Including a hash in a URL can lead to great cacheability, since the TTL can likely be set to an infinite value.  Such URLs are often referred to as ''versioned URLs''.&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
A microformat for MD5 and SHA-1 hashes could make them more usable. [http://mdhashtool.mozdev.org/index.html MD Hash Tool], another extension, or download managers could be modified to use them automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use with hAtom ===&lt;br /&gt;
For example, with RSS and Atom feeds, we have something called an &amp;quot;enclosure&amp;quot;.  With an &amp;quot;enclosure&amp;quot; you are being told that this file (that the enclosure points to) is &amp;quot;attached&amp;quot; to this item.  (And that you might want to go and download it.) &lt;br /&gt;
&lt;br /&gt;
Now, having checksum information (like a MD5 checksum) could be very useful for this.  Especially in the context of hAtom -- the Microformat variation of Atom.  And the rel-enclosure Microformat.&lt;br /&gt;
 &lt;br /&gt;
So, if we combined the two -- combined this semantic HTML for &amp;quot;downloading&amp;quot; and rel-enclosure -- then we might get something like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a rel=&amp;quot;bookmark enclosure&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;Download OpenOffice.org&lt;br /&gt;
     &amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;e0d123e5f316bef78bfdf5a008837577&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I've added &amp;quot;enclosure&amp;quot; to the &amp;quot;rel&amp;quot; attribute of the &amp;lt;a&amp;gt; element.  This could be used in other Microformats and semantic HTML too.&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&lt;br /&gt;
The proposal above has a few issues.&lt;br /&gt;
&lt;br /&gt;
* Visibility of metadata: The type of checksum (MD5, SHA1, …) should not be inside an attribute, since it is metadata that should be visible.&lt;br /&gt;
* Checksum type attribute: There would need to be a massive number of class names for all possible checksum types: md2, md4, md5, sha1, sha256, sha384, sha512, tiger, ripemd128, ripemd160, etc.&lt;br /&gt;
&lt;br /&gt;
The second sub-section also mentions use with hAtom, even though rel-enclosure is not tied to hAtom.&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19235</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19235"/>
		<updated>2007-08-03T10:56:07Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link; a larger &amp;quot;enclosure&amp;quot; microformat may be necessary (also see [[hash-examples]]).&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions. It has a few issues, mostly due to the fact that it is not &amp;quot;general&amp;quot; enough.&lt;br /&gt;
&lt;br /&gt;
* Each hentry can have one or more &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt;s. Having more than one download in an appcast microformat used by Sparkle is not useful, as Sparkle would only use the first enclosure it sees. It may be useful in multi-* appcasts (see below).&lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;entry-version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;entry-version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				MD5 sum: &amp;amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;0f182a2c88373e6d77c69fa15c910f08&amp;amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:DenisDefreyne|DenisDefreyne]] 03:40, 1 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc. The proposal above does not take this in account. (The [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page], for example, has many apps, many architectures and many OSes.) A way to distinguish between applications, architectures, OSes, ... would therefore be necessary.&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, … (Cannot use MIME types for this, as not all different download types have their own MIME type)&lt;br /&gt;
&lt;br /&gt;
On second thought, all this is download-specific, so this is probably better suited for the [[downloads-brainstorming]] page.&lt;br /&gt;
&lt;br /&gt;
[[User:DenisDefreyne|DenisDefreyne]] 03:40, 1 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
After having discussed this quite a bit, I think multi-* appcasts are very hard to do right, and therefore simply not worth supporting. An appcast HTML page should only contain updates for one application, one OS, one architecture, etc. [[User:DenisDefreyne|DenisDefreyne]] 03:56, 3 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts and [http://iusethis.com/ iusethis].&lt;br /&gt;
** I'm not sure how the iusethis integration works, but it looks like AppFresh scrapes HTML pages.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=Main_Page&amp;diff=29530</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=Main_Page&amp;diff=29530"/>
		<updated>2007-08-03T09:44:00Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding appcast links to Exploratory Discussions section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right;margin-left:1em&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to the microformats wiki!&lt;br /&gt;
&lt;br /&gt;
Please start with the [[introduction]] page and read [[how-to-play]] before making any edits.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
* Learn what it means to be [http://microformats.org/wiki/posh &amp;lt;abbr title=&amp;quot;Plain Old Semantic HTML&amp;quot;&amp;gt;POSH&amp;lt;/abbr&amp;gt;] {{NewMarker}}.&lt;br /&gt;
* See the [http://microformats.org/about/ about page], [http://microformats.org/ latest news], [[press]], [[presentations]], [[books]], [[podcasts]], &amp;amp; [[screencasts]].&lt;br /&gt;
* Have questions? Read the [[faq|frequently asked questions]] and see the [[glossary]] for new terms. &lt;br /&gt;
* Want to learn more in person? Check out microformats [[events]].&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
Microformats are small bits of HTML that represent things like people, events, tags etc. in webpages.  &lt;br /&gt;
&lt;br /&gt;
Microformats enable the publishing of higher fidelity information on the Web, providing the fastest &amp;amp; simplest way to support feeds and APIs for your website.  See more explanations of [[what-are-microformats|what are microformats]], and [[what-can-you-do-with-microformats|what you can do with them]]. &lt;br /&gt;
&lt;br /&gt;
== How to contribute ==&lt;br /&gt;
Do you want to help take microformats to the next level?  You can:&lt;br /&gt;
* [[get-started|Get started]] by adding microformats to your website, services, and products.&lt;br /&gt;
* [[advocacy|Advocate]] the use of microformats on other web sites, especially those you use.&lt;br /&gt;
* Write a [[testimonial]].&lt;br /&gt;
* Do something on the [[to-do|to do list]].&lt;br /&gt;
* Join the [[irc|IRC Channel]] and [http://microformats.org/discuss mailing lists] to learn and help answer questions about microformats.&lt;br /&gt;
* [[Main_Page#microformats_wiki_translations|Translate this microformats wiki into other languages]] to make microformats more accessible to readers of languages around the world.&lt;br /&gt;
* Find [[orphans|orphaned]] pages, and add links to them.&lt;br /&gt;
* Before proposing any new microformats, make sure your website is [[POSH]], [[get-started|uses existing microformats]], and then read the [[process]].&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
[[microformats|Microformats]] open standards specifications (see also: [[implementations]], [[examples-in-the-wild]])&lt;br /&gt;
* [[hcalendar|hCalendar]] - [http://microformats.org/code/hcalendar/creator hcalendar creator]&lt;br /&gt;
* [[hcard|hCard]] - [http://microformats.org/code/hcard/creator hcard creator]&lt;br /&gt;
* [[rel-license]]&lt;br /&gt;
* [[rel-nofollow]]&lt;br /&gt;
* [[rel-tag]]&lt;br /&gt;
* [[vote-links|VoteLinks]]&lt;br /&gt;
* [http://gmpg.org/xfn/ XFN] (see also: [[xfn-implementations]])&lt;br /&gt;
* [http://gmpg.org/xmdp/ XMDP]&lt;br /&gt;
* [[xoxo|XOXO]]&lt;br /&gt;
&lt;br /&gt;
== Drafts ==&lt;br /&gt;
* [[adr|adr]]&lt;br /&gt;
* [[geo|geo]]&lt;br /&gt;
* [[hatom|hAtom]]&lt;br /&gt;
* [[hresume|hResume]]&lt;br /&gt;
* [[hreview|hReview]] - [http://microformats.org/code/hreview/creator hreview creator]&lt;br /&gt;
* [[rel-directory]]&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
* [[rel-home]]&lt;br /&gt;
* [[rel-payment]]&lt;br /&gt;
* [[robots-exclusion|Robots Exclusion]]&lt;br /&gt;
* [[xfolk|xFolk]]&lt;br /&gt;
&lt;br /&gt;
== Design Patterns ==&lt;br /&gt;
&lt;br /&gt;
{{design_patterns}} &amp;lt;!-- this can be edited in /wiki/Template:design_patterns --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exploratory Discussions ==&lt;br /&gt;
Per the microformats [[process]]: research and analysis of real-world [[examples]], existing formats, and brainstorming to motivate the microformat. Please check [[rejected-formats]] before making additions.&lt;br /&gt;
&lt;br /&gt;
* alternates [[alternates-brainstorming|alternates brainstorming]], [[alternates-examples|alternates examples]]&lt;br /&gt;
*[[attention]]&lt;br /&gt;
* appcast [[appcast-examples|appcast examples]], [[appcast-formats|appcast formats]], [[appcast-brainstorming|appcast brainstorming]]&lt;br /&gt;
* audio-info ([[audio-info-examples|examples]], [[audio-info-formats|formats]], [[audio-info-brainstorming|brainstorming]], [[audio-info-proposal|proposal]], [[audio-info-issues|issues]]) - Marking up information and metadata related to audio (speech, music, and sound in general).&lt;br /&gt;
* blog description [[blog-description-examples|blog description examples]]&lt;br /&gt;
* blog info [[blog-info-examples|blog info examples]]&lt;br /&gt;
* blog post [[blog-post-examples|examples]], [[blog-post-formats|blog post formats]], and [[blog-post-brainstorming|blog post brainstorming]] (yielded the [[hatom|hAtom]] draft)&lt;br /&gt;
* book [[book-examples|book examples]], [[book-formats|book formats]], and [[book-brainstorming|book brainstorming]]&lt;br /&gt;
* chat [[chat-examples|chat examples]], [[chat-formats|chat formats]], and [[chat-brainstorming|chat brainstorming]]&lt;br /&gt;
* citation [[citation|citation effort]], [[citation-examples|citation examples]], [[citation-formats|citation formats]], [[citation-brainstorming|citation brainstorming]], and [[citation-faq|citation FAQ]]&lt;br /&gt;
* code [[code-examples| code examples]], [[code-brainstorming|code brainstorming]] {{NewMarker}}&lt;br /&gt;
* comment [[comment-problem|comment problem]], [[comment-examples|comment examples]], and [[comments-formats|comment formats]] (Some stuff needs to be extracted from [[comments-formats]])&lt;br /&gt;
* [[collection-description|collection description]] - for describing collections in libraries {{NewMarker}}&lt;br /&gt;
* [[course-catalog]]; [[course-catalog-examples]] {{NewMarker}}&lt;br /&gt;
* [[currency]]; [[currency-examples]]; [[currency-brainstorming]]; [[currency-proposal]]; [[currency-issues]]&lt;br /&gt;
* [[depend-examples]]: examples of dependency graphs, especially as they relate to software {{NewMarker}}&lt;br /&gt;
* [[digital-signatures]]: incorporation of digital signatures in Microformatted data; ([[digitalsignature-examples|digital-signature examples]], [[digitalsignature-brainstorming|digital-signatures brainstorming]]) {{NewMarker}}&lt;br /&gt;
* directions [[directions-examples|directions examples]] {{NewMarker}}&lt;br /&gt;
* directory inclusion [[directory-inclusion-examples|directory inclusion examples]], [[directory-inclusion-formats|directory inclusion formats]]. (see also [[rel-directory]])&lt;br /&gt;
* distributed conversation [[distributed-conversation|distributed conversation overview]], [[distributed-conversation-brainstorming|distributed conversation brainstorming]], [[distributed-conversation-examples|distributed conversation examples]], and [[distributed-conversation-formats|distributed conversation formats]]&lt;br /&gt;
* error messages [[error-message-examples|error message examples]], [[error-message-brainstorming|error message brainstorming]]&lt;br /&gt;
* forms [[forms-examples|forms examples]]&lt;br /&gt;
* file-format ([[file-format-examples|examples]], formats, brainstorming) - for the mark-up of file format information (size, type, codecs, bitrate, etc.) {{NewMarker}}&lt;br /&gt;
* genealogy [[genealogy-formats|genealogy exploration]]&lt;br /&gt;
* geo extensions&lt;br /&gt;
** [[geo-extension-strawman]] - extend geo for moons, other planets, etc.&lt;br /&gt;
** [[geo-elevation-examples]] - extend geo for representing altitude {{NewMarker}}&lt;br /&gt;
** [[geo-waypoint-examples]] - extend geo for representing routes and boundaries, using waypoints {{NewMarker}}&lt;br /&gt;
* group [[group-brainstorming|group brainstorming]] and [[group-examples|group examples]]&lt;br /&gt;
* grouping ([[grouping-examples|examples]], [[grouping-formats|formats]], [[grouping-brainstorming|brainstorming]], [[grouping-proposal|proposal]]) - Metadata markup of items that should be grouped together. {{NewMarker}}&lt;br /&gt;
* items [[items-brainstorming|items brainstorming]] and [[items-examples|items examples]]&lt;br /&gt;
* hash [[hash-examples|hash examples]]&lt;br /&gt;
* job listing [[job-listing-examples|job listing examples]] and [[job-listing-brainstorming|job listing brainstorming]]&lt;br /&gt;
* last modified [[last-modified-examples|last modified examples]], [[last-modified-formats|last modified formats]], and [[last-modified-brainstorming|last modified brainstorming]]&lt;br /&gt;
* hListing [[hlisting-proposal|hListing proposal]], and [[hlisting-feedback|hListing feedback]] &lt;br /&gt;
** Also, listing [[listing-examples|examples]], [[listing-formats|formats]], and [[listing-brainstorming|brainstorming]]&lt;br /&gt;
* [[product|hProduct]] - [[product-brainstorming|hProduct brainstorming]] | [[product-examples|hProduct examples]]&lt;br /&gt;
* [[htodo|hToDo]]&lt;br /&gt;
* location [[location-formats|location formats]]. (see also [[adr]] and [[geo]])&lt;br /&gt;
* measures and measurement units [[measure]]&lt;br /&gt;
* [[media-info]] ([[media-info-examples|media-info examples]], [[media-info-formats|media-info formats]], [[media-info-brainstorming|media-info brainstorming]]) {{UpdateMarker}}&lt;br /&gt;
* meeting minutes [[meeting-minutes-examples|meeting minutes examples]], [[meeting-minutes-formats|meeting minutes formats]], and [[meeting-minutes-brainstorming|meeting minutes brainstorming]]&lt;br /&gt;
* metalink [[metalink-examples|metalink examples]] {{NewMarker}}&lt;br /&gt;
* microsummary [[microsummary-brainstorming|microsummary brainstorming]]&lt;br /&gt;
* [[mfo-examples|MFO examples]]&lt;br /&gt;
* music [[music-examples|music examples]] {{UpdateMarker}}&lt;br /&gt;
* news [[news-examples|news examples]] {{NewMarker}}&lt;br /&gt;
* [[operating-hours]]: [[operating-hours-examples]] ..of stores, restaurants, etc. {{UpdateMarker}}&lt;br /&gt;
* [[payment]]&lt;br /&gt;
* photo note [[photo-note-examples|photo note examples]]&lt;br /&gt;
*[[question-answer]], [[question-answer-brainstorming]]; [[question-answer-examples]] {{NewMarker}}&lt;br /&gt;
* receipt ([[receipt-examples|examples]], [[receipt-formats|formats]], [[receipt-brainstorming|brainstorming]], [[receipt-proposal|proposal]]) - Marking up information and metadata related to purchase receipts. {{NewMarker}}&lt;br /&gt;
* recipe [[recipe-examples|recipe examples]], [[recipe-brainstorming]] {{UpdateMarker}}&lt;br /&gt;
* rel-product [[rel-product-brainstorming|rel-product brainstorming]]&lt;br /&gt;
* requirements testing [[requirements-testing|requirements testing overview]], and [[requirements-testing-examples|requirements testing examples]]&lt;br /&gt;
* [[rest-examples|REST examples]]&lt;br /&gt;
* resume [[resume-brainstorming|resume brainstorming]], and [[resume-formats|resume formats]]&lt;br /&gt;
* review [[review-examples|review examples]], and [[review-formats|review formats]] (yielded the [[hreview|hReview]] draft)&lt;br /&gt;
* search results [[search-results-example|search results example]]&lt;br /&gt;
* show [[show-brainstorming|show brainstorming]]&lt;br /&gt;
* showroll [[showroll-brainstorming|brainstorming]]&lt;br /&gt;
* [[species]] - for the marking up of the scientific names of living things: [[species-examples]]; [[species-brainstorming]] {{UpdateMarker}}&lt;br /&gt;
* table [[table-examples|examples]]&lt;br /&gt;
* tagspeak [[tagspeak-examples|tagspeak examples]]&lt;br /&gt;
* tagcloud [[tagcloud-examples|tagcloud examples]], and [[tagcloud-brainstorming|tagcloud  brainstorming]].&lt;br /&gt;
* transit table [[transit-table-examples|transit table examples]]&lt;br /&gt;
* [[uid]]&lt;br /&gt;
* widget [[widget-examples|widget examples]], and [[widget-brainstorming|widget brainstorming]]&lt;br /&gt;
* [[wiki-formats|wiki formats]]&lt;br /&gt;
* work of art [[work-of-art|work of art overview]], [[workofart-examples|work of art examples]], [[workofart-formats|work of art formats]], and [[workofart-brainstorming|work of art brainstorming]] &lt;br /&gt;
*[[xmdp-brainstorming|XMDP brainstorming]] (see also [[xmdp-faq]])&lt;br /&gt;
*[[realestate-propertydetail|realestate-propertydetail brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
* [[examples-in-the-wild]]&lt;br /&gt;
* [[implementations]]&lt;br /&gt;
* [[zen-garden]]&lt;br /&gt;
&lt;br /&gt;
== tools, test cases, additional research ==&lt;br /&gt;
&lt;br /&gt;
The first place to look for examples, code, and test cases is in the pages for each individual microformat. There are only a few cross-cutting tools and services that need to process more than one microformat. This section is intended for editors, parsers, validators, test cases, and other information relevant across multiple microformats.&lt;br /&gt;
&lt;br /&gt;
*[[accessibility]]&lt;br /&gt;
*[[faqs-for-rdf]]&lt;br /&gt;
*[[icalendar-implementations]]&lt;br /&gt;
*[[internationalization]]&lt;br /&gt;
*[[parsing-microformats]]&lt;br /&gt;
*[[profile-uri-examples-in-wild|Profile URI examples, in the wild]] (Profile URIs for &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; elements)&lt;br /&gt;
*[[selected-test-cases-from-the-web]]&lt;br /&gt;
*[http://hg.microformats.org/ Source code repository] -- [[mercurial-quick-start|how to download code from the repository]]&lt;br /&gt;
*[[user-interface]]&lt;br /&gt;
*[[user-profile-examples-in-wild|User profile examples, in the wild]] (User profiles, for social websites)&lt;br /&gt;
*[[vcard-implementations]], [[vcard-errata]], [[vcard-suggestions]]&lt;br /&gt;
*[[why-are-content-standards-hard]]&lt;br /&gt;
&lt;br /&gt;
== resources ==&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[cheatsheets]] are handy if you need a quick reminder about a particular microformat.&lt;br /&gt;
* [[spread-microformats]]&lt;br /&gt;
* [[buttons]]&lt;br /&gt;
* [[icons]]&lt;br /&gt;
* [[demo]] - a page with links for quickly demonstrating microformats working in practice.&lt;br /&gt;
* [[semacode|Semacode]]&lt;br /&gt;
* [[jobs]]&lt;br /&gt;
* [[user-interface]]&lt;br /&gt;
* [[shortcuts]] to wiki pages with long names&lt;br /&gt;
* [[marked-for-deletion]]&lt;br /&gt;
* [[spellcheck|spell-check dictionary]]&lt;br /&gt;
&lt;br /&gt;
== shared work areas ==&lt;br /&gt;
* [[to-do]]&lt;br /&gt;
* [[microformats-issues]] - issues related to more than one microformat.&lt;br /&gt;
* [[external-issues]]&lt;br /&gt;
&lt;br /&gt;
== microformats wiki translations ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;microformats_wiki_translations_in_other_languages&amp;quot;&amp;gt;You may read and edit microformats articles in many other languages:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* languages with over 100 articles&lt;br /&gt;
** [[Main_Page-fr|Français (French)]] {{UpdateMarker-fr}}&lt;br /&gt;
* languages with over 10 articles&lt;br /&gt;
** [[Main_Page-pt-br| Português (Brazilian Portuguese)]]&lt;br /&gt;
** [[Main_Page-ja|日本語 (Japanese)]]&lt;br /&gt;
* languages with over 2 articles&lt;br /&gt;
** [[Main_Page-es|Español (Spanish)]]&lt;br /&gt;
** [[Main_Page-de|Deutsch (German)]]&lt;br /&gt;
** [[Main_Page-ro|Romanian]]&lt;br /&gt;
* elsewhere&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Microformat Wikipedia's article on microformats] has been translated into a number of languages.&lt;br /&gt;
&lt;br /&gt;
See also [[other-languages]], and [[how-to-start-new-translation|how-to-start-a-new-translation]].&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19224</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19224"/>
		<updated>2007-08-03T09:39:07Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: fixing markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link; a larger &amp;quot;enclosure&amp;quot; microformat may be necessary (also see [[hash-examples]]).&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions. It has a few issues, mostly due to the fact that it is not &amp;quot;general&amp;quot; enough.&lt;br /&gt;
&lt;br /&gt;
* Each hentry can have one or more &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt;s. Having more than one download in an appcast microformat used by Sparkle is not useful, as Sparkle would only use the first enclosure it sees. It may be useful in multi-* appcasts (see below).&lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;entry-version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;entry-version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				MD5 sum: &amp;amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;0f182a2c88373e6d77c69fa15c910f08&amp;amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:DenisDefreyne|DenisDefreyne]] 03:40, 1 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc. The proposal above does not take this in account. (The [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page], for example, has many apps, many architectures and many OSes.) A way to distinguish between applications, architectures, OSes, ... would therefore be necessary.&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, … (Cannot use MIME types for this, as not all different download types have their own MIME type)&lt;br /&gt;
&lt;br /&gt;
On second thought, all this is download-specific, so this is probably better suited for the [[downloads-brainstorming]] page.&lt;br /&gt;
&lt;br /&gt;
[[User:DenisDefreyne|DenisDefreyne]] 03:40, 1 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts and [http://iusethis.com/ iusethis].&lt;br /&gt;
** I'm not sure how the iusethis integration works, but it looks like AppFresh scrapes HTML pages.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19222</id>
		<title>appcast-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=appcast-brainstorming&amp;diff=19222"/>
		<updated>2007-08-03T09:38:40Z</updated>

		<summary type="html">&lt;p&gt;DenisDefreyne: Adding &amp;quot;Software using appcasts&amp;quot; section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;;h1&amp;gt;Appcast Brainstorming &amp;lt;/h1&amp;gt;&lt;br /&gt;
The purpose of this page is to capture software updates practices in the wild, as one effort to codify practices currently used in the automatic update system called Sparkle.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:DenisDefreyne|Denis Defreyne]]&lt;br /&gt;
* [http://factoryjoe.com/ Chris Messina]&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Sites like [http://iusethis.com iusethis.com], [http://versiontracker.com versiontracker.com], [http://macupdate.com macupdate.com] and [http://download.com download.com] among others should be investigated and documented for object names and attributes.&lt;br /&gt;
&lt;br /&gt;
Among common data in a software update changelog are changes or fixes, completed bugs, new features or modified behavior, and known issues. A version number is also typically supplied, but takes on many forms and is not always numeric.&lt;br /&gt;
&lt;br /&gt;
Lastly, this work should be seen as compatible with hAtom, possibly as a prelude to a format that could be embedded as the payload of an hfeed object.&lt;br /&gt;
&lt;br /&gt;
Work should be carried out on the [[appcast-examples | Appcast Examples]] page.&lt;br /&gt;
&lt;br /&gt;
== Related Work ==&lt;br /&gt;
&lt;br /&gt;
* [[downloads-brainstorming]] seems to have a similar goal. Could these two pages be merged? [[User:DenisDefreyne|DenisDefreyne]] 02:56, 28 Jul 2007 (PDT)&lt;br /&gt;
** I would agree that they're related; the Appcast work is specially aimed at making it possibly to transmit Sparkle-like updates in HTML and hAtom. I would be nice to be able to subsume the downloads work with the appcast microformat. [[User:Chris_Messina|Chris Messina]] 010:02, 28 Jul 2007 (CDT)&lt;br /&gt;
* [[hash-examples]] has a section about hAtom integration. The example uses a &amp;quot;download&amp;quot; class, which contains a rel-enclosure link as well as a span with &amp;quot;md5&amp;quot; and &amp;quot;checksum&amp;quot; classes.&lt;br /&gt;
&lt;br /&gt;
== Sparkle-specific Appcast enhancements ==&lt;br /&gt;
&lt;br /&gt;
Sparkle adds a few extra features to appcasts:&lt;br /&gt;
&lt;br /&gt;
* External release notes URL: used when the release notes are not included in the appcast itself&lt;br /&gt;
* MD5 sums and DSA signatures: used for some extra security&lt;br /&gt;
* Advanced version string: Sparkle determines the application version from the enclosure name, which is assumed to be APPNAME_VERSION.zip; the advanced version string allows this convention to be overridden&lt;br /&gt;
&lt;br /&gt;
The appcast microformat should probably support these features as well.&lt;br /&gt;
&lt;br /&gt;
The MD5 sum and DSA signature is specific for an enclosure. It is, however, not possible to add these extra attributes to a [[rel-enclosure]] link; a larger &amp;quot;enclosure&amp;quot; microformat may be necessary (also see [[hash-examples]]).&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
&lt;br /&gt;
This proposal is mostly inspired by appcasts with Sparkle extensions. It has a few issues, mostly due to the fact that it is not &amp;quot;general&amp;quot; enough.&lt;br /&gt;
&lt;br /&gt;
* Each hentry can have one or more &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt;s. Having more than one download in an appcast microformat used by Sparkle is not useful, as Sparkle would only use the first enclosure it sees. It may be useful in multi-* appcasts (see below).&lt;br /&gt;
* Each hentry has one &amp;lt;code&amp;gt;entry-version&amp;lt;/code&amp;gt; which holds the application version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;gt;&lt;br /&gt;
	&amp;amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;amp;lt;title&amp;gt;Appcast&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;amp;lt;h1&amp;gt;Appcast&amp;amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;Adium &amp;amp;lt;span class=&amp;quot;entry-version&amp;quot;&amp;gt;1.0.4&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p&amp;gt;Updated on &amp;amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2007-06-20T18:00+01:00&amp;quot;&amp;gt;24 June&amp;amp;lt;/abbr&amp;gt;.&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;ul&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
					&amp;amp;lt;li&amp;gt;Fixed group chat when message history is enabled&amp;amp;lt;/li&amp;gt;&lt;br /&gt;
				&amp;amp;lt;/ul&amp;gt;&lt;br /&gt;
			&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
			&amp;amp;lt;p class=&amp;quot;download&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;amp;lt;a href=&amp;quot;http://adiumx.cachefly.net/Adium_1.0.4.dmg&amp;quot; rel=&amp;quot;enclosure&amp;quot;&amp;gt;Download&amp;amp;lt;/a&amp;gt;.&lt;br /&gt;
				MD5 sum: &amp;amp;lt;span class=&amp;quot;checksum md5&amp;quot;&amp;gt;0f182a2c88373e6d77c69fa15c910f08&amp;amp;lt;/span&amp;gt;.&lt;br /&gt;
			&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:DenisDefreyne|DenisDefreyne]] 03:40, 1 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Multi-app/arch/OS/... appcasts ==&lt;br /&gt;
&lt;br /&gt;
A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc. The proposal above does not take this in account. (The [http://dev.mysql.com/downloads/mysql/5.0.html MySQL downloads page], for example, has many apps, many architectures and many OSes.) A way to distinguish between applications, architectures, OSes, ... would therefore be necessary.&lt;br /&gt;
&lt;br /&gt;
Here's a probably incomplete list of different download properties:&lt;br /&gt;
&lt;br /&gt;
* Architecture: PPC, x86, 68k, architecture-independent, …&lt;br /&gt;
* OS: Mac OS X, Windows XP, OS-independent, …&lt;br /&gt;
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, … (Cannot use MIME types for this, as not all different download types have their own MIME type)&lt;br /&gt;
&lt;br /&gt;
On second thought, all this is download-specific, so this is probably better suited for the [[downloads-brainstorming]] page.&lt;br /&gt;
&lt;br /&gt;
[[User:DenisDefreyne|DenisDefreyne]] 03:40, 1 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Software using appcasts ==&lt;br /&gt;
&lt;br /&gt;
This is a list of programs and frameworks that use appcasts or appcast-like data.&lt;br /&gt;
&lt;br /&gt;
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.&lt;br /&gt;
* [http://metaquark.de/appfresh/ AppFresh] uses Sparkle-enhanced appcasts and [http://iusethis.com/ iusethis].&lt;br /&gt;
** I'm not sure how the iusethis integration works, but it looks like AppFresh scrapes HTML pages.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[appcast]]&lt;br /&gt;
* [[appcast-examples]]&lt;/div&gt;</summary>
		<author><name>DenisDefreyne</name></author>
	</entry>
</feed>