Verification
Provide a detailed description of the proposed feature
I'm filing this as a feature request rather than a bug report because it's not a bug as such, more an unfortunate sharp edge case in the design of an existing feature.
The new cask upgrading behaviour introduced in #21882 has an undesirable interaction with casks that have paid upgrade licenses. There are two forms of this:
- When you buy a license, you get access to the current version and all versions released for a certain time period—usually a year. After that year, future versions require a paid license extension. Examples from my system:
moom, arq.
- When you buy a license, it is valid for that major version, but future major versions require an upgrade license. Example from my system:
a-better-finder-rename.
The problem is that brew doesn't know about these licenses, and brew upgrade will happily overwrite a fully licensed local copy with a later version that only runs in demo mode. Since there is no way to pin casks, this effectively breaks brew upgrade since the only way to prevent the overwrite is to manually cherry-pick which casks to upgrade.
What is the motivation for the feature?
Software upgrades shouldn't cause invisible functionality breakage. In-app Sparkle upgrades will at least warn the user before upgrading to an unlicensed version, if not redirect them out of the upgrade flow entirely.
How will the feature be relevant to at least 90% of Homebrew users?
Not applicable.
What alternatives to the feature have been considered?
The old auto_updates behaviour wasn't great (and I'm not advocating going back to it, I think the new behaviour is mostly an improvement) but it did have the advantage that users would hit the in-app license purchase flow if they tried to upgrade to an unlicensed version.
Adding cask pinning would definitely be one option for making this less destructive.
Verification
brew install wget. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.Provide a detailed description of the proposed feature
I'm filing this as a feature request rather than a bug report because it's not a bug as such, more an unfortunate sharp edge case in the design of an existing feature.
The new cask upgrading behaviour introduced in #21882 has an undesirable interaction with casks that have paid upgrade licenses. There are two forms of this:
moom,arq.a-better-finder-rename.The problem is that
brewdoesn't know about these licenses, andbrew upgradewill happily overwrite a fully licensed local copy with a later version that only runs in demo mode. Since there is no way to pin casks, this effectively breaksbrew upgradesince the only way to prevent the overwrite is to manually cherry-pick which casks to upgrade.What is the motivation for the feature?
Software upgrades shouldn't cause invisible functionality breakage. In-app Sparkle upgrades will at least warn the user before upgrading to an unlicensed version, if not redirect them out of the upgrade flow entirely.
How will the feature be relevant to at least 90% of Homebrew users?
Not applicable.
What alternatives to the feature have been considered?
The old
auto_updatesbehaviour wasn't great (and I'm not advocating going back to it, I think the new behaviour is mostly an improvement) but it did have the advantage that users would hit the in-app license purchase flow if they tried to upgrade to an unlicensed version.Adding cask pinning would definitely be one option for making this less destructive.