versionat

Versionat d’aplicacions informàtiques

Aquest és el primer d’una sèrie de posts on parlarem del versionat d’aplicacions informàtiques. Explicarem en què consisteix i per què es fa. Veurem alguns exemples de versionat en els formats més habituals i algunes curiositats. També farem cinc cèntims de què vol dir codi reutilitzable, dependències i compatibilitat, de com es construeix una aplicació i quin impacte tenen les versions dels seus components. Finalment parlarem d’algunes de les eines que es fan servir i com a Jamgo en treiem profit per desenvolupar aplicacions de qualitat.

Versions

Un programa o aplicació informàtica és un conjunt d’instruccions escrites en un cert llenguatge de programació que es tradueixen a un format que permet que un cert dispositiu l’executi. Aquest programa permet a les seves usuàries dur a terme unes certes tasques, que en conjunt s’acostumen a anomenar funcionalitats.

La versió d’una aplicació s’associa a un conjunt de funcionalitats, de manera que les usuàries saben que la versió x de l’aplicació els permet fer unes certes coses, i la versió y posterior unes altres. Normalment s’amplien les funcionalitats, però de vegades també se’n treuen o es canvien, o s’optimitzen perque vagi més ràpid, etc..

De manera natural la versió podria ser un simple número enter creixent, però històricament s’ha anat sofisticant per dotar-la de més significat, i sovint també per aportar imatge de marca a l’aplicació.

Potser la manera més habitual de designar el versionat és mitjançant grups de números separats per punts. El número de més a l’esquerra es sol anomenar versió major i el següent versió menor. Canvis molt grans de funcionalitat acostumen a implicar un increment en la versió major, mentre que petits canvis o correccions incrementen la versió menor. A partir del tercer número ja hi ha molta més variació en els formats i significats.

Wikipedia

Un exemple senzill és MediaWiki, el software en que està basada la Wikipedia, manté la versió major en 1 des del seu inici el 2002. No hi ha hagut cap canvi revolucionari des de llavors, però periòdicament s’han anat afegint funcionalitats, fins avui en dia en què la versió més recent per descarregar-se és la 1.28, publicada el 28/11/2016.
Cada versió s’actualitza amb correccions funcionals i de seguretat, per aquesta raó sempre va va acompanyada d’un tercer número. Per exemple el 6/4/2017 es va publicar la 1.28.1.

Versions més antigues es segueixen actualitzant o no depenent de la política de suport dels desenvolupadors. Molts programes de codi obert fan que algunes versions es mantinguin durant més temps per tal de no forçar a canviar tant sovint als seus usuaris. En el cas de MediaWiki, en dia d’avui, la 1.27 encara es manté (va per la 1.27.2 publicada aquest mes d’abril), i després ja es salta a la 1.23, que va per la 1.23.17 (també d’aquest abril). Les versions entre mig ja no s’actualitzen.

Si aneu a https://en.wikipedia.org/wiki/Special:Version veureu la versió actual de MediaWiki que hi ha instal·lada a la Wikipedia. Veureu que és més llarga i més complexa (avui és la 1.29.0-wmf21). Això és perquè a la Wikipedia es van desplegant les funcionalitats de MediaWiki abans de ser alliberades per descarregar-se públicament, la 1.29.0 estarà en un futur disponible per a tothom, mentrestant es van fent versions amb codis interns com ara el wmf21.

Android

El sistema operatiu Android que fa funcionar la majoria dels nostres telèfons mòbils i tauletes, també segueix un esquema similar. En aquest cas la versió major sí que ha anat canviant en el temps quan han considerat que les millores eren prou importants, i així avui en dia estem en la 7.1.2. Això no vol dir que el vostre mòbil tingui o vagi a tenir algun dia aquesta versió, la política d’actualitzacions dels fabricants de mòbils donaria per un altre post…

El cas d’Android ens permet il·lustrar la figura dels noms en codi (codenames) que moltes vegades s’associen al versionat. Els noms en codi històricament s’havien fet servir per anomenar internament a la propera versió a publicar, dins de l’equip de desenvolupament. Però en algun moment algú hi va veure potencial per aportar imatge de marca a una versió, i avui en dia molts productes anomenen oficialment una versió amb el seu nom en codi, a més del codi numèric.

Per triar noms en codi s’inventen esquemes curiosos. Android, per exemple, fa servir termes relacionats amb la pastisseria i les llaminadures. Així, si mirem enrere en el temps, anirem passant per Nougat (la versió 7 és un torró), Marshmallow (malvavisc, versió 6), Lollipop (piruleta, versió 5), KitKat (versió 4, la marca de barretes de xocolata, previ acord amb Nestlé), Jellybean (versió 3, gominola), etc.

Alguns exemples més de versionat

Ubuntu, el sistema operatiu de codi obert per a ordinadors personals, fa servir un sistema diferent per assignar números de versions. Ells tenen un cicle fix de publicació de versions, i es planifiquen per treure una versió cada mig any, a l’abril i a l’octubre. Llavors el que fan és anomenar la versió com any.mes. El passat mes d’abril va sortir la versió 17.04.

Ubuntu també fa servir noms en codi per les versions. En aquest cas el que fan és triar un nom i un adjectiu. El nom és el d’un animal, i l’adjectiu pot estar o no relacionat amb l’animal, només ho fan per sonoritat. Tant el nom com l’adjectiu comencen per la mateixa lletra i a cada versió van una lletra més de l’abecedari. Llavors tenim, també tirant enrere: 17.04 Zesty Zapus (zapus picant, un zapus és un petit rosegador), 16.10 Yakety Yak (el iak és un bòvil de l’Himàlaia, Yakety Yak és una cançó pop dels 50), i abans hem tingut el Xenial Xerus, Willy Werewolf, Vivid Vervet, Utopic Unicorn, etc. Us preguntareu què faran amb la 17.10, després de la Z? Torna la A, no acabarem mai (Artful Aardvark).

Per acabar, TeX és un software de tipografia publicat per primer cop el 1978. Encara existeix, i encara s’actualitza, tot i que des de fa un temps només rep correccions. La versió actual és la 3.14159265, i això és així perquè des de la publicació de la versió 3 es va decidir que cada nova versió afegiria un decimal de π. El seu autor Donald Knuth ha manifestat que quan es mori vol que la versió sigui oficialment π i els errors que quedin passin a ser característiques permanents del programa. Friki amb ganes, eh?

Conclusió

Hem vist les motivacions per assignar números de versió a les aplicacions informàtiques, i alguns exemples i curiositats al respecte. En el proper post parlarem del versionat semàntic, que pretén estandaritzar el format dels números de versions i dotar a cada número d’un significat precís. Veurem com ajuda això a resoldre dependències entre components de programes, i parlarem de les eines que ajuden a gestionar les versions.

Si voleu afegir algun detall o curiositat sobre el versionat de software, feu un tuit amb el hashtag #jamgoversions