Moom's cask can convert paid users into demo users without any warning #7022
Output of
|
Replies: 4 comments 9 replies
|
Updates to the cask definitions don't happen on the user device, they happen in CI in https://github.com/homebrew/homebrew-cask. So I don't think we can do either of these things. Is there no way for the app to check if it was paid or not? |
|
Ah, OK, thanks, now I understand. It's the same file for paid and free updates, we key everything off the date in the appcast and the user's license purchase date. And while removing it seems like an easy fix, the problem is that there are clearly people who rely on it; I hear from only a small percentage each time we do a paid update. So removing it would upset a lot of people who are using it and understand its limitations. Showing my lack of knowledge of how casks work (I'm the non-programming half of the company), is there no way to insert a one-time warning about possibly converting a paid app into an app in demo mode? Like when the cask is first installed, or run for the first time? I'd hate to see it go away, but I don't like dealing with upset users over something we don't control. |
|
The cask simply installs the DMG published at |
|
I imagine those apps simply don't show paid updates in Sparkle, so you never see them, so you can't lose your functional app? Otherwise, you'd still be replacing a paid app with a demo app, and wind up just like Moom users. This is how, for instance, CarbonCopyCloner does it: Free updates show in Sparkle, paid updates are a different upgrade path. Our model is different, as it's not based on version numbers, but when a user last paid. We have done away with "major updates," so there's never a Moom 5 that will cost just because it's 5 not 4. It's just a matter of how much time has passed since you last bought an update. Our licensing does survive app udpates intact—the license files are all still there—but because the app has been replaced, that license is now in demo mode for users who last bought an update more than a year ago. There's nothing we can change on our end with "Moom's licensing implementation" that would change that. I think the bigger issue is that this model simply doesn't work well with homebrew. The historical case for most developers was that if it was in Sparkle, it was free, so it should be installed. But times have changed; many devs have moved to pure subscriptions, which we had no interest in. But we hated the "major release coming, must hide/hold features" that we put our customers through (and the stress it induced on our end), so now you buy the app once, and pay for another year of updates once your included year has expired. If you don't want to pay, you don't pay, and the version you have keeps working. There are other apps that use the same model: Nova, DEVONthink, BetterTouchTool, BetterDisplay Pro, and CleanShotX amongst others. Our Sparkle appcasts show all available updates. Any given update will be free for some users, and paid for other users. (Other developers may do this differently.) That's the part of the model that the cask can't support—it just installs anything newer than what the user has already installed. If the cask can't account for the possible "now a demo user" result by warning a user in advance that it might happen, then I don't know what else to suggest. I guess those that use the cask will just have to understand that they'll occasionally wind up with Moom running in demo mode instead of using a fully-paid Moom. If/when they contact me, I'll send them some boilerplate on what caused the problem. -rob. PS: As an unrelated aside, the |
Updates to the cask definitions don't happen on the user device, they happen in CI in https://github.com/homebrew/homebrew-cask. So I don't think we can do either of these things. Is there no way for the app to check if it was paid or not?