Open frgomes opened 6 years ago
I vote for semantic versioning.
The only argument I see in favor of other schemes is basically marketing. Let's suppose that we release every 6 months. Let's say that next release is 2008.10. If that is the case, nothing prevents us from creating a metapackage which unites all concrete packages, whatever versions they are. This way, we keep semantic versioning, which is good for computers, whilst we expose some YYYY.MM, which is good for humans.
+1. I've been meaning to discuss this with folks for months. I agree that we should move past date versions and switch to semver.
There are some practical issues to discuss through. For some repos, it might make sense to follow react-js
and react-native
major/minor versioning. We could match the relevant repos to the versions of react
they support.
Could that sort of a scheme help users match up the react
versions with sri
.
Let's suppose that we have several repositories, like ios, android, web, etc... which is really the case at the moment. Each repository has it's own, independent, versioning.
Now let's suppose that a certain repository should is in transition from react-native
X to Y. We would like to release something in 2018.10 which supports X and Y, and we are working on a distinct release candidates for X and Y, I mean: X is at RC3 and Y is at RC1.
So, nothing prevents the following scenario, where we are working on both X and Y at the same time, for multiple repositories:
Then we have a metapackage (possibly provided by repository sri
) which contains two branches:
This way:
react-native
: it's the X
or Y
in the version.react-js
to this equation. The same way you can have X and Y for one purpose, you could have A and B for another purpose. Just add more elements after the 3 groups of digits of the version.According to http://semver.org, whatever follows the 3 groups of digits is user defined.
Discussion
The article below discusses lots of aspects of Semantic Versioning. From the perspective of automation, it seems clear to me that it's the way to go: there are several libraries which implement the tenets involved in this matter. However, from the human perspective, the matter is debatable. The section I point out in the link below discusses some of these human factors. https://en.wikipedia.org/wiki/Software_versioning#Dropping_the_most_significant_element
The arcle below can be seen as a detailed study of the human factors pointed above. It's worth reading in full. http://dafoster.net/articles/2015/03/14/semantic-versioning-vs-romantic-versioning/