Sugar's Release Numbers

sugarcrmdevelopers —  March 26, 2010 — Leave a comment

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. [1]

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.

Examples:

  • 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 🙂

[1]  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?

No Comments

Be the first to start the conversation!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s