Upcoming OgreNext versioning scheme change

Discussion area about developing with Ogre-Next (2.1, 2.2 and beyond)


Post Reply
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Upcoming OgreNext versioning scheme change

Post by dark_sylinc »

I've been discussing it in the Github ticket but I wanted to bring it here because that's where our regulars are.

The TL;DR is that we're going to be making the following changes in OgreNext:

  • Next Ogre Next release will be 3.0 instead of 2.4

  • Follow a modified version of Semantic Versioning (MAJOR.MINOR.PATCH) where:

    • PATCH can only be bumped as long as ABI compatibility remains 100%.

    • MINOR bumps as long as API compatibility stays >= 95% for all components and plugins, according to abi-compliance-checker. Measured against MAJOR.0.0

      • This is not strictly in compliance to SemVer, but stays close to its spirit

    • MAJOR bumps when API compatibility is < 95%. Although MAJOR can be bumped even if compat >= 95% at the dev's discretion.

As a result the following would be achieved:

  • Patch +1 bumps can be release for hot fixes. Bugs that are easy to fix without breaking ABI and deploy everywhere.

  • Minor +1 tells our users upgrading is painless. A recompilation is necessary. Build errors may appear, but they should be very quick & easy to fix.
    Projects like Ignition which have strong ABI requirements can leverage whether to move to Minor+1 if they have to when a certain bugfix is too important and can't be done without breaking OgreNext's ABI.
    Main focus for minor bumps will be for fixing bugs that can't be or are too hard to fix without breaking ABI.

  • Major +1 tells our users to prepare for larger upgrading efforts. Although not necessarily too large if we release more often.

This is similar to Ogre's recent version change to SemVer where Ogre jumped from 1.12.x to 13.x; although Paroj is following SemVer rules strictly (i.e. MINOR bump +1 when API compatibility >= 95% is not really SemVer).
That made the most sense since bumping 1.12 -> 2.0 would've caused massive amounts of confussion.

The only question remains what happens when we start development of a new version after release. i.e. after releasing OgreNext 3.0, should master be 4.0 or 3.1?

I've been giving it a hard thought and:

  • Developing master as 3.1 is risky becaues we will start accumulating API incompatibilities, giving us less manouverability if we need to fix 3.0 by breaking ABI while still being API compatible.

  • But if when the time arrives to make a new release and API compat is still very high (e.g. >= 98%?) it would make sense to release master as 3.1 instead of 4.0

After much consideration I believe that:

  • By default master should always bump MAJOR, i.e. if we release OgreNext 3.0, master should be 4.0

  • When the time comes to release, we can always change this and branch to 3.1

    • At our discretion, we reserve the right to still release it as 4.0, instead of 3.1

    • The rationale behind this, is that there are releases where new features are introduced that may be unstable and will need a lot of testing. Therefore a lot of fixes are anticipated and reserving 3.1 makes sense

    • As an example, this is what happened with OgreNext 2.2, where we released 2.2.0 through 2.2.6 because there was a major texture refactor, which required a lot of minor tweaking and fixing.

    • Other causes may be a paying client anticipating they'll need several minor features or fixes

Feedback?

User avatar
TaaTT4
OGRE Contributor
OGRE Contributor
Posts: 267
Joined: Wed Apr 23, 2014 3:49 pm
Location: Bologna, Italy
x 75
Contact:

Re: Upcoming OgreNext versioning scheme change

Post by TaaTT4 »

Sounds good and reasonable for me, go on! (plus: a lot of naming polls will come, lovely)

Senior programmer at 505 Games; former senior engine programmer at Sandbox Games
Worked on: Racecraft EsportRacecraft Coin-Op, Victory: The Age of Racing

old_man_auz
Greenskin
Posts: 100
Joined: Tue Jun 15, 2004 5:10 am
Location: Australia

Re: Upcoming OgreNext versioning scheme change

Post by old_man_auz »

Sounds reasonable to me as well. I'm not in the best position to comment, but as per your Github post, make sure that realistic support cycles are being set so the team isn't over extended.

Post Reply