from Hacker News

Internal Applications: When Semantic Versioning Doesn't Make Sense

by skwashd on 1/25/16, 10:46 AM with 9 comments

  • by fenomas on 1/26/16, 4:23 AM

    This article seems to miss the point of SemVer. Quoting the spec: "1. Software using Semantic Versioning MUST declare a public API." If one is talking about a website or a GUI application, SemVer doesn't apply in the first place.

    After all, the point of the thing is to solve dependency hell - it's only meaningful for things that other code can declare dependencies against.

  • by oautholaf on 1/26/16, 3:47 AM

    Inside an organization, separate repos and versions can simply be unnecessary overhead. As long as you can have an edict from above that 'thou shall not break the build or its tests for you or your dependants; the punishment is immediate rollback', empower some people to enforce this, and have plenty of automated tests, distinct repos and versions are silly, unnecessary and massively inessential overhead.

    But if you don't have that balkanization is a reasonable option.

  • by alrs on 1/26/16, 1:48 AM

    Versioning makes all the difference in the world when you're trying to do microservices.

    This is what makes microservices hard, and this is the unforeseen friction that kicks people in the ass.

  • by ownedthx on 1/26/16, 4:51 PM

    A scheme I settled on a previous job that I really liked for internal apps was:

    branch-buildno

    Where branch is the git branch, and buildno came from our build machine (Jenkins in our case).

    examples:

    * develop-5

    * master-10

    I then used this ivy-based project: https://github.com/sethcall/depends to push those dependencies to our own internal artifact repository.

    Because of this, I could say, 'use the latest artifact on the develop branch', or, I could say 'use exactly master-103'. Those two alone were pretty powerful.

    By the way, I asked Maven devs if this would numbering scheme would possible (at the time, I would have happily used Maven instead of Ivy because I had to build some tooling to use Ivy); they were strongly against the idea: http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-curre...

  • by bottled_poe on 1/26/16, 2:50 AM

    I guess it depends how much quality control you want to implement. Author seems to be suggesting next to zero user acceptance testing, which is probably fine for small applications.