So, today I landed the fix to Bug 603, the "automatically check for updates" feature in Chandler Desktop. Here's a long and rambly outline of what I did, hopefully going from more user-centric to more developer-centric. Comments, suggestions and questions welcome, of course.

- By default, Chandler will now check once a week if there are new updates available. There's a "Check for Updates" menu (under "File" on the Mac, "Help" on Windows/Linux), with the entries:

   Now (checks right away)

   Daily
   Weekly
   Don't Check Automatically

One of the last three have a checkmark ("Weekly" by default).

- The original bug requested that the menu go in the application menu on the Mac. Sadly, to the best of my knowledge this menu is not accessible via wx, so I had to stick it in the File menu.

- Using "Now" gives you one of 3 possible dialogs:
   - An error dialog (e.g. server unreachable)
   - A message telling you your Chandler is up-to-date.
- A dialog telling you about a new update. For a mock-up, see the mockup [1]

- For help in testing, I added a Tools -> Check for Test Updates menu item, that points off to a different URL on our build machine. This is handy if you want to see the dialog, but the plan also is to use this for pre-release testing.

- The new code mostly lives in the module osaf.app.updates (see [2]). The data is stored in microformat-style XHTML, as I proposed in [3], and is downloaded via HTTP fromdownloads.osafoundation.org. (If you have an HTTP proxy configured in Chandler, we'll use that, too).

- There is a comment in the bug from Heikki that the download data should be retrieved via https. There are no technical reasons on the client side not to do this (although I'm not sure which servers we have that run https). However, it seems to me that if we're downloading the entire application via http, it makes no sense to secure the download URL by encrypting the update information if the download itself is unsecured.

- We also use Chandler Desktop's standard User-Agent string, so I believe that should allow us to compile metrics on when people are checking for updates. However, not knowing how such metrics are actually compiled, someone like Jared should probably check that it is indeed possible to do this.

- The current information (for 0.7.5.1) has been embedded in the page <http://downloads.osafoundation.org/download > via a Twiki %INCLUDE%. This means that it's possible to update the downloads page via a script at the end of the release process (rather than editing the Wiki by hand, which is a little error-prone right now). I have been working on some tools to update various sites during build/release, and intend to test these during the next Chandler Desktop release.

- For comparing version strings, we defer to setuptools's package_resources.parse_version() API. So far as I know, this works correctly for the various version strings Chandler uses (i.e. for release and checkpoint builds, as well as 'make install' svn checkouts), but if anyone knows of exceptions, let me know.

- Very schematically, we look for stuff like the following in the XML we download:

<... class="release-info"">
  <... class="release-version">VERSION</...>
  <... href="DOWNLOAD-URL" class="download-PLATFORM">
  <... class="release-new-features">new feature(s) text
  <... href="..." class="announcement-url">

Here:

"<..." == HTML elements (in practice, some of them have style="display:none" so that they're invisible in the downloads page).
VERSION == a version string, like "0.7.5.1", or "0.7.6.dev-r16367"
DOWNLOAD-URL == the URL we will open in your browser (if it matches your browser). PLATFORM == a string we will use to match Chandler desktop to download URL.

The platform matching code tries to match the "platform ID" and "OS ID" contained in Chandler's Utility.py as much as it can. (There are corresponding unit tests for said matching). This means that currently, we can automatically point you at the correct Mac download (i.e. ppc, or intel or intel Leopard), and have all windows machinse download a single .exe. However, if in the future we had a separate Vista build, we could add that to the update data file and it should Just Work. (Ha!).

[1] <https://bugzilla.osafoundation.org/attachment.cgi?id=5061>
[2] <http://viewcvs.osafoundation.org/chandler/trunk/chandler/parcels/osaf/app/updates.py?rev=16360&view=markup > [3] <http://lists.osafoundation.org/pipermail/chandler-dev/2008-March/009827.html >

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

Reply via email to