I think semantic versioning actually predates distributions. It just was not called "semantic versioning." It was called Unix shared library versioning.
Imagine a world where every library and every package has their release date as their version. You'd instantly know which software lacks maintenance or updates (bitrot).
To me it seems more attractive than how Nix does it, but I guess they considered such and saw conflicts, therefore went with hashes.
How do you know if 12345 is a patch for 432 released years ago or a major upgrade from 12344 released a moment ago? Pure time versioning doesn't work with multiple release streams.
Recently in the python ecosystem the `uv` package manager let's you install a package as it was on a certain date. Additionally, you can "freeze" your dependencies to a certain date in pyproject.toml. So when someone clones it and installs dependencies it will install it at the date you've chosen to freeze it at.
Personally I love this method much more than versioning.
I think versioning is mostly useful to just talk about software and maybe major major additions/changes e.g io-uring shipping with linux mainline.
Fnoord|1 year ago
To me it seems more attractive than how Nix does it, but I guess they considered such and saw conflicts, therefore went with hashes.
tremon|1 year ago
viraptor|1 year ago
porridgeraisin|1 year ago
Recently in the python ecosystem the `uv` package manager let's you install a package as it was on a certain date. Additionally, you can "freeze" your dependencies to a certain date in pyproject.toml. So when someone clones it and installs dependencies it will install it at the date you've chosen to freeze it at.
Personally I love this method much more than versioning.
I think versioning is mostly useful to just talk about software and maybe major major additions/changes e.g io-uring shipping with linux mainline.
the_gipsy|1 year ago