HackerTrans
TopNewTrendsCommentsPastAskShowJobs

Sparkle: A software update framework for macOS(github.com)

208 points·by nateb2022·2 lata temu·122 comments
github.com
Sparkle: A software update framework for macOS

https://github.com/sparkle-project/Sparkle

127 comments

stevoski·2 lata temu
This makes me somewhat nostalgic for the days when I would regularly encounter software that used Sparkle for updates.

The days when I’d mostly use downloadable native software for my Mac.

The days when most of the software I regularly used had a somewhat consistent UX.
whalesalad·2 lata temu
I miss Adium.
Angostura·2 lata temu
I miss the world in which software like Adium was possible
parl_match·2 lata temu
It still is. Matrix, and other federated platforms, are exploding in popularity.

You could start here, if you are interested, to get a taste: https://matrix.org/docs/chat_basics/matrix-for-im/#creating-...
mirashii·2 lata temu
I don't think this is what was meant by Adium being possible. At its peak, Adium acted as a single frontend to many different instant messaging networks to provide you a single user interface for chat. Today, we've regressed to a point where this is no longer really feasible; every network requires its own client.
aesh2Xa1·2 lata temu
Matrix has bridges, which allow you to send/receive messages to other services like Slack or Discord.

https://matrix.org/ecosystem/bridges/
alexvoda·2 lata temu
Also, as a different approach, to some degree Ferdium can act as a central place for various messaging platforms even if the integration that Pidgin (and Adium) and libPurple provided is not possible this way. Station is similar and a bit better but is in desperate need of developers. Both are FLOSS.

https://ferdium.org/

https://getstation.com/
mrweasel·2 lata temu
Looking at the git repo, seeing the last commit being three years old is a bit sad. Someone sat down one day created a patch and committed it, and then they went away, to work on other things, leaving the git repository in a digital limbo.
eddieroger·2 lata temu
So do I, so often. I made an Adiumy animation pack for my university that actually got mildly popular, and it was amazing. Such a quality app, and so nice when communication systems were standards not apps.
xcrunner529·2 lata temu
Seeing Adium and the message themes is one of the big things that made me want a Mac believe it or not. It looked so pretty.
malermeister·2 lata temu
Well, they weren't really standards by design either, people just reverse engineered their protocols. One could still do that, it's just that... nobody does anymore?
koito17·2 lata temu
The countless matrix bridges[1] to Discord, Slack, WhatsApp, etc. that are actively maintained, together with dozens of Pidgin plugins[2] serving similar purposes suggests otherwise.

Granted, I don't expect Pidgin plugins to be well maintained compared to the Matrix appservice bridges. But still, there is at least one protocol that bridges to almost everything, and that's Matrix. For several years I used Matrix as little more than a glorified IRC and Slack client.

[1] https://matrix.org/ecosystem/bridges/

[2] https://pidgin.im/plugins/?type=Protocol
LoganDark·2 lata temu
Oh no, people have tried to reverse-engineer apps like Signal or Discord. The problem is that the company starts aggressively banning every user of the reverse-engineered clients, as well as mounting legal attacks on their authors.
koito17·2 lata temu
I still use Adium as an XMPP client. It has a fair share of bugs due to existing Cocoa APIs rotting, but it still works perfectly fine for the one XMPP server I browse (which has OMEMO encryption enabled!)
kergonath·2 lata temu
Indeed. That thing was a gem.
dewey·2 lata temu
Maybe I‘m weird, but for some reason seeing a Sparkle „Update available“ modal popping up fils me with joy (The software I‘m using is getting better) and I enjoy reading the changelog. If there’s some weird custom updater in another software it always fills me with dread because I have to navigate a different UI, and probably have to restart it immediately.
adamomada·2 lata temu
The modal popup is the single thing I can’t stand about sparkle updates. Why oh why can’t they use the regular notification system and respect DND. It always seems so random as well, it’s not when the application starts or quits, just some rando timer polling for updates to surprise me with an interruption I can’t ignore
veeti·2 lata temu
Nothing worse than starting iTerm and typing half a command when suddenly this thing interrupts you.
zZorgz·2 lata temu
Modern versions of Sparkle are a less random in when to show the update alert (lots of software, iTerm including, use ancient versions of Sparkle)

DND is not properly/reliably detectable for 3rd parties. Support for Notification Center is not well designed for a framework to control and works as an auxiliary/supplemental (not primary) functionality for 3rd parties, so apps themselves would have to opt into using it along with adding a lightweight UI indicator which may need to be tailored to the app in question.

Further support is available for apps to support more gentle reminders -- https://sparkle-project.org/documentation/gentle-reminders/ which is a mechanism that iTerm developer wanted but developer has other priorities.

Users can opt into automatically downloading/installing updates too which may minimize prompts
wingerlang·2 lata temu
I don't think that's weird, I enjoy those as well. So much so that I have a newsletter where I post changelogs of various apps that had updates in the past week (https://buttondown.email/appsandupdates). Adding apps is a slow process but I'm starting to see quite a bit of repeated apps so I'll have to speed it up.
eddi·2 lata temu
In the latest newsletter „Clean my Mac X“ is listed. I always assumed that this is some form of malware, because they advertise so aggressively. Does it really make sense to „clean“ your mac?
wingerlang·2 lata temu
It cleans it in terms of identifying large files, duplicate files/images, shows you caches for apps, uninstaller, which apps and files are old and never/rarely used. And so on. It's more of a convenience tool than anything. Don't recall other features.

I think there is a certain type of company that go for fairly generic(named) software with a lot of SEO and marketing to be able to earn a lot of money. I guess there is a venn diagram of malware creators where this applies too but I don't think they are.

They are also the developers behind SetApp. I mean, that's a pretty mainstream/famous app(store?) so they collaborate directly with loads of developers/companies to distribute their apps in SetApp. If that counts for something.
nth_order·2 lata temu
Agreed, their marketing can really sketch one out but CleanMyMac X is tremendously useful. I use almost every function it has once it a while. The app updater for example, it not only updates Sparkle apps but also lists outdated Mac App Store apps. The MAS itself fails to list those updates for some reason most of the time in its "Updates" pane.
dewey·2 lata temu
Is anyone really interested in reading the detailed changelog for apps they don't use?
wingerlang·2 lata temu
In practice it's more of a software discovery email, with the added bonus of knowing that they are being worked on actively, and finding out what sort of things they are working on at the same time. It's not really about "bug fixes and improvements" and I trim those out if I have time.
[deleted]·2 lata temu
longnguyen·2 lata temu
Sparkles is a godsend. I use it on all my indie apps and it saves so much time. The best part is I could release with confidence knowing that I don’t have to ask for AppStore Review for each release.

The new version with delta updates and flags for critical updates is amazing. 10/10
graemep·2 lata temu
Thanks for that. As someone who is not a Mac user, let alone a developer, was wondering why it is useful given app stores exist.
haqlootydoot·2 lata temu
*Sparkle. Please learn proper English.
LoganDark·2 lata temu
Username checks out.
markx2·2 lata temu
Caused me to remember Growl

https://growl.github.io/growl/
TheAceOfHearts·2 lata temu
Nowadays I just run `brew update; brew upgrade` and everything gets updated, including casks.
belthesar·2 lata temu
For us technology slinging types, homebrew is indeed great. Sparkle updates are indeed fantastic for the average user however. I think I'd be interested in learning how many average users install software outside of the Mac App Store these days.
hbn·2 lata temu
> I'd be interested in learning how many average users install software outside of the Mac App Store these days.

I'd hazard a guess that Chrome alone would put that figure near 100%
_joel·2 lata temu
I think you underestimate how many people use Safari.
bandergirl·2 lata temu
Nowhere near as how many people use Chrome obviously, even on Mac.
gzer0·2 lata temu
Data from analytics.usa.gov [1] reveals that Chrome leads browser usage at 48%, closely followed by Safari at 35.7%, highlighting the competitive proximity of Safari to Chrome. Definitely much higher share than I thought.

[1] https://analytics.usa.gov/
hbn·2 lata temu
Those would almost entirely be from iPhones where all browsers are technically Safari
LoganDark·2 lata temu
Not for long. IFF you are geographically located in the EU and using an iPhone (not iPad), you may one day have the option to use an alternative browser engine. You know, once browser vendors get around to making a version of their app that conforms to Apple's asinine requirements.

The whole malicious compliance shebang. EU mandates browser choice, so Apple implements new technological measures to ensure that browser choice will still not be offered outside the EU
bandergirl·2 lata temu
“Safari” doesn’t mean “Safari Desktop”. We’re talking about the Mac here.
philistine·2 lata temu
Homebrew has statistics. They're high for the usual suspects, very low for everything else.
ehutch79·2 lata temu
Real question; do you expect most, half, or even a quarter of MacOS users are going to be installing things through brew?
cqqxo4zV46cp·2 lata temu
Even 1%
Brajeshwar·2 lata temu
You might want to cleanup and call the doctor just in case. :-)

  brew update; brew upgrade; brew cleanup; brew doctor
jshier·2 lata temu
And no need for `brew update` unless you've turned automatic updates off.
anbotero·2 lata temu
It has a timeframe, though, so while it does automatically update every so often, it’s not every time you run `upgrade` or `install`, so running the `brew update` makes sure your OCD matches your needs.
anbotero·2 lata temu
Similar, just without the `doctor`. That one I only run it like once a month. For the other one, I got my alias, haha:

  buuc
bartekpacia·2 lata temu
I always do:

brew update && brew upgrade && brew cleanup && brew autoremove
asadhaider·2 lata temu
What about brew upgrade --cask for apps?
snorremd·2 lata temu
Exactly. It is so simple to do `brew install figma` or whatever App you want. Most bigger apps have ready casks to install. Then I have a startup job that does `brew bundle dump --file=- > $ICLOUD/Brewfile`. That way I get a backup list of all software installed with brew so it is simple to install again if I migrate to a new machine (without restoring a Time Machine backup).

Edit: Obviously for users not familiar with command line programs brew isn't that "easy". But for command line people this setup is quite nice.
zacte·2 lata temu
Raycast has an excellent extension to manage brew installs and upgrades without any cli on macs
Amorymeltzer·2 lata temu
Notably, many cask formulae use Sparkle as the livecheck mechanism that is used to find updates to casks.
Hamuko·2 lata temu
I've had to implement Sparkle once in a macOS app and it was actually quite simple. It also doesn't really take much more than an S3 bucket to facilitate updates. And as a user, it's a great user experience that updates are handled in a similar manner in almost all of the apps that I install.

Great piece of software.
Y-bar·2 lata temu
As a consumer of Mac OS software thank you! Seeing a Sparkle dialogue is such a nicety and it makes me feel good.
incanus77·2 lata temu
I used to author two indie Mac apps ~15 years ago, right around when Sparkle came out. It was a joy to add to my projects, a model to learn about great Cocoa framework programming, and still is always pleasant for me as a user. Huge independent success story on the Mac.
fifafu·2 lata temu
I have been using Sparkle in my apps for almost 15 years now (for millions of updates). It has always worked perfectly well for me. Really great project and still very active.
systemz·2 lata temu
I instantly recognized screenshot in README.md Thanks to this thread I now know name of software that helps bring updates to a lot of apps I use daily.

Big kudos to all contributors of Sparkle, you all make our lives easier!
ThePowerOfFuet·2 lata temu
The one and only. Everything else is garbage in comparison.
[deleted]·2 lata temu
hermitcrab·2 lata temu
I write software for Mac and Windows (in C++/Qt). I put each new release out as a separate application for the user to install. Is there some equivalent to Sparkle that runs on both Mac AND Windows, so I don't have to integrate a separate system on each OS?

Also I worry about update frameworks as way for bad guys to do bad things via my software. Should I be worried?
gwbas1c·2 lata temu
Windows installation system is so fundamentally different that it's hard to have a 1-size-fits-all update mechanism. When I shipped a cross-platform application, we used Sparkle on Mac, and a simple utility that downloaded and ran an MSI file for Windows.

In general, I wouldn't worry too much about Sparkle being a vulnerability. It requires that your download servers are hacked: https://9to5mac.com/2017/05/08/handbrake-trojan-mac-malware-...
hermitcrab·2 lata temu
Currently I used Inno Setup to create a .exe installer on Windows and DropDMG to create a .dmg image on Mac.

Presumably Sparkle and Winsparkle both use a similar update mechanism and that doesn't involve full Windows or Mac installers (otherwise, what would be the point?).
gwbas1c·2 lata temu
Sparkle works with a .dmg file, so you'd probably continue using DropDMG.

I can't speak much for Winsparkle; I remember looking at it and immediately concluding that it wouldn't work for us.

(FWIW: I ended up slipping in a few hacks so we could pop open browser windows on specific versions and commits, and even remotely kill them if needed.)
hermitcrab·2 lata temu
Ah, I see https://winsparkle.org/ is a thing.
Deadpikle·2 lata temu
There is one that is .NET and cross platform (incl. Linux) here: https://github.com/NetSparkleUpdater/NetSparkle (disclaimer: I am the primary maintainer of this repository).

For C++, WinSparkle works too: https://github.com/vslavik/winsparkle/
hermitcrab·2 lata temu
Presumably that means having to install .Net? I guess that makes sense if your software requires .Net, but mine doesn't.
simondotau·2 lata temu
Relevant and related is the free (donations accepted) program called Latest.app which scans your installed applications and summarises all apps which use Sparkle and have available updates. It's neat.

https://max.codes/latest/
sgottit·2 lata temu
huge fan and user of Sparkle. a while back I wrote a wrapper around it for automatically creating a changelog, signing software etc and its worked perfectly for years https://replay.software/bump
leovander·2 lata temu
Here's someone's write up on setting it up in their application. I think I found this in a previous thread about Sparkle.

https://troz.net/post/2023/sparkle/
daniel_sim·2 lata temu
as a user, I have always loved when apps use sparkle.
brainzap·2 lata temu
I once made a fork of it that used github releases for updates, I wonder if I still have it.
tomovo·2 lata temu
That would be interesting. I wonder if it could be used with an internal Gitea instance too?
watk·2 lata temu
This looks great. What would be the equivalent of this on Windows? It feels like everyone just invents their own.
marcellus23·2 lata temu
There's a version of Sparkle for Windows. I have no idea why apps don't adopt it.

I am constantly amazed and frustrated at how many apps I use on Windows have the following update process:

1. Pops up an alert telling me an update is available

2. I click a link in the alert opening my browser, taking me to a webpage full of links for different OSes and different architectures, which I have to search through to find Windows Intel x64

3. Wait to download the new version and then open it up

4. Spend 30 seconds clicking through a Windows Installer

Absolutely bonkers, especially considering some of these apps seem to release on an agile biweekly schedule. I usually procrastinate downloading updates because it's such a pain in the ass -- and that's not what you want your users to be doing.
daveoc64·2 lata temu
I tried looking for something like Sparkle on Windows a few weeks ago.

Now I know it exists - thanks!
jhfdbkofdchk·2 lata temu
Well, someone made something inspired by Sparkle for Windows, https://winsparkle.org
usrusr·2 lata temu
On Windows, chances are that once you have a working installer you will be so deeply stockholmed that the idea that updates might go any other way than through a future incarnation of that installer is completely alien to you.

That being said, I think the way sparkle (and winsparkle, see sibling) present themselves looks delightfully NSIS (the good parts)
marwis·2 lata temu
MSIX + scheduled task is the way

https://learn.microsoft.com/en-us/windows/msix/non-store-dev...

Or just publish to MS Store and/or winget.
[deleted]·2 lata temu
ptx·2 lata temu
Can you use MSIX without buying a code-signing certificate?
accoil·2 lata temu
I sometimes see Squirrel[^1] used in Windows apps. Looks like it's used by Electron[^2], so maybe that's why.

[1]: https://github.com/Squirrel/Squirrel.Windows/tree/develop/do...

