Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I can easily follow the Semantic Versioning recommendations if I develop a library or API, but what if the developed product is a website or a desktop application?

When would you increment a major component in that case?

In case of a complete UI redesign? Or something else?


share|improve this question

Semantic Versioning seems to be at conflict with most desktop application numbering. We solved this by handing over "product versioning" to the marketing department, and we maintain completely separate (but logical to us) versions for all the components. A specific product version then becomes a defined collection of compatible components. Maintaining semantic versioning between components is much easier.

share|improve this answer
Good answer, We have been working to implement something similar. Good examples of places where this happens as well is the Microsoft Office Suite of applications. – Klee May 31 '13 at 0:16
All you need to do think of this case (happened to me many times) - Bug in Version 3.2.1. "Marketing" promise the customer the fix will be delivered in 3.2.2, which is already in Beta release...... "Marketing" then insist on a new version of 3.2.2 with the bug fix......... Only option is to decouple "Marketing" versions from anythign that might indicate reality – mattnz May 31 '13 at 0:51
"....Only option is to decouple "Marketing" versions from anything that might indicate reality." That is exactly what we have done. Marketing could call our product versions 95, ME, SE, XP, Vista, 7, 8 or Blue and it wouldn't affect our internal versions. – Dave Nay May 31 '13 at 1:02
If you can't make changes to a beta, it's not a beta, it's a release. – Dave Nay May 31 '13 at 1:57
+1 The marketing department must control the "product version" that the customers know about. It's part of marketing, like the brand name, and it's their job to worry about this stuff. The software developers must control the internal product identifiers that enable binary products to be identified and linked back to specific source code. Therefore these two identifiers should be completely decoupled. – MarkJ May 31 '13 at 11:26

I adapted semantic versioning for desktop or web applications, so in our work we are using: X.Y.Z

  1. Z is increasing if a release contains just a bug fix, dependencies update or some application internal changes, so no new functionality introduced to user;
  2. Y is increasing if a release contains minor changes in UI or just introduces some new feature, or some feature redesign/functionality update which will affect user;
  3. X is increasing if a release contains major UI/functionality update, for example: new interface design/layout;
  4. New project starts with version 0.1 and minor version is increasing with development;
  5. If a project contains all planned functionality for version 1.0 the version should be changed to 1.0.
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.