[Sparkle] Thinking about unifying Sparkle...

Andy Matuschak andy at andymatuschak.org
Sat Aug 4 18:40:14 PDT 2007


I'm trying to think a bit about Sparkle's future. I'm hoping you all  
can lend me a hand.

John Gruber made an excellent point about Sparkle in his Linked List  
last week: when it has an update available, it prompts you to install  
it at pretty much the least convenient time. You've just launched the  
application and want to use it for something! The fully automated  
updates mitigate this somewhat, but almost nobody uses them, and then  
the user still gets a prompt to restart the app maybe thirty seconds  
later.

I envision a system-wide Sparkle that constantly keeps the system up- 
to-date, controlled by a prefpane. All updates must be signed, and new  
updates are installed automatically as they're acquired (this behavior  
being perhaps configurable). If an update is installed for a program  
that's running, the system will ask the user if he'd like to restart  
it. The user can roll back to any version still in the appcast through  
the prefpane UI.

Now, I have a couple problems with this idea:

1. What kind of interface is appropriate for notifying the user of  
updates? A lot of the time, they don't care at all that something's  
been updated—a tiny bug fix, a small new feature, whatever. I don't  
want to be intrusive. Here are the options as I see them:

	a. Don't do anything to notify the user.
	b. Just basic notifications, like Growl, in the upper-right when an  
update's installed. If you click a bubble, you see the release notes.  
This is hardly elegant. Maybe something a little more... Delicious?
	c. When you start the app, it says "Hey, this is a new version! Wanna  
see what's new?" and offers to show release notes. This is just as  
obtrusive as the current system, really. So probably not.

2. How does the prefpane get installed? Sparkle is so effective and  
ubiquitous now because users don't really have a choice: the app comes  
with Sparkle, and by golly, it's going to keep things up to date! If I  
switched to Growl's distribution method, I don't think nearly as many  
updates would actually get executed. Ideas:

	a. When an app that supports Sparkle is opened for the first time, it  
introduces Sparkle and offers to install it. This is rather obtrusive  
and inelegant, though it only occurs a maximum of once for the whole  
system. Also, if a user says "no", he doesn't really have a way to  
install it later. That's an issue.
	b. Option (a) but do it when the app quits for the first time. Then  
it's not so much in the way of actually doing things but it still  
generates the "argh no I said go away why are you doing things" anger  
response.
	c. Just install it. It's not like it's going to kill the user. The  
problem with this is that they may wonder how it got there or why  
notifications of app updates are appearing. Furthermore, they'll have  
no idea the prefpane exists.
	d. Option (c) with some kind of explanatory dialog on first open /  
quit.

The other problem with this is that even though Sparkle is system-wide  
under this mechanism, every app's still got to ship with and contain a  
copy of it for it to install itself. Kinda lame.

I could really use feedback on this, guys. Let's get creative!  
Especially on problem #1. I'm probably going to end up rewriting  
pretty much everything in the process of making it system-wide; I'll  
separate all the components so it'll be easier to support plugins /  
prefpanes / whatever, too. I'll try to do binary updates, and I'll  
merge in Sparkle+ stuff. It'll be great. If Caltech ever gives me a  
chance to breathe.

Wheezingly yours,
Andy Matuschak

PS: Great coats, sparkle.andymatuschak.org couldn't be uglier. Ideas?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.andymatuschak.org/private.cgi/sparkle-andymatuschak.org/attachments/20070804/3e10eb6d/attachment.htm 


More information about the Sparkle mailing list