Semantic versions/versions for web applications

versioning

So I've been researching and looking into versioning my applications correctly rather than coming up with my own scheme. Semantic versioning is a popular option as many of you probably know, but my applications do not apply to the semantic criteria. By this I mean my product isn't an API. Looking into this, people say semantic versioning is primarily for dependencies.

So my question is, is there a versioning scheme for something like a web application or how can I adapt semantic versioning to suit me.

I came up with the following based on things I could find:
So it still uses 0.0.0 = x.y.z

  • x: MAJOR: Significant change to UI or code and/or structure
  • y: MINOR: New features
  • z: PATCH. Bug fixes

This, for the most part, looks like it will work great. Maybe I'm thinking to deeply but when I push a change, not a bug fix or new feature, what is that considered? Patch or minor? I'm just after some advice on how to properly version web applications for an end-user, not an API.

Best Answer

What purpose will this version number for your web app server be? Have you asked yourself whether you even need a version number?

As the consumer of a library, a version number is important, especially if that library adopts semantic versioning. I can tell at a glance how significant a change a new version will be, due to that major.minor.patch semantics.

As the consumer of a desktop application, version numbers become as much about marketing as telling me, the user, what has changed. Semantic versioning becomes less important. MyApp 2018 instantly conveys how new the app is. MyApp v4, less so. Beyond selling it to me, I'd probably only care about the version number if I had a problem and needed support.

Now think about the apps on your phone or tablet. Let's say you have the eBay app installed. What version is it? Have you ever cared? Would you even know how to find the version number without assistance from support? That version is now there purely for that support purpose.

Then we get to web apps. "Hey support, I have a problem. OK, I'll hit F5. Oh yes, that's fixed it. Thanks". So clearly the user no longer needs a version number. So since the user doesn't need it, you need to ask, do you need it for some reason?

If you do, then what for? What would a breaking change mean? Do you want to record whether you just introduced bug fixes, or improvements, or new features? Or do you simply want a marker in eg Git that records when a release occurred? It's likely that "v1", "v2", "v3" ... or even "2018-02-28" will surfice for your needs.

Related Topic