-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sparkle claims 'You’re up-to-date!' when in fact the feed is broken. #1411
Comments
If there are no valid feed items in the appcast, it seems sensible to show an error. That could be due to some developer error, such as a wrong XML namespace declaration hiding all Sparkle elements. However, I'm not sure about doing something special (beyond printing a message in console log), when the feed contains some valid updates, and the app is newer than the newest app in the feed. This might happen if the feed is dynamically generated (e.g. staged rollout), or user has a prerelease version, or a release has been backed out, so it's not necessarily an error. "You're more than up-to-date!" is not clearly actionable. Users may not know what to do about it — is it bad that they have newer-than-newest version? Is that a suggestion they should downgrade? If they're not supposed to do anything about it, then it's equivalent to showing "You're up to date!" (i.e. everything's fine, do nothing). |
i think this is the only valid reason (i can think of) for the current behaviour, and thats exactly why i said there should be an option to revert to the current behaviour. since far less than 1% of apps are using staged rollouts, its not sensible to let those dictate the defaults.
as mentioned users running preprelease versions can probably understand a message that tells them what is going on, instead of wrongly claiming they are using the latest official version
if the user is running a release that has been recalled its especially imporant to let him know this!
i never claimed it was an error, but its something we should communicate clearly instead of stating wrong facts
that message was meant as a placeholder, we could put anything there that communicates the facts in a clear way |
There are so many reasons, enumerating them all ought to be confusing. Hinting vaguely that there might be a problem is going to frighten users. I guess the best would be something along those lines:
Would that be enough? |
that sounds perfect! |
should i send a pull request for this? ;-) |
Yes, please. Keep in mind translations. We need to keep them working somehow. |
ok thanks, might take a few days or weeks but i'll try to send a PR |
This is a great idea. Here, take some motivation and encouragement: 🌟 I am puzzled by the "You're up to date" message when in face my feed wasn't downloaded at all from time to time, too, so this'd be very welcome. |
I proactively opened #1429 to track translation progress. Hope that helps! |
Provide fix for issue sparkle-project#1411
This is not a bug report, but i want to encourage discussion of Sparkle's default behaviour of lying to its user and to developers alike. I'd like to believe this was a conscious design-decision but i think the negative sides far outweigh the positive ones and i believe the current implementation has led to the fact that (Sparkle) auto-updates are just plain broken and not working in a large number of apps.
Currently Sparkle works like this - you click 'Check for Updates' and there are 3 cases:
• there was an error loading the feed at all, which leads to an error message (good!)
• the feed was loading fine, and Sparkle found an update (even better!)
• the feed was loading fine, but Sparkle did not find find a version that is newer than the installed version in the feed. now this case is where the problems start. in this case Sparkle will always throw up a dialog 'You’re up-to-date! AppName x.y.z is currently the newest version available.' however, in 2 out of 3 options, this message is actually a lie. lets examine these cases:
1.) the installed version is actually identically to the newest version (found in the feed). this is good and actually the only case where Sparkle isn't lying.
2.) the installed version is actually newer than to the newest version (found in the feed) - i.e. the user has a beta version installed that is not yet official. claiming that the user has the latest version is wrong - he actually has a newer version. the facts should be stated as they are.
3.) Sparkle thinks the installed version is newer than the newest version because the feed is broken. technically this the same case as above (the installed version is numerically newer than feed version), however the cause is a different one: the user does not have something newer-than-the-latest installed, but the feed is just plain broken and all versions numbers listed in the feed are actually numerically lower than actually released versions. if you think this is implausible, see the last-most section.
why is lying in these cases bad? as developers we all know that lying to the user is often a good idea, especially when situations are too complicated to explain or do not concern the average user anyway.
• if the user has a beta version that is newer than the latest official version, he'd surely understand a message like "You're more than up-to-date! You have version a.b.c while the newest official version of 'AppName' is still at x.y.z".
• if the feed is just plain broken, this is were the real problem is at. if any user, regardless of the installed version will always get the 'You’re up-to-date!' message, and not notice any problem that they could communicate to the developer. due to this message the developer themselves will also never notice any problem. i have the distinct impression many developers test their update, check for updates, and if they get the "You’re up-to-date" message, they think their feed is fine and move on. but due to the behaviour mentioned above they didn't actually test anything.
is this actually a big issue? actually i think it is. we've had a look at many thousand sparkle feeds. obviously many of them are outdated or not in use anymore. but many of them are just plain broken in a way that makes each version in the feed technically lower than the actually releases versions. some developers mix up the sparkle:version and sparkle:shortVersionString tags. some don't get the fact that the sparkle:version needs to correspond to their BundleVersion. some don't get the fact that 'sparkle:version' needs to be a simple integer that numerically increases for every version. some put strings in there! some put mixtures of both BundleVersion and ShortVersionString in there, probably even separated by parentheses. i've seen every error you could possibly imagine (and then some!) being actually made. and i claim that the fact that the feed never actually worked went unnoticed because of the mentioned default behaviour that i want to put up for discussion here.
in summary, i think the current behaviour is harmful to developers, users and the Mac software ecosystem at large. i suggest properly reporting the facts if the installed app version is newer than the newest version found in the feed. this will allow users and developers to notice broken feeds, making sure more users are actually up-to-date instead of unknowingly being exposed to old versions (and all the security problems that entails).
The text was updated successfully, but these errors were encountered: