Switch to semantic versioning and make the next feature release a 25.1.0 #299
Replies: 5 comments 14 replies
-
@X11Libre/wranglers What do you think? |
Beta Was this translation helpful? Give feedback.
-
With this example, if It looks like it would be unnecessary to release a |
Beta Was this translation helpful? Give feedback.
-
Tracked in Use Semantic Versioning instead of 25.0.x.x · Issue #646 · X11Libre/xserver. |
Beta Was this translation helpful? Give feedback.
-
@metux @callmetango Then 25.1.0, ... 26.0.0, ... will proceed according to semantics versioning, with bugfixing balanced with adding new features. |
Beta Was this translation helpful? Give feedback.
-
Resolved by resolving Use Semantic Versioning instead of 25.0.x.x · Issue #646 · X11Libre/xserver. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Describe the idea
We should switch to Semantic Versioning as very soon as possible and release the next version not as
25.0.1.0
but25.1.0
.It should be done because
At the moment the XLibre project is using a versioning scheme with
25.0.
for the major version which is quite uncommon and has to be explained most of the time instead of just being used. On the "outside" this project is perceived to be "infantil" due to assuming that we are still far away from a stable out-of-beta 25.1.0 release - judging by the version number.Regarding the tagging of the driver versions there are also for example some issues open which cannot be resolved without prior communication and involving @metux. Not meant to be mean, but just unsure what the next version label was. Also for another example running
X -version
returns version number25.0.0
regardless of any last number increments like in25.0.0.7
. Having a look at the Liberated Screens · X11Libre · Discussion #211 it is also obvious that this scheme is quite easy to confuse.In contrast, Semantic Verisioning is a very simple, but also very effective and very widely accepted versioning scheme. Quoting the summary section of the specification‘s website:
Given a version number MAJOR.MINOR.PATCH, increment the:
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
In addition there also are some rules for alpha and beta release versions which we could utilize to implictly communicate the scope and stability of our releases.
By switching to Semantic Versioning we can reduce the communication overhead quite a lot. Every packager out there will understand whether the version brings some incompatible API changes, new features or "just" some bug fixes.
Using it throughout the whole project for e.g. versioning milestones, the XLibre contributors and maintainers will also know what to expect. Assigning milestones to feature requests or bug reports will be simple and intuitve by just answering the question "Breaking change or new feature or bug fix?".
Adressing the Current Versioning Scheme
I don‘t know why a four number versioning scheme was chosen, but I know that one has to read the
25.0.0.0
as250.0.0
. This is quite unusual and has to be explained to everybody as mentioned above. But we can do better in the next major = minor release of XLibre. Here is how:Following the four number versioning scheme, the next minor would be
25.0.1.0
. Breaking out of it would require us to increment the „major“ number25.0
to25.1
. And bahm, there you have it! Release25.1.0
. We just have to declare us breaking the version scheme, get rid of the fourth number and stick to Semantic Versioning for the future, fun and profit.AFAIK one of the very rare changes needed would be to adjust the modules path from
<prefix>/lib/xorg/modules/xlibre-25.0/
to<prefix>/lib/xorg/modules/xlibre-25/
. However, since25.1.0
is a major version according to the old versioning scheme, which entails a change to the API, this would be acceptable and the drivers would have to be rebuilt either way to align to the new versioning scheme. If this was not an option, we could also patch the loader to look for modules in<prefix>/lib/xorg/modules/xlibre-25/
as well as<prefix>/lib/xorg/modules/xlibre-25.0/
and declare the latter one as legacy.What are the alternatives?
Keep the current versioning scheme and explaining it but what for?
Additional context
No response
Extra fields
Beta Was this translation helpful? Give feedback.
All reactions