Semantic Versioning

Semantic versioning

Figuur 1: Semantic versioning (bron: Surjit Bains, CC BY-SA 4)

NB Dit is in 2024 in week 4 geplaatst als zelf studie om voldoende tijd te hebben voor kubernetes in week 5. Kubernetes zit op het moment van schrijven op versie 1.28.x. K8s gebruikt semver: semantic versioning

"Kubernetes versions are expressed as x.y.z, where x is the major version, y is the minor version, and z is the patch version, following Semantic Versioning terminology. - kubernetes.io

Opdrachten/zelfstudie

  1. Lees over Semantic Versioning op semver.org zodat je het begrijpt
  2. Welke onderdelen je wel of niet leest, mag je zelf bepalen, maar zorg dat je bij plaatje in Figuur 1 een verhaal kan vertellen over wanneer je welke van de 3 delen van een semver versie moet ophogen
  3. En beantwoord ook waarom de term 'semantisch' in de naam semver zit
  4. Denk eens na op welke zaken in een DevOps project je allemaal versies kunt geven.

Tijdens het project is semver ook een goede keuze. Je hebt echter de vrijheid om een eigen versienummer systeem te gebruiken. Zolang je dit documenteert/ernaar verwijst. Én er ook een goed idee achterzit. Dus bijvoorbeeld niet een 'anti naming pattern' zoals WendtVer die voor kenners wel vermakelijk is om te lezen.

"Let WendtVer provide you with a “fun” way to release and upgrade packages without having to think, saving you time and thinking."

Je mag er zelf over nadenken of alleen een git commit hash gebruiken als versienummer een goed idee is... :).

Als je een toepassing wilt kijken van semver die in een groot project ook erg handig is kun je eens kijken naar `conventional commits':

"[Conventional commits] dovetails with SemVer, by describing the features, fixes, and breaking changes made in commit messages." - https://www.conventionalcommits.org/en/v1.0.0/

TL; DR

De DDD term 'ubiquitous language' is van belang voor het checkpunt 'IR-201 Gedeeld informatiemodel' uit het CDMM. Dit staat uitgelegd onder de categorie 'Information and reporting'. Zie voor uitleg hiervan de beschrijving op pagina over 'DevOps concepten'. Zoals daar uitgelegd gaat het in CDMM checkpoint 'shared information model' vooral over informatiemodel van het software ontwikkel proces. In plaats van het domeinproces in het domein van je software zelf over gaat.

De term 'domein' is ook een verwarrende term, aangezien soms ook ICT zelf, en dus 'software ontwikkelen' een domein is. Namelijk het domein waar je les in krijgt op het HBO ICT. Het kunnen analyseren van andere domeinen waarbinnen je automatiseert is een van de competenties nodig om goed te kunnen werken in het ICT domein. Binnen dit ICT domein is een belangrijk concept dat van 'semantic versioning': semver. Dit geeft algemene richtlijnen over de betekenis van versienummers van software. Binnen een specifiek domein kun je vervolgens met semver je concrete software ook concrete semver versies toewijzen, waarbij je dan in kaart brengt welke features of bugfixes een bepaalde versie bevat. In termen van de concrete functionaliteit die een applicatie heeft. Maar ook de software tools die je zelf als developer gebruikt, en eindgebruikers geen weet van (hoeven te) hebben kan semver versies hebben.

Quiz

Leerdoelen

  • Je kunt uitleggen wat semantic versioning inhoudt en waarom het nuttig is in softwareontwikkeling.
  • Je kunt het verschil uitleggen tussen de drie onderdelen van semantic versioning en aangeven welk onderdeel je verhoogt in specifieke situaties.
  • Je kunt uitleggen hoe je semantic versioning toepast om compatibiliteit te waarborgen tussen verschillende versies van een project.
Last change: 2025-01-13