Reasoning behind vendors being sticky in zypper

Hi

So I know you can change it, but presumably there was some thought that went into the decision for zypper to avoid changing vendors by default. Naïvely it makes sense to just always have the most up to date packages available wherever they’re from, but before I do anything I’m just wondering if there is some glaring negative reason not to do this that was the reason for the default existing in the first place.

It is to prevent (as the name says) that a package permanently changes betewen different sources. If you would have as example package “Blub” available from 5 different sources, without vendor stickiness, it would always install the highest available version from whatever source. But as package “Blub” may have different build flags/dependencies enabled on each source, it is better to stay one one source or you may run into incompatibilities/issues.

From:
https://en.opensuse.org/SDB:Vendor_change_update

Advantages of vendor stickiness:

  • You don’t risk accidentally replacing stable versions of installed packages with experimental versions from a different repository when updating.
  • You won’t risk packages ping-ponging between different repositories every time you update, when the same package exists in more than one repository.

I think you make an error here. Because you might want the “newest”, but what is the newest? The string that signifies the version might be composed different by different vendors. Thus it is never guaranteed that a string that might sort by alphabet (ASCII) as being “higher” means that the package has a newer version.

As @hui explains, when I decide that I prefer a product from a particular vendor above the same product from other vendors for some reason (a specific builtin feature, better support, whatever), I of course want to stick with it and only want updates from that vendor.
Also, I probably do not want a product that I have from openSUSE be replaced by an update from another vendor from who I happen to have a repository active from for some other product. It must stick to the standard openSUSE (OSS) repo.

Because if you installed a package from the specific “vendor” instead of the package provided by the standard repositories this package must offer something the standard package does not have. In which case you most certainly do not want this package to be (randomly) replaced by something else.