Appcasting
• Chris Liscio
• Chris Liscio
I don't do FuzzMeasure Pro full-time. Most of you already know this. As a result, I need to ensure that I maintain agility so that I can keep FuzzMeasure moving forward on a shoestring time budget.</p> <p>Because I have so little time, I need to reduce the time spent on routine tasks wherever I can. Also, I like to try and slip these operations into my regular routine, and make it something I could do just after having my morning coffee, for example.</p> <p>So, with FuzzMeasure Pro 2 I tried to encapsulate as many updates as I could in a single operation. I chose appcasting as the technology of choice to accomplish this goal.</p> <p>My appcast is centered around my release notes. Release notes come directly from FogBugz, which is a godsend for the one-man shop. As issues are resolved, they can be tagged for inclusion into the release's notes by adding release notes to each individual issue. Once you gather up resolved issues for a release (I'll have to write something up about my FogBugz workflow soon), you can pull down a release's notes as a raw XML file.</p> <p>Along with the release notes comes the distributable version of the application itself. I have a Python script (buildFM.py) that pulls down the head revision of FuzzMeasure's trunk (maybe I'll also describe my subversion workflow one day), and then produces a tbz file containing the application. This file is then auto-uploaded to my downloads directory after it is built.</p> <p>Now I have the components I need to produce my appcast. Using another Python script I wrote (appcast.py), I toss my XML file (say, FuzzMeasure-2.0.4.xml) into my appcast working directory. Then, I add high-level details about the release into an index.txt file. The details simply state the marketing release number, the subversion revision for that release, and the date of the release. For FuzzMeasure 2.0.4, I added 2.0.4 1463 20060706 to the file. With this information, appcast.py builds appcast.xml.</p> <p>My appcast.xml file is used as my central, "official" hub for distributing updates to users. FuzzMeasure uses Sparkle to read the appcast, and displays release notes to the user when an update is detected. My FuzzMeasure Pro download page also uses the appcast.xml to display its release notes and set the appropriate download link. Finally, end-users can subscribe to the appcast and view it in their favourite news reader. <p>So, by producing a single file and uploading it to a special location, I get three updates for the price of 1. Without fail, I would forget one of these three things when I updated in the past, so this new workflow enhancement sure is worth the time I spent on it.</p>