Scott Hanselman has an interesting note on product version numbering and naming. My response is too long for a tweet or a facebook comment, so I’m blogging it here and sending him a link …
I’m all for semantic versioning - the SemVer website articulates well a good practice.
Where things fall down with Marketing is, almost certainly, for good reason - that they want to make it easy for people to identify what’s compatible.
Calling the update “.NET 4.0 Platform Update 1” means that it’s still .NET 4.0 - and that means people searching for .NET 4.0 will still find it, where a search for .NET 4.1 would not. (There’s probably a corporate change control issue here as well - getting permission to install “.NET 4.0 Platform Update 1” may well be easier than getting permission for “.NET 4.1”.)
On the Semantic Versioning TwitPoll, Jeffrey T. Fritz writes:
The numbering scheme should also reflect which ‘lego bricks’ fit together.
Questions like “Can I use my.Net 2.0 library with a.Net 3.5sp1 ASP.Net website?”
should be simple to answer…
It’s exactly this kind of constraint that gives us very odd schemes, as people become adverse to changing the first two parts of the version number because they want to stay “in step” with some other component.
My suggestion is that these dependencies should be called out separately from the version number, but as a part of the “Marketing Name” for the release.
Some invented illustrations …
ASP.MVC 4.2.45 for .NET 4.0
StyleCop 4.6.4 for Visual Studio 2010 and Resharper 6.0
NAntContrib 2.3 for NAnt 1.4
Keep the version number of the product independent, following the SemVer guidelines
Explicitly call out related products in the title so they show up for searches and compatibility never needs to be guessed at