downloads-brainstorming: Difference between revisions

From Microformats Wiki
Jump to navigation Jump to search
m (rm fragemnt)
(Merging appcast-brainstorming into downloads-brainstorming)
Line 1: Line 1:
== Purpose ==
<h1>Downloads Brainstorming </h1>


Many sites ([http://download.com/ Download.com], [http://tucows.com/ Tucows], [http://sourceforge.net/ SourceForge], etc.) provide software downloads, some shareware, some freeware, some open-source.  To create a search index or similar across these sites would be difficult, as there is no standard markup.
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.


Many other sites index such downloads, selectively, without providing them directly, for example [http://www.pricelesswarehome.org/2004/PL2004nSYSTEMUTILITIES.php PricelessWare].
This page was recently merged from appcast-brainstorming, and may therefore still have references to an "appcast microformat".


== Relation to Appcasts ==
__TOC__


Appcasts (see [[appcast-brainstorming]]) provide a list of downloads, as well as release notes. An appcast microformat should probably make use of a downloads microformat which adds extra metadata to downloads, such as versions, OS, architecture, MD5/SHA1 checksums, DSA signatures, and so on.
== Authors ==


:Better to merge these ideas and have one microformat, perhaps using hAtom for the "cast" part. [[User:AndyMabbett|Andy Mabbett]]
* [[User:DenisDefreyne|Denis Defreyne]]
* [http://factoryjoe.com/ Chris Messina]
 
== Context ==
 
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.
 
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.
 
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.
 
== Related Work ==
 
* [[hash-brainstorming]] has a section about hAtom integration. The example uses a "download" class, which contains a rel-enclosure link as well as a span with "md5" and "checksum" classes.
 
== Sparkle-specific Appcast enhancements ==
 
Sparkle adds a few extra features to appcasts:
 
* External release notes URL: used when the release notes are not included in the appcast itself
* MD5 sums and DSA signatures: used for some extra security
* 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 <code>sparkle:version</code> attribute will be used. The <code>sparkle:shortVersionString</code> 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).
 
The downloads microformat should probably support these features as well.
 
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.
 
== Proposal ==
 
This proposal is mostly inspired by appcasts with Sparkle extensions.
 
* Each hentry has one enclosure, and possibly checksums and digital signatures.
* Each hentry has one <code>version</code> which holds the application version.
 
Example:
 
<code><pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
&lt;html>
&lt;head>
&lt;title>Version History&lt;/title>
&lt;/head>
&lt;body>
&lt;h1>Version History&lt;/h1>
&lt;div class="hentry">
&lt;h2 class="entry-title">Adium &lt;span class="version">1.0.4&lt;/span>&lt;/h2>
&lt;p>Updated on &lt;abbr class="updated" title="2007-06-20T18:00+01:00">24 June&lt;/abbr>.&lt;/p>
&lt;div class="entry-content">
&lt;ul>
&lt;li>Fixed a crash introduced in 1.0.3 which could occur when accounts disconnected or status changed&lt;/li>
&lt;li>Fixed group chat when message history is enabled&lt;/li>
&lt;/ul>
&lt;/div>
 
<p>
&lt;a href="http://adiumx.cachefly.net/Adium_1.0.4.dmg" rel="enclosure">Download&lt;/a>.
<span class="checksum">
The <span class="type">MD5</span> checksum of this download is
<span class="value">e0d123e5f316bef78bfdf5a008837577</span>.
</span>.
</p>
&lt;/div>
&lt;/body>
&lt;/html></pre></code>
 
The hash microformat used in this proposal is likely to change.
 
== Multi-app/arch/OS/... download pages ==
 
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]).
 
Here's a probably incomplete list of different download properties:
 
* Architecture: PPC, x86, 68k, architecture-independent, …
* OS: Mac OS X, Windows XP, OS-independent, …
* Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …
 
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.
 
== Issues ==
 
* How should DSA signatures be handled? Should a simple <code>&lt;span class="dsa-signature">...&lt;/span></code> work? Should DSA signatures be part of the hash microformat (see [[hash-brainstorming]])?
** [[digital-signatures]] seems to be useful, but only for signing microformat data, not enclosures.
 
== Software using appcasts ==
 
This is a list of programs and frameworks that use appcasts or appcast-like data.
 
* [http://sparkle.andymatuschak.org/ Sparkle] uses Sparkle-enhanced RSS appcasts.
* [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]).
 
== Related Pages ==
 
* [[downloads]]
* [[downloads-examples]]
* [[downloads-formats]]


== See Also ==
== See Also ==


* [[rel-license]] (rel=copyright for copyright license?  rel=license whatiscopyright.org?)
* [[rel-enclosure]]
* [[hash-brainstorming]]
* [[hash-examples]]
* [[hash-examples]]
* [[appcast-brainstorming]] and [[appcast-examples]]
* [http://usefulinc.com/doap DOAP]
* [http://usefulinc.com/doap DOAP] and [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]
* [http://dannyayers.com:88/xmlns/hdoap/profile/index.xhtml hDOAP]
* [http://www.google.com/codesearch Google Code Search] (not a downloads search, but similar)

Revision as of 21:40, 5 August 2007

Downloads Brainstorming

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.

This page was recently merged from appcast-brainstorming, and may therefore still have references to an "appcast microformat".

Authors

Context

Sites like iusethis.com, versiontracker.com, macupdate.com and download.com, among others, provide software downloads, both new releases and updates.

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.

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.

Related Work

  • hash-brainstorming has a section about hAtom integration. The example uses a "download" class, which contains a rel-enclosure link as well as a span with "md5" and "checksum" classes.

Sparkle-specific Appcast enhancements

Sparkle adds a few extra features to appcasts:

  • External release notes URL: used when the release notes are not included in the appcast itself
  • MD5 sums and DSA signatures: used for some extra security
  • 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 sparkle:version attribute will be used. The sparkle:shortVersionString 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).

The downloads microformat should probably support these features as well.

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.

Proposal

This proposal is mostly inspired by appcasts with Sparkle extensions.

  • Each hentry has one enclosure, and possibly checksums and digital signatures.
  • Each hentry has one version which holds the application version.

Example:

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

			<p>
				<a href="http://adiumx.cachefly.net/Adium_1.0.4.dmg" rel="enclosure">Download</a>.
				<span class="checksum">
						The <span class="type">MD5</span> checksum of this download is
						<span class="value">e0d123e5f316bef78bfdf5a008837577</span>.
				</span>.
			</p>
		</div>
	</body>
</html>

The hash microformat used in this proposal is likely to change.

Multi-app/arch/OS/... download pages

A single downloads page can have downloads for different applications, different versions, different architectures, different operating systems, etc (for example, the MySQL downloads page).

Here's a probably incomplete list of different download properties:

  • Architecture: PPC, x86, 68k, architecture-independent, …
  • OS: Mac OS X, Windows XP, OS-independent, …
  • Download type: Ruby Gem, gzipped tarball, Mac OS X DMG, …

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.

Issues

  • How should DSA signatures be handled? Should a simple <span class="dsa-signature">...</span> work? Should DSA signatures be part of the hash microformat (see hash-brainstorming)?
    • digital-signatures seems to be useful, but only for signing microformat data, not enclosures.

Software using appcasts

This is a list of programs and frameworks that use appcasts or appcast-like data.

Related Pages

See Also