Tuesday, October 27, 2009

Major, Minor, Point, HUH?

Application versioning, Code and element level versioning, both make sense.

If you are covered by any regulatory compliance than it is more than a good idea. If not it still makes sense to use versioning to control releases into production.

What is a good version numbering scheme you ask? The most widely accepted model is the Major, Minor, Point. (8.5.1 for example)

Major Releases deliver new functionality and may include new products. Major releases also contain bug fixes reported on a previous major or minor release.

Minor Releases deliver bug fixes reported on a previous major or minor release and may also include new functionality.

Point Releases deliver bug fixes and minor enhancements.

So lets use Lotus Notes for an example. (This is all in fun)

We have Release 8.5. IBM releases 8.5.1. this scheme would have me believe that there are no new features, just bug fixes and some minor enhancements! Hmmm I guess having Domino designer in eclipse is only a minor enhancement :-) I personally would have called it Release 9 (Again based on this scheme).

Some people have Design element level versioning as well. This means you need to effectively comment your code to include the version number. This will simplify testing and auditing changes.

Element versioning is typically overkill for most Notes shops, but I worked for a FDA regulated company, and we had to do this, (I was not so bad).

So to recap:
Application versioning is good, provides many benefits
Design element versioning is good also but may be more work than is needed for some environments.

Happy coding


  1. Don't for get the build number! This way you can tell the difference between different builds of the same version of the application. This is especially important to keep everyone on the same page if you are pushing changes to application out to test or production more than once a day. Using the first 3 numbers as markers for the functionality of the application and adding a fourth with constitutes a date/time or some other number helps everyone know what they are testing.
    I think the build number could be even more important than the point version. There are very few developers, my self included, who get right the first time. It often takes multiple builds to get a feature or bug fix right, and buld numbers are really helpful, and worth the work to implement.

  2. Good point! Build numbers are key. I know I have many iterations as well, before I am ready to go to test.