Recently, I was asked to describe Sugar’s product release numbering scheme to someone. We’ve changed a handful of internal processes over the last few months, and the release numbering scheme is a reflection of these changes. Time to explain the method behind our madness!
Historically, our numbering scheme has been somewhat inconsistent. For those of us who’ve been around Sugar a while, we scratch our heads trying to remember why our version 4 series had 4.0, 4.0.1, 4.2, and 4.2.1… but no 4.1. Compare that to our version 5 series, which had 5.0, 5.1, and 5.2…. but no 5.0.1, 5.1.1, or 5.2.1.
Then you get the patch letter names. I can’t tell you how happy I am we finished the 4.5.1 series before we reached the letter R; the pirate jokes would’ve been the death of me. And how about 4.5.1o? Is that a lower-case letter O, or is it a number zero making it 4.5.10? 5.2.0l, is that a lower-case letter L, or is it a number one making it 5.2.01?
(Hint: It’s a lower-case letter O and a lower-case letter L)
This brings us to today, and our new release numbering scheme.
Releases will fall into one of three categories:
- Maintenance Release
- Minor Release
- Major Release
First, the definitions of the releases, then I’ll explain the numbering scheme itself.
A Maintenance Release is constrained to only contain bug fixes for existing functionality. The scope of the fixes is limited to exclude any changes to our database schema; no new features; and no changes to our user interface. Our intention is to produce Maintenance Releases on a predictable schedule, roughly every six weeks. For all intents and purposes, a Maintenance Release is the new incarnation of our historical letter patch releases.
Our upcoming 5.5.2 release is an example of a Maintenance Release.
A Minor Release has a wider scope than a Maintenance Release, but will not contain sweeping changes, either. A Minor Release may contain changes to the database schema, and it may contain limited changes to the user interface. A Minor Release may contain some small new features and functionality, or an update to existing features and functionality.
Our recent 5.5.1 release would have been an example of a Minor Release, due to the updates to the exiting Email features. 
A Major Release has the widest scope of all. A Major Release may contain changes to the database schema, and it may contain significant changes to the user interface. A Major Release may contain several new features and functionality, or significant updates to existing features and functionality.
Our upcoming 6.0 release is an example of a Major Release.
Now, the numbering scheme. No more letter patches. The 5.5.0a security patch is the last letter patch that we intend to produce.
Releases will be numbered with a three-digit taxonomy, X.Y.Z.
- A change in the Z digit denotes a Maintenance Release.
- A change in the Y digit denotes a Minor Release.
- A change in the X digit denotes a Major Release.
The exception to these guidelines is when the Y digit reaches a 5, which we will continue to consider a Major Release.
- 6.0 would be a major release.
- 6.1 would be a minor release.
- 6.0.1 or 6.1.1 would be a maintenance release.
- 6.5 would be a major release.
And, as always, we reserve the right to fudge the numbers and guidelines when it suits our purposes 🙂
 5.5.1 should have been numbered as 5.6 under this numbering scheme, but we had started work on the 5.5.1 release before we landed on these guidelines.
Got all that?