<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>andymatuschak.org &#187; Sparklings</title>
	<link>http://andymatuschak.org</link>
	<description>Flying through the universe of code on a talking spaceship!</description>
	<pubDate>Sat, 05 Jul 2008 20:34:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.3</generator>
	<language>en</language>
			<item>
		<title>Okay, 1.5b4; oops!</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F07%2F05%2Fokay-15b4-oops%2F&amp;seed_title=Okay%2C+1.5b4%3B+oops%21</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F07%2F05%2Fokay-15b4-oops%2F&amp;seed_title=Okay%2C+1.5b4%3B+oops%21#comments</comments>
		<pubDate>Sat, 05 Jul 2008 20:19:07 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/07/05/okay-15b4-oops/</guid>
		<description><![CDATA[Somehow, a critical comma slipped out of 1.5b3 which prevented non-.dmgs from being extracted properly. Please update to 1.5b4 to fix that problem.
Sorry about that, folks.
]]></description>
			<content:encoded><![CDATA[<p>Somehow, a critical comma slipped out of 1.5b3 which prevented non-.dmgs from being extracted properly. Please <a href="http://sparkle.andymatuschak.org">update to 1.5b4</a> to fix that problem.</p>
<p>Sorry about that, folks.</p>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F07%2F05%2Fokay-15b4-oops%2F&amp;seed_title=Okay%2C+1.5b4%3B+oops%21/feed/</wfw:commentRss>
		</item>
		<item>
		<title>1.5b3: A Quick Detour for Bugfixes</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F07%2F04%2F15b3-a-quick-detour-for-bugfixes%2F&amp;seed_title=1.5b3%3A+A+Quick+Detour+for+Bugfixes</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F07%2F04%2F15b3-a-quick-detour-for-bugfixes%2F&amp;seed_title=1.5b3%3A+A+Quick+Detour+for+Bugfixes#comments</comments>
		<pubDate>Fri, 04 Jul 2008 20:28:34 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/07/04/15b3-a-quick-detour-for-bugfixes/</guid>
		<description><![CDATA[I&#8217;m working on some major refactorings to enable Sparkle to work for updating multiple bundles at once, but that&#8217;ll take a while, and some rather important bugs have been fixed since 1.5b2. In the spirit of releasing more frequently, I give you 1.5b3. If you&#8217;ve released an app with b2, I recommend upgrading as soon [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on some major refactorings to enable Sparkle to work for updating multiple bundles at once, but that&#8217;ll take a while, and some rather important bugs have been fixed since 1.5b2. In the spirit of releasing more frequently, <a href="http://sparkle.andymatuschak.org">I give you 1.5b3</a>. If you&#8217;ve released an app with b2, I recommend upgrading as soon as you can.</p>
<ul>
<li>Added a new delegate method to SUUpdater.h to allow delegates to specify custom version comparators.</li>
<li>Added a German localization, courtesy the Camino localizer team: Dominik T., Tobias Stohr, and Friedemann Bochow.</li>
<li><strong>Bug fixes:</strong>
<ul>
<li>Fixed a serious bug which could cause a server to be DDoS&#8217;d (or the host app to crash!) if an appcast fails to be parsed.</li>
<li>Fixed .tbz extraction if the archive was made with Stuffit.</li>
<li>Fixed support for .tar.bz2 and .tar.gz; Sparkle has to assume the archive is a tar when it sees &#8220;bz2&#8243; and &#8220;gz&#8221;; don&#8217;t use those without tarring.</li>
<li>Fixed a typo which caused the shouldPromptForPermissionToCheckForUpdatesToHostBundle: method to not work in 1.5b2.</li>
<li>Fixed .zip extraction on Tiger (Apple changed the UTI between releases)</li>
<li>Fixed a crasher on Tiger.</li>
<li>Fixed display of the default app icon when the host app doesn&#8217;t have an icon.</li>
<li>Sparkle now displays a sensible progress string and uses an indeterminate progress bar when the server doesn&#8217;t report a file size.</li>
<li>Fixed some memory leaks.</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F07%2F04%2F15b3-a-quick-detour-for-bugfixes%2F&amp;seed_title=1.5b3%3A+A+Quick+Detour+for+Bugfixes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sparkle 1.5b2!</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F29%2Fsparkle-15b2%2F&amp;seed_title=Sparkle+1.5b2%21</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F29%2Fsparkle-15b2%2F&amp;seed_title=Sparkle+1.5b2%21#comments</comments>
		<pubDate>Mon, 30 Jun 2008 05:13:19 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/06/29/sparkle-15b2/</guid>
		<description><![CDATA[Alright folks, it&#8217;s been a few weeks, and we&#8217;ve gotten a ton of bugs hammered out. If you&#8217;re using 1.5b1, you should absolutely upgrade to b2, as a number of somewhat critical bugs have been fixed.
As of this writing, there are no known bugs (other than Sparkle being bigger than I want it to be), [...]]]></description>
			<content:encoded><![CDATA[<p>Alright folks, it&#8217;s been a few weeks, and we&#8217;ve gotten a ton of bugs hammered out. If you&#8217;re using 1.5b1, you should absolutely upgrade to b2, as a number of somewhat critical bugs have been fixed.</p>
<p>As of this writing, there are no known bugs (other than Sparkle being bigger than I want it to be), so please <a href="https://bugs.launchpad.net/sparkle/+filebug">let me know</a> if you find something amiss.</p>
<p>Still no documentation yet, but now that the bugs are closed, I&#8217;ll get on that.</p>
<h3>What&#8217;s New?</h3>
<ul>
<li><strong>Compatibility Issues:</strong>
<ul>
<li>Most of the delegate method selectors have changed to scale better. See <code>SUUpdater.h</code> for changes; you&#8217;ll likely have to make changes if you implement any delegate methods.</li>
<li>If you&#8217;re using .tar.gz or .tar.bz2 archives, name them &#8220;.tbz&#8221; or &#8220;.tgz&#8221; instead; Sparkle now uses UTIs for archive detection, and it&#8217;s not smart about double extensions.</li>
<li>I&#8217;m no longer supporting 10.3. This may or may not work on Panther—probably not.</li>
<li>Sparkle&#8217;s no longer built for <code>ppc64</code> by default. If you want to ship that, feel free to build your own, but this saves a few hundred k.</li>
</ul>
</li>
<li><strong>Enhancements:</strong>
<ul>
<li>Sparkle now detects if the preferences for automatic update checks or the time interval change mid-cycle. If your product is a non-.app, you need to clue Sparkle in on the change by calling <code>[[SUUpdater sharedUpdater] updatePreferencesChanged]</code>.</li>
<li>Added a cancel to the &#8220;checking for updates&#8230;&#8221; dialog.</li>
<li>Sparkle now cleans up all its litter in /tmp.</li>
<li>Made <code>SUUpdater's</code> delegate an <code>IBOutlet</code> so you can hook it up in Interface Builder.</li>
</ul>
</li>
<li><strong>Bug fixes:</strong>
<ul>
<li>Sparkle no longer crashes on non-GC hosts when the user cancels an update&#8217;s downloads.</li>
<li>Sparkle no longer gets stuck in an inconsistent state or crashes when it can&#8217;t parse the appcast on scheduled updates.</li>
<li>Added the sharedUpdater method to <code>SUUpdater</code>, as it should have been.</li>
<li>Fixed a bug where the &#8220;checking for updates&#8230;&#8221; window wouldn&#8217;t go away if an error occurs while checking for updates.</li>
<li>Made the dual-mode build configuration actually use the .xcconfig which builds it with GC support. (oops!)</li>
<li>Fixed relaunching for prefpanes.</li>
<li>Sparkle no longer fails to install updates on Snow Leopard (though there&#8217;s still an issue with trashing the old version of the app, but it seems to be a 10.6 bug)</li>
<li>Sparkle now handles redirects correctly under Tiger.</li>
<li>Fixed the installation path for non-.app bundles.</li>
<li>Fixed a bug which could crash Sparkle under non-English locales.</li>
<li>Fixed a weird race condition which could cause the relaunch tool to never notice that its target relaunched.</li>
<li>Fixed a bug where if the host app is inactive when an update occurs, the update alert sometimes doesn&#8217;t become key.</li>
<li>Minor textual fixes.</li>
</ul>
</li>
<li><strong>Localizations:</strong>
<ul>
<li>Dutch, courtesy Maarten Van Coile</li>
<li>French, courtesy Yann Ricquebourg</li>
<li>Spanish, courtesy Ernesto Gomez Cereijo</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F29%2Fsparkle-15b2%2F&amp;seed_title=Sparkle+1.5b2%21/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Shot down!</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F28%2Fshot-down%2F&amp;seed_title=Shot+down%21</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F28%2Fshot-down%2F&amp;seed_title=Shot+down%21#comments</comments>
		<pubDate>Sun, 29 Jun 2008 06:25:14 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/06/28/shot-down/</guid>
		<description><![CDATA[Okay, so it&#8217;s sounding like the risk and work involved in my last proposal outweigh the benefits.
I don&#8217;t want to spend a ton of time doing crazy things for Sparkle, anyway&#8212;I want to solve the software management problem correctly. Hrm.
On the bright side, 1.5b2 tomorrow, probably.
]]></description>
			<content:encoded><![CDATA[<p>Okay, so it&#8217;s sounding like the risk and work involved in <a href="http://andymatuschak.org/articles/2008/06/28/a-compromise-and-an-idea/">my last proposal</a> outweigh the benefits.</p>
<p>I don&#8217;t want to spend a ton of time doing crazy things for Sparkle, anyway&mdash;I want to solve the software management problem <em>correctly</em>. Hrm.</p>
<p>On the bright side, 1.5b2 tomorrow, probably.</p>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F28%2Fshot-down%2F&amp;seed_title=Shot+down%21/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Compromise and an Idea</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F28%2Fa-compromise-and-an-idea%2F&amp;seed_title=A+Compromise+and+an+Idea</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F28%2Fa-compromise-and-an-idea%2F&amp;seed_title=A+Compromise+and+an+Idea#comments</comments>
		<pubDate>Sun, 29 Jun 2008 01:00:35 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/06/28/a-compromise-and-an-idea/</guid>
		<description><![CDATA[Sparkle is the wrong way to do software updates. This is for many reasons, but one of the big ones is that we&#8217;ve got tons of copies of Sparkle running around the system, some potentially very outdated.
Even without security issues, it&#8217;s silly to have some apps presenting new Sparkle interface and some apps not. And [...]]]></description>
			<content:encoded><![CDATA[<p>Sparkle is the wrong way to do software updates. This is for many reasons, but one of the big ones is that we&#8217;ve got tons of copies of Sparkle running around the system, some potentially very outdated.</p>
<p>Even without security issues, it&#8217;s silly to have some apps presenting new Sparkle interface and some apps not. And Snow Leopard compatibility weighs heavy on my mind.</p>
<p>I&#8217;ve said this whole time that really solving this problem is not something third-party developers can do. Software update is a small part of the larger software management problem, and I don&#8217;t think it can be solved outside of Cupertino.</p>
<p>This might help, though.</p>
<h3>The Big Idea</h3>
<p>Apps which use Sparkle would ship with a Sparkle stub framework. This would be comparatively small and hopefully require only rare changes.</p>
<p>After it asks &#8220;do you want to check for updates?&#8221; the stub framework checks to ensure the full Sparkle framework is installed and up to date (by fetching an appcast from my server). If either criterion is unfulfilled, it&#8217;ll fetch the latest Sparkle.framework and install it in ~/Library/Frameworks (so as to avoid authentication).</p>
<p>Then it&#8217;ll load the framework from that path and proceed as usual, checking for updates to the system framework perhaps once a week. I envision appcasts specifying that they require a particular version of Sparkle for non-compatible new features.</p>
<p>Obviously, there are a lot of issues and cases to take into account (including the fact that I&#8217;m not sure I want to do this much work), but I think this is the best solution for the immediate future.</p>
<p>Thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F28%2Fa-compromise-and-an-idea%2F&amp;seed_title=A+Compromise+and+an+Idea/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Automated Appcast Creation</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F20%2Fautomated-appcast-creation%2F&amp;seed_title=Automated+Appcast+Creation</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F20%2Fautomated-appcast-creation%2F&amp;seed_title=Automated+Appcast+Creation#comments</comments>
		<pubDate>Fri, 20 Jun 2008 16:06:04 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/06/20/automated-appcast-creation/</guid>
		<description><![CDATA[I just wanted to plug a couple of tools now available for automatic appcast creation.
The first is SparkleCaster, a Cocoa app by Adam Radestock. I&#8217;ve mentioned it on here before, but it&#8217;s made some progress&#8212;check it out and see if it fits your needs.
The second is new: a tutorial on using Rake to make appcasts. [...]]]></description>
			<content:encoded><![CDATA[<p>I just wanted to plug a couple of tools now available for automatic appcast creation.</p>
<p>The first is <a href="http://code.google.com/p/maccode/wiki/SparkleCaster">SparkleCaster</a>, a Cocoa app by <a href="http://www.glassmonkey.co.uk">Adam Radestock</a>. I&#8217;ve mentioned it on here before, but it&#8217;s made some progress&mdash;check it out and see if it fits your needs.</p>
<p>The second is new: <a href="http://codeintensity.blogspot.com/2008/03/creating-sparkle-appcast-via-rake-tasks.html">a tutorial on using Rake</a> to make appcasts. This is the kind of badassery that keeps me using Ruby.</p>
<p>Keep on rocking, folks! 1.5b2 soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F20%2Fautomated-appcast-creation%2F&amp;seed_title=Automated+Appcast+Creation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick Note on Sparkle 1.5b1 Localizations</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F01%2Fquick-note-on-sparkle-15b1-localizations%2F&amp;seed_title=Quick+Note+on+Sparkle+1.5b1+Localizations</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F01%2Fquick-note-on-sparkle-15b1-localizations%2F&amp;seed_title=Quick+Note+on+Sparkle+1.5b1+Localizations#comments</comments>
		<pubDate>Sun, 01 Jun 2008 18:05:22 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/06/01/quick-note-on-sparkle-15b1-localizations/</guid>
		<description><![CDATA[For those wonderful prospective localizers, you should know that I&#8217;ve actually already changed a few strings since 1.5b1 (doh!). One of my localizers pointed out some flaws.
Anyway, here&#8217;s a new English strings file and test app to use to test with: Sparkle 1.5b1 Localization Pack.
I may need to update things some more if there are [...]]]></description>
			<content:encoded><![CDATA[<p>For those wonderful prospective localizers, you should know that I&#8217;ve actually already changed a few strings since 1.5b1 (doh!). One of my localizers pointed out some flaws.</p>
<p>Anyway, here&#8217;s a new English strings file and test app to use to test with: <a href="http://sparkle.andymatuschak.org/files/Sparkle 1.5b1 Localization Pack.zip">Sparkle 1.5b1 Localization Pack</a>.</p>
<p>I may need to update things some more if there are more problems; I&#8217;ll update this entry if that happens. Alternately, you can keep abreast of changes in a much easier (for me, at least) way <a href="http://andymatuschak.org/articles/2008/06/01/a-guide-to-contributing-to-sparkle/">using Bazaar</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F01%2Fquick-note-on-sparkle-15b1-localizations%2F&amp;seed_title=Quick+Note+on+Sparkle+1.5b1+Localizations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Guide to Contributing to Sparkle</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F01%2Fa-guide-to-contributing-to-sparkle%2F&amp;seed_title=A+Guide+to+Contributing+to+Sparkle</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F01%2Fa-guide-to-contributing-to-sparkle%2F&amp;seed_title=A+Guide+to+Contributing+to+Sparkle#comments</comments>
		<pubDate>Sun, 01 Jun 2008 17:46:17 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/06/01/a-guide-to-contributing-to-sparkle/</guid>
		<description><![CDATA[I&#8217;ve got Sparkle 1.5b1 out, but unfortunately, I don&#8217;t have time to write the documentation or any of the supporting material at the moment.
This is kind of a problem.
So until I get a chance to do that, following is a brief guide on using Bazaar to contribute to Sparkle.
Getting the Source
First, you&#8217;ll have to get [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got Sparkle 1.5b1 out, but unfortunately, I don&#8217;t have time to write the documentation or any of the supporting material at the moment.</p>
<p>This is kind of a problem.</p>
<p>So until I get a chance to do that, following is a brief guide on using <a href="http://bazaar-vcs.org">Bazaar</a> to contribute to Sparkle.</p>
<h3>Getting the Source</h3>
<p>First, you&#8217;ll have to get Bazaar. The easiest way to do that is to <a href="http://bazaar-vcs.org/Download">grab a .pkg from the project homepage.</a> MacPorts is more trouble than you want to deal with.</p>
<p>Now, here&#8217;s all it takes to get a fresh copy of Sparkle&#8217;s code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash">bzr branch <span style="color: #c20cb9; font-weight: bold;">lp</span>:sparkle</pre></div></div>

<h3>Contributing to Sparkle</h3>
<p>The main reason I switched to Bazaar is that it&#8217;s now <em>so easy</em> to contribute to Sparkle. And, thankfully, it&#8217;s just as easy for me to integrate your contributions.</p>
<p>There are just a few steps you&#8217;ve got to do the first time you&#8217;d like to contribute:</p>
<ol>
<li><a href="https://launchpad.net/+login">Grab a Launchpad account.</a> Launchpad will host your branches; it also keeps track of which bug[s] your branch fixes.</li>
<li>Head over to your profile and click the link on the left to update your SSH keys. This is how you authenticate to Launchpad. If you don&#8217;t have a public key, it&#8217;ll explain how to generate one.</li>
<li>Let bzr know who you are. Open up a command prompt and run:

<div class="wp_syntax"><div class="code"><pre class="bash">bzr launchpad-<span style="color: #c20cb9; font-weight: bold;">login</span> YOUR_LP_USERNAME</pre></div></div>

</li>
<li>Then make sure you get credit for your work with:

<div class="wp_syntax"><div class="code"><pre class="bash">bzr <span style="color: #c20cb9; font-weight: bold;">whoami</span> <span style="color: #ff0000;">&quot;Joe Henderson &lt;theemailaddress@yougavelaunchpad.com&gt;&quot;</span></pre></div></div>

</ol>
<p>From here, the average lifecycle looks very much like SVN&#8217;s:</p>
<ol>
<li><code>bzr pull</code> to get the latest code.</li>
<li>Make whatever changes you&#8217;d like to make.</li>
<li><code>bzr add foo.c bar.h</code> to tell Bazaar about any new files.</li>
<li><code>bzr commit -m "Description here"</code> to record the patch, <strong>OR</strong> if you&#8217;re fixing a particular bug, run this to link the revision to the bug:

<div class="wp_syntax"><div class="code"><pre class="bash">bzr commit --fixes <span style="color: #c20cb9; font-weight: bold;">lp</span>:<span style="color: #000000;">12345</span> -m <span style="color: #ff0000;">&quot;Description here&quot;</span></pre></div></div>

</li>
</ol>
<p>If you do that a bunch of times, you&#8217;ll have a number of patches on your computer, but they won&#8217;t be on the server yet. To publish your changes, you make a <strong>branch</strong>. Here&#8217;s how:</p>

<div class="wp_syntax"><div class="code"><pre class="bash">bzr push <span style="color: #c20cb9; font-weight: bold;">lp</span>:~YOUR_LP_USERNAME/sparkle/BRANCH_NAME</pre></div></div>

<p>That&#8217;s it! You&#8217;re done! Your code&#8217;s online, and if you linked revisions to bugs, your branch will show up on the bug description page.</p>
<p>You can explicitly propose your branch for merging into the main branch: just login, find the branch in question on your profile, and click the proposal link on the navigation bar.</p>
<p>If you want to keep working with your branch, just run this every so often to merge in any changes from the main branch:</p>

<div class="wp_syntax"><div class="code"><pre class="bash">bzr merge <span style="color: #c20cb9; font-weight: bold;">lp</span>:sparkle</pre></div></div>

<p>You can read more about Bazaar in the <a href="http://doc.bazaar-vcs.org/bzr.dev/en/user-guide/index.html">great user guide</a> on its homepage. And if you run into trouble, feel free to <a href="https://answers.launchpad.net/sparkle/+addquestion">ask a question</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F06%2F01%2Fa-guide-to-contributing-to-sparkle%2F&amp;seed_title=A+Guide+to+Contributing+to+Sparkle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sparkle 1.5b1: Now Available!</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F05%2F31%2Fsparkle-15b1-now-available%2F&amp;seed_title=Sparkle+1.5b1%3A+Now+Available%21</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F05%2F31%2Fsparkle-15b1-now-available%2F&amp;seed_title=Sparkle+1.5b1%3A+Now+Available%21#comments</comments>
		<pubDate>Sun, 01 Jun 2008 07:34:04 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/05/31/sparkle-15b1-now-available/</guid>
		<description><![CDATA[
Well, it&#8217;s been a long time coming, but Sparkle 1.5 is finally available. Except it&#8217;s Sparkle 1.5b1. This means I think it&#8217;s done, and lots of people have been using it for a while, but it might still have rough edges.
There&#8217;s a new site, too, and it&#8217;s dramatically simplified. Documentation is&#8230; forthcoming, I&#8217;m afraid&#8212;if you [...]]]></description>
			<content:encoded><![CDATA[<div style="margin-left: -20px; margin-top: -10px; margin-bottom: 10px;"><img src="http://andymatuschak.org/wp-content/uploads/2008/05/newsparklesite.jpg" alt="NewSparkleSite.jpg" border="0" width="550" /></div>
<p>Well, it&#8217;s been a long time coming, but Sparkle 1.5 <a href="http://sparkle.andymatuschak.org">is finally available.</a> Except it&#8217;s Sparkle 1.5b1. This means I think it&#8217;s done, and lots of people have been using it for a while, but it might still have rough edges.</p>
<p>There&#8217;s a new site, too, and it&#8217;s dramatically simplified. Documentation is&#8230; <strong>forthcoming</strong>, I&#8217;m afraid&mdash;if you want to use any of the really fancy new features, you&#8217;ll have to take a look at the code to see how to do it. Sorry about that. I&#8217;ll get to it in a few weeks.</p>
<p>I&#8217;m also <strong>actively soliciting localizations</strong>. All of Sparkle&#8217;s old ones are wayyyy out of date. If you&#8217;re interested in doing a localization, you should email me so that we can coordinate and not have many people doing one language.</p>
<p>What&#8217;s new? Oh goodness, tons of stuff.</p>
<ul class="ul1">
<li style="margin: 0.0px 0.0px 0.0px 0.0px;"><strong>The most important things to know:</strong>
<ul class="ul2">
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">The 10.3 support is untested at best; sketchy at worst. Test with it thoroughly before you use it.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now asks for permission to update on <b>second launch</b>; don&#8217;t be surprised at that. You can change that behavior with a delegate method; read SUUpdater.h for more info.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">We no longer distinguish between &#8220;check on startup&#8221; and &#8220;scheduled updates&#8221;; everything is scheduled, with the default being every day.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">The test application is using the new profiling features, but that&#8217;s only for demonstration: these are off by default. More on this later.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">There are no localizations yet.</li>
</ul>
</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;"><strong>New features:</strong>
<ul class="ul2">
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now supports .pkgs. Just name the .pkg the name of the app and put in the update archive.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">
<p>Sparkle now sends optional demographic profiling information; set SUEnableSystemProfiling to YES in your Info.plist and check out the GET data sent to your webserver when fetching the appcast. More on this in the documentation. The test application has this on so you can see the behavior.</p>
<p>This new feature&mdash;I foolishly neglected to mention&mdash;is courtesy Tom Harrington and the other <a href="http://code.google.com/p/sparkleplus">Sparkle+</a> folks.</p>
</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now supports updating non-.apps. Just call -setHostBundle: on the global SUUpdater to let it know what you&#8217;re trying to update.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now supports garbage collection in the host app. Use &#8220;Sparkle-with-GC.framework&#8221; for that, but be aware it&#8217;s 10.5-only.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle is now 64-bit compatible, compiling both ppc64 and x86_64.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now supports a sparkle:minimumSystemVersion attribute on the enclosure. It does what you think it does.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now checks to see if the host app is running from a disk image and refuses to update if it is. (10.4+ only)</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Added support for entities in enclosure paths.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">The file size output is now formatted prettily.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now gives visual indication that it&#8217;s checking for updates when the update&#8217;s user initiated. ie: it pops up a status controller saying &#8220;checking for updates&#8230;&#8221;</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Added support for an SUPublicDSAKeyFile, so people don&#8217;t have to copy/paste their entire key into their Info.plist. Set this key in your Info.plist to the filename of the key in your Resources directory.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Added an actually maintainable codebase.</li>
</ul>
<p></strong></p>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;"><strong>Changes:</strong>
<ul class="ul2">
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle version comparison is now dramatically less stupid and verified by a bunch of unit tests. If something doesn&#8217;t work the way you think it should, add a test to SUVersionComparisonTest.m</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Added a minimum to the check interval so that developers don&#8217;t accidentally release their apps into the wild with 60-second test check intervals and have DOS-attack-like results. It&#8217;s an hour now for release mode; feel free to change it.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">The relaunching process now uses a separate helper app, which is a much more robust method.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Changed CFBundleShortVersionString behavior: Sparkle no longer uses Apple&#8217;s about box style of displaying ShortVersionString (CFBundleVersion) when the latter is available.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">No more MD5 checking. Use DSA: it&#8217;s actually secure.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">The abomination that was SUStatusChecker is dead. Use SUProbingUpdateDriver instead.</li>
</ul>
</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;"><strong>Bugfixes:</strong>
<ul class="ul2">
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Fixed a huge bug with fully-automatic updating: before, if the user chose to relaunch later, the app would be running from the trash for a while. Now the buttons are &#8220;install and relaunch&#8221; or &#8220;install later.&#8221;</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle forces Spotlight to reindex the updated app so that it won&#8217;t keep pointing to the one in the trash.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle trims whitespace from around DSA signatures; this could cause crashes before.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Fixed a bug where the user choosing to skip a version would inhibit future automatic updates until the next launch.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Fixed a bug that could occur when the app has a localized CFBundleName.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">.dmgs now work on Leopard.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">The status controller&#8217;s button now sizes appropriately to the localization.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now works correctly with LSUIElement apps: it focuses them before displaying the update alert.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Sparkle now deletes failed partial downloads.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">The update alert no longer floats above everything in the app.</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">Fixed varied and sundry memory leaks.</li>
</ul>
</li>
<li style="margin: 0.0px 0.0px 0.0px 0.0px;">A ton of other things that I&#8217;ve forgotten or were too small to mention!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F05%2F31%2Fsparkle-15b1-now-available%2F&amp;seed_title=Sparkle+1.5b1%3A+Now+Available%21/feed/</wfw:commentRss>
		</item>
		<item>
		<title>We Have Launch!</title>
		<link>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F05%2F09%2Fwe-have-launch%2F&amp;seed_title=We+Have+Launch%21</link>
		<comments>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F05%2F09%2Fwe-have-launch%2F&amp;seed_title=We+Have+Launch%21#comments</comments>
		<pubDate>Fri, 09 May 2008 08:07:19 +0000</pubDate>
		<dc:creator>Andy Matuschak</dc:creator>
		
		<category><![CDATA[Sparklings]]></category>

		<guid isPermaLink="false">http://andymatuschak.org/articles/2008/05/09/we-have-launch/</guid>
		<description><![CDATA[
If you click some of the links along the right side of Sparkle&#8217;s home page, you might notice that they lead to some new places&#8230;

Sorry, Git lovers, my guts took me to Bazaar and Launchpad. It wasn&#8217;t really a Git vs. Bzr thing; it was a Launchpad vs. Lighthouse+Github thing. I&#8217;m really pleased with the [...]]]></description>
			<content:encoded><![CDATA[<div style="margin-left: -20px; margin-top: -10px; margin-bottom: 10px;"><img src="http://andymatuschak.org/wp-content/uploads/2008/05/launchpad.jpg" alt="launchpad.jpg" border="0" width="550" height="200" /></div>
<p>If you click some of the links along the right side of <a href="http://sparkle.andymatuschak.org/">Sparkle&#8217;s home page</a>, you might notice that they lead to some new places&#8230;</p>
<p><img src="http://andymatuschak.org/wp-content/uploads/2008/05/bazaar144x149.png" alt="bazaar144x149.png" border="0" width="144" height="149" style="float: right; margin-left: 10px"/></p>
<p>Sorry, Git lovers, my guts took me to Bazaar and Launchpad. It wasn&#8217;t really a Git vs. Bzr thing; it was a Launchpad vs. Lighthouse+Github thing. I&#8217;m really pleased with the new solution so far, and I hope you&#8217;ll follow me to new and maintainable horizons.</p>
<p>Sparkle&#8217;s development now has <a href="http://launchpad.net/sparkle">a new home</a>, complete with <a href="https://code.launchpad.net/sparkle/">a new source repository</a> and <a href="https://bugs.launchpad.net/sparkle/">a new bug tracker</a>.</p>
<p>Soon-ish, I&#8217;ll get up a new, simplified Sparkle home page&mdash;one that doesn&#8217;t have four different nav bars&mdash;and wiki. If any of you lovely designers in the audience feel like contributing, I&#8217;d love the help. I&#8217;m also looking into enabling the translations and blueprints sections for Sparkle on Launchpad.</p>
<p><strong>Update:</strong> Some people were saying they were having trouble getting Bazaar going on OS X. It&#8217;s actually pretty simple: just get <a href="http://macports.org">MacPorts</a> and run:</p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> bzr</pre></div></div>

<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://andymatuschak.org/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fandymatuschak.org%2Farticles%2F2008%2F05%2F09%2Fwe-have-launch%2F&amp;seed_title=We+Have+Launch%21/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