[2]: https://github.com/electron/electron/blob/main/docs/api/auto...
Deadpikle·2 lata temu
Along with some of the other comments, there is NetSparkle for C#-based apps that is cross platform: https://github.com/NetSparkleUpdater/NetSparkle (disclaimer: I am the primary maintainer of this repository).
prmoustache·2 lata temu
Are you telling me macOS doesn't have a package manager already?
pantulis·2 lata temu
In terms of apps no, it doesn't or basically it is the Mac App Store. You basically publish your app with all the dependencies and target a specific OS version which guarantees certain baseline frameworks. Apart from that, any update means publishing a new version to the App Store (if you are there). If you are self hosting the app, you need something like Sparkle to trigger app updates.

In terms of proper package management a la yum or apt, there is homebrew of course.
haykuro·2 lata temu
I switched to MacPorts after becoming tired of Brew tainting my filesystem.

MacPorts keeps things clean in /opt/.

https://www.macports.org/

https://saagarjha.com/blog/2019/04/26/thoughts-on-macos-pack...
stadeschuldt·2 lata temu
Nowadays Homebrew keeps its stuff under /opt/homebrew/
Hamuko·2 lata temu
Only if you have an ARM64 Mac. x86 still use the old path.
jwells89·2 lata temu
I used MacPorts back in the 00s and early 10s but switched to Homebrew when it came out because it was less hassle.

Wanted to give it another shot with my latest clean OS install, but wound up installing Homebrew again due to broken packages on MacPorts. Probably should’ve tried to contribute by fixing those packages but didn’t have the time or mental energy available at that point in time.
pasc1878·2 lata temu
How is it less hassle.

Installation is similar just a standard mac install. apps are the same.

The only difference is that Homebrew gets confused if you install your code or another build in /usr/local oh and Homebrew forces you to use non standard permissions on /usr/local
jwells89·2 lata temu
Back when I switched, it wasn’t unusual for MacPorts packages to not compile for some reason or another, and at that point my skills in that realm were lacking which meant I had little ability to fix these issues, rendering its technical superiorities over Homebrew moot.

Homebrew was less hassle in that most of the time, it successfully installed things and when it didn’t, it was fixed in short order.

Since then I’ve become much more capable of diagnosing and fixing broken packages but it’s still not something I’d like to spend my time on if I can help it.
pasc1878·2 lata temu
Odd I have only had one or two Macports failures
prmoustache·2 lata temu
OK so basically the point is to avoid Mac App Store fees and independence to third party project like homebrew.

Doesn't that leads to the situation on windows where every single app is phoning home at startup?
masklinn·2 lata temu
Well the original point is that sparkle predates MAS by more than a decade, and the MAS limitations are a bigger issue than the fees.

> Doesn't that leads to the situation on windows where every single app is phoning home at startup?

Sparkle has a very clear and regular behaviour, its predictability and widespread use made it easy to manage.
madeofpalk·2 lata temu
As a more technical user who is aware of Sparkle, I recognise the Sparkle updater and I appreciate it. In fact, I miss this on Windows, where each app updates differently, and most will just throw you annoyingly to the install wizard all over again.
steve1977·2 lata temu
To be fair, Windows Installer can also handle updates (and patches). And proper uninstallation, which is something that’s missing on macOS.
prmoustache·2 lata temu
Thanks for the history lesson.
lapcat·2 lata temu
> Doesn't that leads to the situation on windows where every single app is phoning home at startup?

1) It's a setting/preference. The polite/respectful app developers will ask users whether they want to automatically check for updates.

2) It's periodic. Developers can set the default to whatever they prefer — daily, weekly, monthly, etc. — and again the polite developers may give the user an option here too.
pantulis·2 lata temu
You are correct. That's why Sparkle is still relevant these days and of course it requires the app to phone home.

Interesting things could happen with third party App Stores if they ever see the light in macOS.
madeofpalk·2 lata temu
What do you mean? There's already third party app stores on macOS. Steam and all the other gaming ones. Setapp is a more non-gaming one.
pantulis·2 lata temu
Thanks! I was not aware of those, go figure.

In that case I understand that Setapp can "phone home" and update the apps if necessary, not the apps themselves.
j16sdiz·2 lata temu
macOS app store mandates apps sandbox. If your app, for some reason, don't run in sandbox, you need to distribute it outside app store.
Hamuko·2 lata temu
Sparkle automatically limits update checking to once per 24 hours if that makes you feel any better.
alkonaut·2 lata temu
Usually the point of "software update frameworks" is to make the app phone home and check if there is an update isn't it?

