[Sparkle] Thinking about unifying Sparkle...

Jerry Krinock jerry at sheepsystems.com
Sun Aug 5 16:36:19 PDT 2007


On 2007 Aug, 04, at 18:40, Andy Matuschak wrote:

> The user can roll back to any version still in the appcast through  
> the prefpane UI.

An unstated but desirable feature of the above is that the developer  
maintains control over the appcast and hence what old versions are  
still available.  I don't want users to have a selection of old  
versions on their drives.

> 1. What kind of interface is appropriate for notifying the user of  
> updates? ...
> 	a. Don't do anything to notify the user.
> 	b. Just basic notifications, like Growl...
> 	c. When you start the app, it says "Hey, this is a new version!...  
> This is just as obtrusive as the current system, really. So  
> probably not.

No, I think that 1(b) is most obtrusive, because it will happen at  
random times.  (How many users remember to squelch Growl as they are  
rushing to connect their Mac to a projector and begin a presentation  
that they just finished.)  I do not agree with John Gruber that  
launch time is a bad time to update.  My reason is that the user's  
attention is focused on the app at that time, and their mind will  
already be open to whether or not there is an important bug fix or  
new feature that they want immediately.  For large apps though, it  
would be nice if the new version were already downloaded and ready to  
go.

I would suggest that (a) be the default and (c) be available as a  
preference.  At this time, I don't want anybody ever using an old  
version of Bookdog for any reason, but someday when I start charging  
money for updates I'll have to allow (c).  I suppose I'll have to  
learn what a "poset" is too.

> 2. How does the prefpane get installed?

I think your option 2(a) is best.  Regarding the issue that...

> if a user says "no", he doesn't really have a way to install it later.

Well, you could provide an action for another menu item...
         Check For Updates (Sparkle Updater)
         Upgrade To Sparkle System-Wide Updater
That second menu item simply targets the first-launch new-user  
introduction action again, so you've got no additional code, although  
another "feature" to document :(   Looking at that first menu item,  
the reason why I added "(Sparkle Updater)" to the "Check For Updates"  
item is because, at this time, unless they read the credits, most of  
my users have no idea that I'm using a framework called "Sparkle".   
(They probably think that I'm as smart as you!)  So they need this  
label to give them a clue as to what the second item might do.

> 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.

Well, with a little more work, developers who want to trim the fat  
from their dmg can host the Sparkle System-Wide Updater as a separate  
download, downloaded as needed.

>

A few more comments:

* The proposed Sparkle System-Wide Updater is going to have to be  
solid and updates of itself must be backward compatible.  I don't  
worry about Sparkle now, because I have built, tested and shipped it  
in my package.  When it becomes a system component, I'll have this  
slight worry that I'm going to wake up one morning and find that an  
update of Sparkle System-Wide Updater broke my app.

* Are people still using things like Little Snitch?  If so, they'll  
have to be warned when this thing goes out looking for updates at  
random times.

* Apple's model (Software Update, iTunes podcast updates) is that the  
user has no control, and not even any view, of the time of day when  
"check for updates" happens.  So every now and then my son will be  
playing some online game, and he comes to me complaining that "My  
ping is up to 999.  Your %$#@! Mac must be downloading podcasts  
again!"  We're living with it, and apparently this is good enough for  
Apple, but realize that some people might like control over or at  
least visibility of the scheduled "check" time.

* Finally, in case anyone is interested in further reading, the 1- 
sentence comment by John Gruber which started this was made in  
reference to the following blog post by Chris Hanson.

http://chanson.livejournal.com/173526.html



More information about the Sparkle mailing list