Semantische versionering, vaak afgekort tot semver, is een simpele afspraak over wat de getallen in een softwareversie betekenen. Een release krijgt een label met drie getallen zoals 3.5.2, en elke positie geeft een eigen boodschap: hoe groot de wijziging is, en of een update iets kan breken waar je op leunt. Het formaat is MAJOR.MINOR.PATCH.

Zie het als een verbouwing van een huis. Een patch is het repareren van een lekkende kraan, iets wat je nauwelijks merkt. Een minor-versie is een kamer erbij bouwen zonder de bestaande aan te raken, handig en veilig. Een major-versie is een muur uitbreken, wat kan veranderen hoe alles samenhangt en goede voorbereiding vraagt. Zie je een patch verschijnen, dan installeer je die meestal zonder na te denken; bij een major-sprong loont het om eerst de release notes goed te lezen.

De echte waarde komt naar voren als veel stukken software van elkaar afhangen. Een package manager kan naar de getallen kijken en versies kiezen die goed samenwerken, in plaats van een update binnen te halen die je project stilletjes breekt. Die voorspelbaarheid is waarom de afspraak zo breed is overgenomen.

Eén ding is goed om te weten: alles onder 1.0.0 geldt als vroeg en onstabiel, dus een project op 0.x mag z’n regels bij elke release omgooien. En het schema beschrijft alleen de grootte van een wijziging, niet de kwaliteit, dus ook een sprong van 1.2.3 naar 1.3.0 verdient een snelle test voordat hij een live systeem raakt.

Bij TopDevs geven we alles wat we opleveren op deze manier een versienummer, zodat je altijd weet of een update een snelle fix is of een wijziging die om een testronde vraagt voordat hij live gaat.