I mean you can have an option to not make it check for updates if you want to provide a privacy option for people, but that just makes it a manual click-to-check-for-updates. Most people would probably leave the "check for updates on start" checked.

Can't see how that's a difference based on what OS you are on? I use Squirrel/Velopack (the equivalent for Windows I guess) and the usual way of managing updates is to have an update check at startup, or an interval (e.g. every hour).
prmoustache·2 lata temu
>Can't see how that's a difference based on what OS you are on?

I have been a linux and openbsd user for the most part of the last 3 decades with only short stints on windows in a professionnal setting or when fixing up my partner's issues and nearly 0 experience of macOS apart from launching it in a VM out of curiosity 3 times so I was genuinely surprised and not aware of potential restrictions of app store. I know on windows there is the microsoft store + chocolatey that can handle apps updates (and possibly other projects?).

I have had the occasionnal java app installed in /opt from a tarball or an appimage but for me apps individually phoning home is more the exception than the norm. I usually have one process connecting to n repos, n being less than 5 usually and usually only when I am querying it manually. In recent years on Fedora I've let gnome software app connecring automatically and I guess with some flatpaks installed I am querying 2 flatpak repos (fedora +flathub) more but that's about it and most of our distro packages have telemetry and users counts disabled.
alkonaut·2 lata temu
What I mean is: assume you use a software update system (Whether it's a "store", a "package manager" or just my own system I set up for one single app - it's irrelevant). The system needs to "phone home" to query what updates there are. There is no way around it. And unless you want to submit to a centralized store (Steam, a linux package repository, Windows store) then you are usually left to make the call individually for each app. And that applies regardless of OS of course. A self-updating linux app that dowloads its patch from acme inc is no different from the same app running under windows. It might be more or less idiomatic to do so for an individual app under different OS'es, but technically it's of course the same thing.
destitude·2 lata temu
It's just downloading an xml file to see if there is an update available.
masklinn·2 lata temu
And talking about “XML file” is obscuring it, an “appcast” feed is an RSS feed with a few extensions.
bluish29·2 lata temu
Many open source (and even proprietary apps) apps get published using homebrew casks [1]. Although they usually use that as supplementary method. And sometimes it is done by volunteers.

[1] https://formulae.brew.sh/cask/
TheAceOfHearts·2 lata temu
You can use homebrew to install regular apps as well, thanks to the casks feature. There's probably some apps that aren't available as casks, but usually everything I need is available already.
zitterbewegung·2 lata temu
Mac classic had full compiled applications that you would drag to your applications folder. This is the same when it's distributed by dmg and told you are to drag to the Applications folder and using Sparkle on this is a common method to update or to just give another dmg. Another way you can distribute your app is to use a dmg to with a pkg file in it and this launches an installation wizard very similar to what you would see on windows. Then there is homebrew that has a series of ruby formulas that can do nearly all of the above. Obviously there is the Mac App Store.
anbotero·2 lata temu
Not officially, but these days first things I setup in Onboarding documents (if they don’t have it already) is how to setup Homebrew.

I install pretty much everything I need on macOS through Homebrew these days.
api·2 lata temu
It has Homebrew, which many people use and is great. It also has its App Store but nobody uses it for anything non-trivial because it's so jailed.
favorited·2 lata temu
> nobody uses it for anything non-trivial

I guess the Microsoft Office suite, LibreOffice, Adobe Lightroom, Pixelmator, Sketch, OmniGraffle, etc. are trivial?
haqlootydoot·2 lata temu
Parent commenter is in the business of building fake open source (BSL) software. Take their opinion with a grain of salt.
bni·2 lata temu
Thankfully, it doesn't
apple4ever·2 lata temu
Love Sparkle! Both as a user and a developer of apps (I'd never sell in the Mac App Store due to Apple's consumer unfriendly policies). It works so well and is so easy to setup.
mahbran10·2 lata temu
freedomben·2 lata temu
(1)