[DISCUSS] JanusGraph versioning
I would like to start a discussion about JanusGraph versioning.
Right now we have the next versioning:
<GA indicator?>.<features and breaking changes>.<patch>
So, for GA indicator we always have `0` and as far as I know we were waiting for JanusGraph to be stable to increment JanusGraph to 1.0.0 version.
That said, I'm not sure how exactly should it be considered as stable.
It was quite some time for JanusGraph to be used in production by many companies.
We could think about stability as:
- JanusGraph has been used in production for some time.
- There are no breaking changes for some time.
I think we meet the first case. I.e. JanusGraph is used in production but I'm not sure about the second option.
We do have breaking changes often but mostly they are related to drop of support for EOL versions or driver upgrades. I guess, we will have such breaking changes continiously because the support for old drivers will be dropped and new drivers will be supported. Thus, such breaking changes are kind of natural thing I guess.
I guess, bigger breaking changes are those, which influence storage layer (i.e. data). Last time we had such breaking changes was in 0.3.0 release (that said, they were very small and easy to be upgraded). So, if we count only such changes where you can't easily upgrade JanusGraph because you have data in old format - we meet second option as well in such situation.
In case we consider JanusGraph to be stable enough, should we upgrade it to 1.x.y version?
If we upgrade it, should we start following something like semantic versioning for all future versions (https://semver.org/) or should we think about different versioning / keep current versioning?
When should we upgrade JanusGraph to 1.x.y?
Should the first version `1.x.y` keep current `x.y` or reset it to `0.0`? I.e. should the first version be `1.7.0` or `1.0.0`?
My thoughts on the above questions are:
- We can consider JanusGraph to be stable enough
- After the upgrade it would make sense to start using the same version number as in semantic versioning (i.e. MAJOR.MINOR.PATCH).
- I guess we could do it on the next release after 0.6.0 but we potentially could rename 0.6.0 to 1.0.0 or 1.6.0 versions as well. I don't have good thoughts on that yet.
- Both 1.0.0 and 1.7.0 / 1.6.0 are good to me. I don't have good thoughts about it yet as well.
To be clear, I'm not insisting to bump JanusGraph to 1.x.y version immediately. What I wanted is to start a discussion about it to see other thoughts.
1.0.0 sounds good to me. Maybe we can target 1.0.0 after this 0.6.0 release. I think we'd better not rename the incoming release from 0.6.0 to 1.0.0, because it contains many new changes and may take some time (+ bug fixes, if any) to get stable. I would rather see a stable 1.0.0 release with few new features than an unstable one with many new features.