-
-
Notifications
You must be signed in to change notification settings - Fork 134
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
Allow option to remain on v2 branch when checking for updates [enhancement] #962
Comments
Hey @stevenya97, thanks for the feedback! I definitely agree that this is a usability issue. I've been thinking and researching a bit on how to solve this. I think, simply adding a toggle into the app that says "Update to Mac Mouse Fix 3 and above" would be fine, but I thought maybe I could do it in a different way. In the following text I'm just sort of explaining / exploring these ideas. It might be a bit much, but in case you're interested to read it, I'd be glad to hear any feedback on it! So let's say we're a user of Mac Mouse Fix, and we're on version 2.1. Let's say the latest 2.x version is 2.4, and let's say the latest available version overall is 3.3. -> So now we have an example scenario which we can use to explore the concepts. We call the leftmost part of the version number the major version. So since we're currently on 2.1, we're currently on major version 2. Since the latest available version overall is 3.3, the latest available major version is 3. When the app checks for new updates, it uses certain logic to decide which update (if any) to present to the user. Let's call this logic the 'updating logic'. -> Now we have a the terminology to explore the concepts. The current 'updating logic' of the app is very simple. It simply checks for the latest available version of the app. If the latest available version is newer than the current version that the user is using, then the app will prompt the user to update to this latest version. The problems with this simple updating logic are:
So to address these issues, (without introducing any new toggles in the UI - not totally sure if that's the best priority to have here), I thought we could do the following:
The problem with these changes is that it would be somewhat inefficient and cumbersome to people who want to update to the newest version immediately. If we implemented both of the discussed ideas, then someone on version 2.1 who wants to get the latest version (3.3), would first update from 2.1 -> 2.4 (the latest 2.x version), then they would update from 2.4 -> 3.0 (the initial release of major version 3), and then finally, they would update from 3.0 -> 3.3 (the latest version of the app overall.) So in the worst case, that would be 3 instances of downloading a copy of Mac Mouse Fix, just to get the 1 copy that the user actually wants to use - the latest version (3.3). However, that's just the worst case scenario, which wouldn't happen often. (Only in some cases when updating to a new major version) And the upside is that the updating process would be more flexible and transparent to the user, without adding any extra toggles in the UI. ... hmm now that I think about it. I think these 2 ideas that I described here shouldn't really be applied to all major version changes. I think we could summarize that these two ideas we described above make the updating process more cumbersome in favor of allowing the user to flexibly avoid the next major version (while keeping their current major version up-to-date) and while making it more transparent to the user what changes the next major version brings. I think this is only really useful to the user, if the new major version has some major downside/caveat. For example, this behaviour would have been appropriate for the change from MMF 2 to MMF 3, because MMF 3 is a paid update - that's a major caveat for users that they probably want to be aware of and possibly want to avoid. But for non-paid updates (even if it's a new major version), the update is usually kind of a no-brainer, because the app generally gets better, and there's generally no downside to updating. But I think if we implemented the 2 ideas described above for any paid updates of Mac Mouse Fix, that would make sense, and be a pretty nice user experience I think. The thing is just that I don't know if there will be any paid updates after MMF 3. I don't plan to have any more paid updates and I'll try to avoid it if it's financially feasible - which I think it will be. So I'm not sure if it's worth spending much time trying to implement this stuff just for Mac Mouse Fix 2.2.5? |
Hey there, thanks for your insights and perspective!
Since version 2.0.0, the app uses the Sparkle udpating framework for updates. There is a branch of this repo called When the app starts up, it downloads this rss feed and then the Sparkle framework searches the rss feed for any updates that it might want to present to the user. Currently there are two different 'appcasts'. One for only stable versions, and one for all versions, including prereleases. It would have probably been feasible and useful to create a new set of appcasts for MMF 3. That way we could freely control, which updates MMF 2 users see vs which updates MMF 3 users see. However, since MMF 3 is already released for a few months, I don't think it's easy to adopt something like this for MMF 3 at this point. But I'm not sure.
Do you have anything specific in mind about how you would change the UX for paid users vs free users?
We could probably autogenerate a scrolling list of all update notes, and show that in the update window. This would surely be a nice UX, and I don't think it would be too hard to maintain. But I don't think this solves one of the core issues I was trying to address: The (original iteration) of the 3.0.1 and 3.0.2 update notes already contained pretty prominent links to the 3.0.0 update notes. But still, many people ended up being surprised and upset about the changes in MMF 3.0.0 (specifically the monetization). I think it would be best if users could read "MMF 3+ is no longer free" right when the update window appears. It should be really hard to miss. If they have to click a link or scroll down, I think it might already be too hard to miss.
I added this info recently, as a response to several people being confused. Originally, there was just a link to the 3.0.0 update notes, and many people were confused. I think the info as it's presented now might be clear enough, but I haven't received any feedback on it. Also theoretically, for every new version of MMF I release, there could always be someone who is updating from MMF 2, so I feel like I would always have to include these notes on the pricing changes at the top for all update notes, to do right by MMF 2 users. It would be better, to either build some extra logic into the update notes, so that only MMF 2 users get an extra warning about the pricing changes the top of the update notes. However, I've only enabled javascript for the update notes with 2.2.4, and javascript would be necessary to implement something like this. Alternatively, we could always have users update to the first version of a new major release. So if you're on 2.2.1, the app would present you with the 3.0.0 update, instead of immediately showing you the 3.0.2 update. This way, only the 3.0.0 update needs to contain info about the pricing changes, and everyone updating from MMF 2 would see those 3.0.0 update notes.
Thanks for your perspective. I definitely prefer the user experience of lifetime licenses. So far it seems like this will be financially viable. But if it's not financially viable anymore, then I think I might adopt a similar system to Bartender, where some major updates are paid updates. It seems like the most user friendly way to get some recurring revenue from existing users.
I'm glad you like the app! :) And thanks for your feedback. It has definitely helped me think about this problem. Yesterday I even tried to implement a solution based on our ramblings: |
Solution ImplementationYesterday I spent some time to implement new custom logic for choosing which update to present to the user in the
Note that none of these points covers the idea I described in the original comment where we would always prioritize free updates. I don't think implementing this behaviour is necessary, since the user can simply opt out of any major version updates, and instead keep receiving minor patches instead. And since all paid updates are also major updates, this should cover the same usecase. (All paid updates are also major updates, but not all major updates are also paid updates.) So how this logic would play out in practise is the following: Let's say we applied this logic to all currently published versions of Mac Mouse Fix. After opening MMF 0.9, it will present you with the 1.0.0 update. If you accept, the app will restart and MMF 1.0.0 will open up. After opening, it will immediately present you with the 2.0.0 update. If you accept and restart, the app will then present you with the 3.0.0 update (with the update notes prominently stating that MMF 3 is no longer free, but you can keep using MMF 2). Then, let's say you decide that you want to stay on the free version (MMF 2), and therefore you skip the 3.0.0 update. Then, immediately after that, the app will prompt you to update to version 2.2.4 instead - the latest minor update to MMF 2. Then, in the future, if MMF 2.2.5 releases, you will be prompted to update to 2.2.5. You could then skip 2.2.5, but you'd be prompted to update again, once 2.2.6 releases. However, you wouldn't ever be prompted to update to any new major version of the app like MMF 3.0.0 or MMF 4.0.0 etc. That's because, when you skipped the update to the next major version (in this case MMF 3) the intent of that is understood as "I want to stay on the current major version - MMF 2". You can also reset your skipped versions, by turning automatic updates off and on again. Here's a screen recording to demonstrate how it would look in a common scenario: Screen.Recording.2024-05-21.at.11.12.17.movIf you have any feedback on this, please let me know! Do you think you would like using the system? Any problems you could think of? If this is too much, please just ignore this, I also totally understand that! |
Description
With the new v2.2.4 update, it seems currently v2.2.3 is stuck with only upgrading to v3 via the 'check for update' modal. Would be great if there was a setting/change to include/exclude major version upgrades. i.e. v2.2.4 can smoothly update to v2.2.5 without needing to visit the github repo.
Rationale
Only way to get the new v2.2.4 update it seems is to visit the github repo. Some apps have the option to select between checking for 'all versions/branches' and the 'current branch'. This makes sure that any important updates are still delivered to users regardless of which version. I imagine the percentage of users who regularly check the repo releases page compared to overall users is not as high.
Additional info
Thanks again for keeping v2 updated with the launch of v3!
The text was updated successfully, but these errors were encountered: