Yeah but think of it from an (Linux OS) maintainer perspective: if you don't have a supported way to install parallel versions of the same package, you're stuck creating it under a new name (e.g., request999) because packages won't update.
This is the solution in, e.g., Fedora where "junit" means junit4 and "junit5" is a separate package. Over time, junit might become deprecated and be removed from Fedora when all deps have moved on and junit5 takes over the junit package name, perhaps a junit6 will emerge. Or junit4 gets recreated for the last two legacy apps using junit to live on.
Who knows! But from a maintainer perspective, better to have a separate name than a new breaking version... :-)
Who said anything about linux packages? this is NPM.
I'm a library maintainer, and it doesn't make any sense to me to create totally different packages with different names just to handle a breaking change. This is what semantic versioning exists for.
This is the solution in, e.g., Fedora where "junit" means junit4 and "junit5" is a separate package. Over time, junit might become deprecated and be removed from Fedora when all deps have moved on and junit5 takes over the junit package name, perhaps a junit6 will emerge. Or junit4 gets recreated for the last two legacy apps using junit to live on.
Who knows! But from a maintainer perspective, better to have a separate name than a new breaking version... :-)