El versionado de software es el proceso de asignar nombres o números de versión únicos a estados únicos del software. El esquema más utilizado para los números de versión se conoce como versionado semántico ( SemVer ), que consta de un número de versión de tres partes (Mayor.Menor.Parche), una etiqueta de prelanzamiento opcional (por ejemplo, alfa, beta) y una etiqueta meta de compilación opcional. También se puede usar un cuarto número para indicar la compilación del software , como fue el caso de Adobe Flash . Algunas empresas también se basan en la fecha de compilación, en un sistema conocido como versionado de calendario, y letras y otros caracteres, como Lotus 1-2-3 Release 1a.
La mayoría de los paquetes de software libre y de código abierto , incluido MediaWiki , tratan las versiones como una serie de números individuales, separados por puntos, con una progresión como 1.8.1, 1.9.0. Por otro lado, algunos paquetes de software identifican las versiones mediante números decimales: 1.8, 1.81, 1.82. Los desarrolladores pueden optar por saltar varias versiones menores a la vez para indicar que se han añadido funciones importantes o con fines de marketing. Los números de versión se utilizan a menudo para identificar copias de un producto de software y compararlas con otra copia en un sistema de control de versiones colaborativo.
En los equipos de desarrollo de software, el control de versiones se utiliza para realizar un seguimiento de las distintas versiones de la información y así poder revertir cualquier cambio. El software moderno suele gestionarse mediante dos esquemas de versionado diferentes: un número de versión interno, que puede incrementarse varias veces al día, y una versión de lanzamiento, que normalmente cambia con mucha menos frecuencia.
Históricamente, los números de archivo se utilizaban especialmente en la administración pública y las empresas para identificar de forma unívoca archivos o casos. Esta práctica se introdujo por primera vez en los archivos informáticos con el sistema de archivos ITS del MIT, y posteriormente con el sistema de archivos TENEX para el PDP-10 en 1972. En el siglo XXI, más programadores comenzaron a utilizar una política de versiones estandarizada, como la política de versiones semánticas, [ 1 ] que resulta particularmente útil al utilizar bibliotecas de software , marcos de trabajo y aplicaciones de línea de comandos.
Historia
Los números de archivo se utilizaban especialmente en la administración pública, así como en las empresas, para identificar de forma unívoca archivos o casos. En el caso de los archivos informáticos, esta práctica se introdujo por primera vez con el sistema de archivos ITS del MIT, y posteriormente con el sistema de archivos TENEX para el PDP-10 en 1972. [ 2 ]
Posteriormente se añadieron listas de archivos con sus versiones y dependencias entre ellos. Las distribuciones de Linux como Debian, con su dpkg , crearon desde el principio software de gestión de paquetes que podía resolver las dependencias entre sus paquetes. El primer intento de Debian fue que un paquete conociera otros paquetes que dependían de él. A partir de 1994, esta idea se invirtió, de modo que un paquete conocía los paquetes que necesitaba. Al instalar un paquete, la resolución de dependencias se utilizaba para calcular automáticamente los paquetes necesarios e instalarlos junto con el paquete deseado. Para facilitar las actualizaciones, se introdujeron versiones mínimas de paquetes. Por lo tanto, el esquema de numeración debía indicar qué versión era más reciente que la requerida. [ 3 ] [ 4 ] [ 5 ]
Esquemas
Basado en identificadores de secuencia

En los esquemas de versionado de software basados en secuencias, a cada versión del software se le asigna un identificador único que consta de una o más secuencias de números o letras. [ 6 ] Hasta aquí llega la similitud; los esquemas varían ampliamente en aspectos como el número de secuencias, la atribución de significado a cada secuencia y los medios para incrementarlas.
Importancia del cambio
En algunos esquemas, se utilizan identificadores basados en secuencias para transmitir la importancia de los cambios entre versiones. Los cambios se clasifican por nivel de importancia, y la decisión de qué secuencia modificar entre versiones se basa en la importancia de los cambios con respecto a la versión anterior: la primera secuencia se modifica para los cambios más significativos, y las secuencias posteriores representan cambios de importancia decreciente.
Dependiendo del esquema, la importancia puede evaluarse en función de las líneas de código modificadas, los puntos de función añadidos o eliminados, el impacto potencial en los clientes en términos del trabajo necesario para adoptar una nueva versión, el riesgo de errores o cambios incompatibles no declarados, el grado de cambios en el diseño visual, el número de nuevas características o prácticamente cualquier cosa que los desarrolladores o responsables de marketing del producto consideren significativa, incluido el deseo de marketing de destacar la "bondad relativa" de la nueva versión.
Versionado semántico
El versionado semántico (también conocido como SemVer) [ 1 ] es un esquema de versiones ampliamente adoptado [ 7 ] que codifica una versión mediante un número de versión de tres partes (Mayor.Menor.Parche), una etiqueta de prelanzamiento opcional y una etiqueta meta de compilación opcional. En este esquema, el riesgo y la funcionalidad son las medidas de importancia. Los cambios incompatibles se indican aumentando el número mayor (riesgo alto); las nuevas características que no son incompatibles incrementan el número menor (riesgo medio); y todos los demás cambios que no son incompatibles incrementan el número de parche (riesgo más bajo). La presencia de una etiqueta de prelanzamiento (-alpha, -beta) indica un riesgo sustancial, al igual que un número mayor de cero (0.yz), que se utiliza para indicar un trabajo en progreso que puede contener cualquier nivel de cambios potencialmente incompatibles (riesgo más alto). Como ejemplo de cómo inferir compatibilidad a partir de una versión SemVer, el software que depende de la versión 2.1.5 de una API es compatible con la versión 2.2.3, pero no necesariamente con la 3.2.4.
Otros planes
También se puede usar un cuarto número para indicar la versión del software , como fue el caso de Adobe Flash . Algunas compañías también incluyen la fecha de compilación, letras y otros caracteres, como Lotus 1-2-3 Release 1a.
Los desarrolladores pueden optar por saltar varias versiones menores a la vez para indicar que se han añadido características significativas, pero no suficientes como para justificar un incremento en el número de versión principal; por ejemplo, Internet Explorer 5 de 5.1 a 5.5 o Adobe Photoshop 5 a 5.5. Esto puede hacerse para enfatizar el valor de la actualización para el usuario del software o, como en el caso de Adobe, para representar un lanzamiento a medio camino entre versiones principales (aunque los niveles de versionado basados en secuencias no se limitan necesariamente a un solo dígito, como en Blender versión 2.91 o Minecraft Java Edition desde 1.7.10 hasta 1.21.11, después de lo cual el esquema de versionado pasó a un formato basado en años). [ 8 ]
Un enfoque diferente consiste en utilizar los números mayor y menor junto con una cadena alfanumérica que indique el tipo de lanzamiento, por ejemplo, "alpha" (a), "beta" (b) o "release candidate" (rc). Una cadena de lanzamientos de software que utilice este enfoque podría ser 0.5, 0.6, 0.7, 0.8, 0.9 → 1.0b1, 1.0b2 (con algunas correcciones), 1.0b3 (con más correcciones) → 1.0rc1 (si es suficientemente estable ), 1.0rc2 (si se encuentran más errores) → 1.0. Es una práctica común en este esquema bloquear las nuevas características y los cambios incompatibles durante las fases de lanzamiento candidatas y, para algunos equipos, incluso las versiones beta se limitan a correcciones de errores, para garantizar la convergencia en el lanzamiento objetivo.
Otros sistemas otorgan significado a secuencias individuales:
- mayor.menor[.compilación[.revisión]] (ejemplo: 1.2.12.102 )
- mayor.menor[.mantenimiento[.compilación]] (ejemplo: 1.4.3.5249 )
Nuevamente, en estos ejemplos, la definición de lo que constituye un cambio "importante" en contraposición a un cambio "menor" es totalmente subjetiva y depende del autor, al igual que lo que define una "compilación" o en qué se diferencia una "revisión" de un cambio "menor".
Las bibliotecas compartidas en Linux y Solaris pueden usar el formato current.revision.age donde: [ 9 ] [ 10 ]
- actual : El número de interfaz más reciente que implementa la biblioteca.
- revisión : El número de implementación de la interfaz actual.
- edad : La diferencia entre las interfaces más recientes y más antiguas que implementa la biblioteca. Este uso del tercer campo es específico de libtool ; otros pueden usar un significado diferente o simplemente ignorarlo.
Un problema similar, relacionado con la importancia relativa del cambio y la nomenclatura de las versiones, existe en la edición de libros, donde los números o nombres de las ediciones pueden elegirse en función de distintos criterios.
En la mayoría del software propietario, la primera versión lanzada de un producto de software tiene la versión 1.
Grado de compatibilidad
Algunos proyectos utilizan el número de versión principal para indicar versiones incompatibles. Dos ejemplos son Apache Portable Runtime (APR) [ 11 ] y el CMS de FarCry. [ 12 ]
Con frecuencia, los programadores escriben software nuevo que sea compatible con versiones anteriores . Por ejemplo, IBM z/OS está diseñado para funcionar correctamente con tres versiones principales consecutivas del sistema operativo ejecutándose en el mismo sysplex. Esto permite a quienes administran un clúster de computadoras de alta disponibilidad mantener la mayoría de las computadoras en funcionamiento mientras una máquina a la vez se apaga, actualiza y vuelve a poner en servicio. [ 13 ]
A menudo, los encabezados de los paquetes y el formato de archivo incluyen un número de versión, a veces el mismo que el del software que lo generó; otras veces, un "número de versión de protocolo" independiente del número de versión del software. El código para manejar protocolos y formatos de archivo antiguos y obsoletos suele considerarse código superfluo .
Designación de la etapa de desarrollo
El software en fase experimental ( alfa o beta ) suele utilizar un cero en la primera posición ("principal") de la secuencia para indicar su estado. Sin embargo, este esquema solo es útil para las fases iniciales, no para las próximas versiones de software ya consolidado, donde el número de versión ya ha superado el 0. [ 1 ]
Se utilizan varios esquemas para indicar el estado de una versión más reciente:
- El sufijo alfanumérico es un esquema común adoptado por el versionado semántico. [ 1 ] En este esquema, las versiones han añadido un guion más algunos caracteres alfanuméricos para indicar el estado.
- El estado numérico es un sistema que utiliza números para indicar el estado como si formara parte de una secuencia. Una opción típica es la tercera posición en el sistema de versiones de cuatro posiciones.
- El esquema numérico 90+ es otro método que utiliza números, pero aparentemente con una numeración inferior a la de una versión anterior. Se utiliza un número grande en la última posición, normalmente 90 o superior. Este método es común en proyectos de código abierto antiguos como Fontconfig .
Las dos formas puramente numéricas eliminan la lógica especial necesaria para manejar la comparación de "alfa < beta < rc < sin prefijo", como se encuentra en el versionado semántico, a costa de la claridad.
La mayoría de los paquetes de software libre y de código abierto , incluido MediaWiki , tratan las versiones como una serie de números individuales, separados por puntos, con una progresión como 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.11.2, y así sucesivamente. Por otro lado, algunos paquetes de software identifican las versiones mediante números decimales: 1.7, 1.8, 1.81, 1.82, 1.9, etc. Las versiones decimales eran comunes en la década de 1980, por ejemplo con NetWare , DOS y Microsoft Windows , pero incluso en la década de 2000 han sido utilizadas, por ejemplo, por Opera [ 14 ] y Movable Type . [ 15 ] En el esquema decimal, 1.81 es la versión menor que sigue a 1.8, mientras que las versiones de mantenimiento (es decir, solo correcciones de errores) pueden denotarse con un sufijo alfabético, como 1.81a o 1.81b.
El esquema de numeración de versiones estándar de GNU es mayor.menor.revisión, [ 16 ] pero Emacs es un ejemplo notable que utiliza otro esquema donde se eliminó el número mayor (1) y se agregó una revisión del sitio del usuario que siempre es cero en los paquetes originales de Emacs pero que los distribuidores incrementan. [ 17 ] De manera similar, los números de paquetes de Debian tienen como prefijo una "época" opcional, que se utiliza para permitir que se cambie el esquema de versiones. [ 18 ]
En algunos casos, los desarrolladores pueden decidir reiniciar el número de versión principal. Esto se utiliza a veces para indicar el lanzamiento de una nueva fase de desarrollo. Por ejemplo, Minecraft Alpha tuvo versiones desde la 1.0.0 hasta la 1.2.6, y cuando se lanzó la Beta, se reinició el número de versión principal y tuvo versiones desde la 1.0 hasta la 1.8. Una vez que el juego se lanzó por completo, el número de versión principal se reinició nuevamente a 1.0.0. [ 19 ]
Formato
Algunos proyectos utilizan números de versión negativos. Un ejemplo es el compilador SmartEiffel , que comenzó en −1.0 y contó hacia arriba hasta 0.0. [ 17 ]
Para facilitar la clasificación, algunos paquetes de software representan cada componente del esquema mayor.menor.versión con un ancho fijo. Perl representa sus números de versión como un número de coma flotante; por ejemplo, la versión 5.8.7 de Perl también se puede representar como 5.008007. Esto permite que una versión teórica de 5.8.10 se represente como 5.008010. Otros paquetes de software empaquetan cada segmento en un ancho de bits fijo; por ejemplo, en Microsoft Windows, el número de versión 6.3.9600.16384 se representaría como hexadecimal 0x0006000325804000. El esquema de coma flotante falla si algún segmento del número de versión supera 999; un esquema binario empaquetado que emplea 16 bits cada uno falla después de 65535.
Entre las series 1.0 y 2.6.x, el kernel de Linux utilizaba números de versión menores impares para indicar las versiones de desarrollo y números pares para las versiones estables. Por ejemplo, Linux 2.3 era una familia de desarrollo del segundo diseño principal del kernel de Linux, y Linux 2.4 era la familia de versiones estables en la que Linux 2.3 evolucionó. Después del número de versión menor en el kernel de Linux se encuentra el número de versión, en orden ascendente; por ejemplo, Linux 2.4.0 → Linux 2.4.22. Desde el lanzamiento del kernel 2.6 en 2004, Linux ya no utiliza este sistema y tiene un ciclo de lanzamiento mucho más corto.
El mismo sistema de números pares e impares es utilizado por otros programas con ciclos de lanzamiento largos, como Node.js hasta la versión 0.12 y WineHQ . [ 20 ]
Basado en identificadores de fecha de lanzamiento

Muchos proyectos utilizan un esquema de versionado basado en fechas llamado versionado de calendario (también conocido como CalVer [ 21 ] ).
Ubuntu es un ejemplo de un proyecto que utiliza el versionado por calendario; Ubuntu 18.04, por ejemplo, se lanzó en abril de 2018. Esto tiene la ventaja de ser fácilmente relacionable con los cronogramas de desarrollo y los plazos de soporte. Algunos videojuegos también utilizan la fecha como versionado, por ejemplo, el juego arcade Street Fighter EX . Al iniciarse, muestra el número de versión como una fecha más un código de región, por ejemplo, 961219 ASIA .
Cuando se utilizan fechas en el versionado, por ejemplo, en los nombres de archivo, es común utilizar el esquema ISO 8601 [ 22 ] AAAA-MM-DD , ya que se puede ordenar fácilmente como cadena en orden ascendente o descendente. A veces se omiten los guiones. El proyecto Wine anteriormente utilizaba un esquema de versionado por fecha, que utilizaba el año seguido del mes seguido del día del lanzamiento; por ejemplo, "Wine 20040505". Las primeras versiones de desarrollo de Minecraft tenían un formato de versión similar, pero en su lugar utilizaban DDHHMM, por ejemplo, rd-131655 se creó el 13 (de mayo de 2009) a las 16:21.
Los números de compilación de Microsoft Office son una fecha codificada: [ 23 ] Los dos primeros dígitos indican la cantidad de meses transcurridos desde enero del año en que comenzó el proyecto (cada lanzamiento principal de Office es un proyecto diferente), mientras que los dos últimos dígitos indican el día de ese mes. Por lo tanto, 3419 es el día 19 del mes 34 después del mes de enero del año en que comenzó el proyecto.
Otros ejemplos que identifican las versiones por año incluyen Adobe Illustrator 88 y WordPerfect Office 2003. Cuando se usa un año para indicar la versión, generalmente es con fines de marketing, y también existe un número de versión real. Por ejemplo, Windows 95 se versiona internamente como MS-DOS 7.00 y Windows 4.00; de igual manera, Windows 2000 se versiona internamente como NT 5.0. [ 24 ]
Otros planes
Algunos productores de software utilizan diferentes esquemas para indicar las versiones de su software. El proyecto Debian utiliza un esquema de versiones mayor/menor para las versiones de su sistema operativo, pero utiliza nombres en clave de la película Toy Story durante el desarrollo para referirse a las versiones estables, inestables y de prueba. [ 25 ]
BLAG Linux y GNU presentan números de versión muy grandes: las versiones principales tienen números como 50000 y 60000, mientras que las versiones menores aumentan el número en 1 (por ejemplo, 50001, 50002). Las versiones alfa y beta reciben números de versión decimales ligeramente inferiores al número de la versión principal, como 19999.00071 para la alfa 1 de la versión 20000, y 29999.50000 para la beta 2 de la versión 30000. [ 26 ] [ 27 ] [ 28 ]
Urbit utiliza el versionado Kelvin (llamado así por la escala de temperatura Kelvin absoluta ): las versiones del software comienzan con un número alto y disminuyen hasta la versión 0, momento en el que se considera que el software está terminado y no se realizan más modificaciones. [ 29 ] [ 30 ]
Versiones preliminares
Junto con los distintos esquemas de versionado mencionados anteriormente, generalmente se utiliza un sistema para indicar las versiones preliminares, a medida que el programa avanza por las etapas del ciclo de vida del lanzamiento del software .
Los programas que se encuentran en una fase inicial suelen denominarse software "alfa", por la primera letra del alfabeto griego. Una vez que maduran, pero aún no están listos para su lanzamiento, se les puede llamar software "beta", por la segunda letra del alfabeto griego. Generalmente, el software alfa solo lo prueban los desarrolladores, mientras que el software beta se distribuye para que la comunidad lo pruebe.
Algunos sistemas utilizan versiones numéricas menores que 1 (como 0.9) para indicar su aproximación a una versión final "1.0". Esta es una convención común en el software de código abierto . [ 31 ] [ 32 ] Sin embargo, si la versión preliminar corresponde a un paquete de software existente (por ejemplo, la versión 2.5), se puede añadir una "a" o "alpha" al número de versión. Así, la versión alpha de la versión 2.5 podría identificarse como 2.5a o 2.5.a.
Una alternativa es referirse a las versiones preliminares como "candidatas a lanzamiento", de modo que los paquetes de software que pronto se lanzarán como una versión determinada puedan llevar esa etiqueta de versión seguida de "rc-#", que indica el número de la candidata a lanzamiento; cuando se lanza la versión final, se elimina la etiqueta "rc".
Significado
Técnico
En ingeniería de software
Los números de versión son utilizados en la práctica por el consumidor o cliente para identificar o comparar su copia del producto de software con otra copia, como la versión más reciente publicada por el desarrollador. Para el programador o la empresa, el control de versiones se suele utilizar revisión por revisión, donde las partes individuales del software se comparan con revisiones más recientes o más antiguas de esas mismas partes, a menudo en un sistema de control de versiones colaborativo .
En el siglo XXI, más programadores comenzaron a utilizar una política de versiones formalizada, como la política de versiones semánticas. [ 1 ] El propósito de estas políticas es facilitar que otros programadores sepan cuándo es probable que los cambios en el código dañen lo que han escrito. Estas políticas son especialmente importantes para las bibliotecas y los marcos de software , pero también pueden ser muy útiles para las aplicaciones de línea de comandos (que pueden ser llamadas desde otras aplicaciones) y para otras aplicaciones (que pueden ser programadas o extendidas por terceros).
Tren de liberación
Un tren de lanzamiento de software es un tipo de calendario de lanzamiento de software en el que se publican varias series distintas de versiones de software para múltiples productos, organizadas en diferentes "trenes" según un cronograma regular. Generalmente, para cada línea de productos, varios trenes de lanzamiento se ejecutan simultáneamente, y cada tren avanza desde su lanzamiento inicial hasta su madurez y retiro según un cronograma planificado. Los usuarios pueden experimentar con un tren de lanzamiento más reciente antes de adoptarlo para producción, lo que les permite experimentar con versiones nuevas y "en bruto" de forma temprana, mientras continúan siguiendo los lanzamientos puntuales del tren anterior para sus sistemas de producción antes de migrar al nuevo tren de lanzamiento a medida que este madura.
La plataforma de software IOS de Cisco utilizó durante muchos años un programa de trenes de lanzamiento con muchos trenes distintos. Más recientemente, varias otras plataformas, incluidas Firefox y Fenix para Android, [ 33 ] Eclipse , [ 34 ] LibreOffice , [ 35 ] Ubuntu , [ 36 ] Fedora, [ 37 ] Python, [ 38 ] digiKam [ 39 ] y VMware [ 40 ] han adoptado el modelo de tren de lanzamiento.
Números de versión internos
El software puede tener un número de versión "interno" que difiere del número de versión que se muestra en el nombre del producto (y que normalmente sigue las reglas de numeración de versiones de forma más consistente). Java SE 5.0, por ejemplo, tiene el número de versión interno 1.5.0, y las versiones de Windows desde NT 4 en adelante han mantenido las versiones numéricas estándar internamente: Windows 2000 es NT 5.0, XP es Windows NT 5.1, Windows Server 2003 y Windows XP Professional x64 Edition son NT 5.2, Windows Server 2008 y Vista son NT 6.0, Windows Server 2008 R2 y Windows 7 son NT 6.1, Windows Server 2012 y Windows 8 son NT 6.2, y Windows Server 2012 R2 y Windows 8.1 son NT 6.3. Windows 10 estaba inicialmente pensado para ser NT 6.4, ya que la primera compilación de Technical Preview compartida con el público tiene el número 6.4.9841. Sin embargo, eso no duró mucho, ya que la versión de Windows 10 se incrementó artificialmente a 10.0 [ 41 ] para que coincidiera con el nombre comercial, lo que resultó en que la primera versión lanzada del sistema operativo se numerara como 10.0.10240. Cabe señalar, sin embargo, que Windows NT solo está en su quinta revisión principal, ya que su primera versión se numeró como 3.1 (para que coincidiera con el número de versión de Windows vigente en ese momento) y el lanzamiento de Windows 10 supuso un salto de versión de 6.3 a 10.0.
Marketing
Es una práctica relativamente común realizar grandes saltos en los números de versión por motivos de marketing. A veces, los proveedores de software simplemente omiten la versión 1.0 o lanzan rápidamente una versión posterior porque muchos clientes consideran que el software 1.0 es demasiado inmaduro para utilizarlo en entornos de producción. Por ejemplo, como en el caso de dBase II , un producto se lanza con un número de versión que da a entender que es más maduro de lo que realmente es.
En otras ocasiones, los números de versión se incrementan para que coincidan con los de la competencia. Esto se puede observar en numerosos ejemplos de numeración de versiones de productos como Microsoft, America Online , Sun Solaris , Java Virtual Machine , SCO Unix y WordPerfect . Microsoft Access pasó directamente de la versión 2.0 a la 7.0 para igualar el número de versión de Microsoft Word .
Microsoft también ha sido objeto de una estrategia de actualización de versiones para ponerse al día, con los navegadores Netscape saltándose la versión 5 a la 6, en línea con Internet Explorer de Microsoft , pero también porque el conjunto de aplicaciones de Mozilla heredó la versión 5 en su cadena de agente de usuario durante el desarrollo previo a la versión 1.0 y Netscape 6.x se construyó sobre la base de código de Mozilla. Otro ejemplo de mantenerse al día con la competencia es cuando Slackware Linux saltó de la versión 4 a la versión 7 en 1999. [ 42 ]
Este enfoque, criticado por muchos porque rompe el significado semántico de las secciones del número de versión, ha sido adoptado por un número creciente de proveedores, incluidos Mozilla (para Firefox ) y Google (para Google Chrome ). [ 43 ]
Promover una especialización secundaria como una principal.
Java de Sun ha tenido en ocasiones un sistema híbrido, donde el número de versión interno siempre ha sido 1.x , pero se ha comercializado haciendo referencia únicamente a la x :
- JDK 1.0.3
- JDK 1.1.2 a 1.1.8
- J2SE 1.2.0 ("Java 2") a 1.4.2
- Java 1.5.0, 1.6.0, 1.7.0, 1.8.0 ("Java 5, 6, 7, 8")
Sun también eliminó el primer dígito de Solaris, por lo que Solaris 2.8 (o 2.9) se denomina Solaris 8 (o 9) en los materiales de marketing.
Un salto similar se produjo con el kit de construcción de PBX de código abierto Asterisk a principios de la década de 2010, cuyos responsables del proyecto anunciaron que a la versión actual 1.8.x pronto le seguiría la versión 10. [ 44 ]
Importancia política y cultural de los números de versión
Versión 1.0 como hito
Las comunidades de software libre y de código abierto tienden a lanzar software pronto y con frecuencia . Las versiones iniciales son números menores que 1, y estas versiones 0.x se utilizan para indicar que el software está incompleto y no es lo suficientemente fiable para su lanzamiento general o utilizable en su estado actual. Los cambios incompatibles con versiones anteriores son comunes en las versiones 0.x. La versión 1.0 se utiliza como un hito importante , lo que indica que el software tiene al menos todas las características principales más las funciones que los desarrolladores querían incluir en esa versión, y se considera lo suficientemente fiable para su lanzamiento general. [ 31 ] [ 32 ] Un buen ejemplo de esto es el kernel de Linux, que se lanzó por primera vez como la versión 0.01 en 1991, [ 45 ] y tardó hasta 1994 en alcanzar la versión 1.0.0. [ 46 ]
Los desarrolladores del emulador de juegos arcade MAME no tienen intención de lanzar una versión 1.0 del programa, ya que siempre habrá más juegos arcade que emular y, por lo tanto, el proyecto nunca podrá completarse del todo. En consecuencia, a la versión 0.99 le siguió la versión 0.100. [ 47 ]
Superstición
- La versión Office 2007 de Microsoft Office tenía un número de versión interno de 12. La siguiente versión, Office 2010, tiene un número de versión interno de 14, debido a supersticiones en torno al número 13. [ 48 ] Visual Studio 2013 es la versión número 12.0 del producto, y la nueva versión, Visual Studio 2015, tiene el número de versión 14.0 por las mismas razones.
- Roxio Toast pasó de la versión 12 a la versión 14, probablemente en un intento por evitar las supersticiones que rodean al número 13.
- Corel WordPerfect Office , versión 13, se comercializa como "X3" ( número romano 10 y "3"). Este procedimiento se ha mantenido en la siguiente versión, X4. Lo mismo ha ocurrido con la suite gráfica de Corel (es decir, CorelDRAW , Corel Photo-Paint ) y su software de edición de vídeo "Video Studio".
- Sybase omitió las versiones principales 13 y 14 en su producto de base de datos relacional Adaptive Server Enterprise, pasando de la versión 12.5 a la 15.0.
- El diccionario Lingvo de ABBYY utiliza la numeración 12, x3 (14), x5 (15).
- SUSE Linux Enterprise omitió las versiones 13 y 14 después de la versión 12 y lanzó directamente SLES 15 en julio de 2018.
- A mediados de la década de 1990, el sistema CMMS Maximo, de rápido crecimiento, pasó directamente de la Serie 3 a la Serie 5, omitiendo la Serie 4 debido a las dificultades de marketing que se percibían en ese número en el mercado chino, donde el 4 se asocia con la muerte (véase tetrafobia ). Esto no impidió el lanzamiento de la versión 4.0 de la Serie 5. (Desde entonces, se ha eliminado la numeración de versiones por "Serie", reiniciando así la numeración tras el lanzamiento de la versión 1.0 de la Serie 5).
Cultura geek
- La distribución SUSE Linux comenzó en la versión 4.2, para hacer referencia a 42 , "la respuesta a la pregunta definitiva sobre la vida, el universo y todo lo demás" mencionada en La guía del autoestopista galáctico de Douglas Adams .
- Una distribución de Slackware Linux fue versionada 13.37, haciendo referencia a leet .
- Finnix pasó directamente de la versión 93.0 a la 100, en parte para cumplir con la afirmación "No habrá Finnix '95", una referencia a Windows 95. [ 49 ]
- La especificación del formato de archivo de imagen etiquetado (Tagged Image File Format) ha utilizado el número 42 como número de versión interna desde su creación, y sus diseñadores no esperaban modificarlo más durante su existencia (ni la de la especificación), ya que entraría en conflicto con sus directrices de desarrollo.
Ejemplos de software
Pitón
La Python Software Foundation ha publicado PEP 440 – Especificación de identificación de versiones y dependencias, [ 50 ] que describe su propio esquema flexible, que define un segmento de época, un segmento de lanzamiento, segmentos de prelanzamiento y postlanzamiento y un segmento de lanzamiento de desarrollo.
Texas
TeX tiene un sistema de numeración de versiones peculiar , una característica inusual inventada por su desarrollador, Donald Knuth . Desde la versión 3.1, las actualizaciones se han indicado añadiendo un dígito extra al final, de modo que el número de versión se aproxima asintóticamente al número π , por lo que 3.14 equivale efectivamente a 3.2 en la numeración semántica. (Esta es una forma de numeración unaria ; el número de versión es el número de dígitos). Desde 2021, el número de versión ha sido 3.141592653. Esto refleja la gran estabilidad de TeX, y solo se prevén actualizaciones menores. El desarrollador de TeX, Donald Knuth, ha declarado que el "cambio absolutamente definitivo (que se realizará después de [su] muerte)" será cambiar el número de versión a π , momento en el que todos los errores restantes se convertirán en características permanentes. [ 51 ]
De manera similar, el número de versión de Metafont se aproxima asintóticamente al número de Euler, e . [ 51 ] A febrero de 2021, el número de versión es 2.71828182. Metafont también fue ideado por Donald Knuth como complemento de su sistema de composición tipográfica TeX.
Manzana
Durante la época del Mac OS clásico , los números de versión menores rara vez superaban el ".1". Cuando lo hacían, solían pasar directamente al ".5", lo que sugería que el lanzamiento era "más significativo". [ a ] Así, "8.5" se comercializaba como un lanzamiento independiente, que representaba "Mac OS 8 y medio", y 8.6 significaba efectivamente "8.5.1".
Mac OS X se apartó de esta tendencia, en gran parte porque la "X" (el número romano para 10) estaba en el nombre del producto. Como resultado, todas las versiones de OS X comenzaron con el número 10. La primera versión principal de OS X recibió el número de versión 10.0, pero la siguiente versión principal no fue la 11.0. En cambio, se numeró como 10.1, seguida de 10.2, 10.3, y así sucesivamente para cada versión principal posterior. Por lo tanto, la undécima versión principal de OS X se etiquetó como "10.10". Aunque la "X" se eliminó del nombre a partir de macOS 10.12 , este esquema de numeración continuó hasta macOS 10.15. Bajo el esquema de versiones basado en la "X", el tercer número (en lugar del segundo) denotaba una versión menor, y las actualizaciones adicionales por debajo de este nivel, así como las actualizaciones de una versión principal determinada de OS X que llegaban después del lanzamiento de una nueva versión principal, se denominaban Actualizaciones Suplementarias. [ 52 ]
El número romano X se utilizó simultáneamente con fines de marketing en varias líneas de productos. Tanto QuickTime como Final Cut Pro pasaron directamente de la versión 7 a la versión 10, QuickTime X y Final Cut Pro X. Al igual que Mac OS X, estos productos no eran actualizaciones de versiones anteriores, sino programas completamente nuevos. Como en OS X, las versiones principales de estos programas incrementaban el segundo dígito, mientras que las versiones menores se indicaban con un tercer dígito. La "X" se eliminó del nombre de Final Cut con el lanzamiento de macOS 11.0 (véase más abajo), y la marca QuickTime quedó obsoleta cuando el framework se dejó de usar en favor de AVFoundation en 2011 (el programa para reproducir vídeo QuickTime se llamaba simplemente QuickTime Player desde el principio).
La siguiente versión de macOS de Apple, numerada provisionalmente como 10.16, [ 53 ] fue anunciada oficialmente como macOS 11 en la WWDC en junio de 2020 y lanzada en noviembre de 2020. [ 54 ] La siguiente versión de macOS, macOS Monterey , fue lanzada en octubre de 2021 y aumentó su número de versión principal a 12. [ 55 ]
En junio de 2025, Apple anunció un esquema de versiones unificado, utilizando el año junto a la fecha de lanzamiento, similar a los años modelo en los vehículos. Las versiones que se lanzaron en otoño de 2025 son iOS 26, macOS 26, iPadOS 26, tvOS 26, watchOS 26 y visionOS 26. [ 56 ]
Microsoft Windows
El sistema operativo Microsoft Windows se etiquetó inicialmente con números de versión estándar para Windows 1.01 a Windows 3.2 . Después de esto, Microsoft excluyó el número de versión del nombre del producto. Para Windows 95 (versión 4.0), Windows 98 (4.10) y Windows 2000 (5.0), el año de lanzamiento se incluyó en el título del producto. Después de Windows 2000, Microsoft creó la familia Windows Server que continuó el estilo basado en el año con una diferencia: para versiones menores, Microsoft sufijó "R2" al título, por ejemplo, Windows Server 2008 R2 (versión 6.1). Este estilo se ha mantenido consistente hasta la fecha. Sin embargo, las versiones de cliente de Windows no adoptaron un estilo consistente. Primero, recibieron nombres con sufijos alfanuméricos arbitrarios como Windows Me (4.90), Windows XP (5.1) y Windows Vista (6.0). Luego, una vez más, Microsoft adoptó números incrementales en el título, pero esta vez, no eran números de versión; Los números de versión de Windows 7 , Windows 8 y Windows 8.1 son respectivamente 6.1, 6.2 y 6.3. En Windows 10 , el número de versión saltó a 10.0 [ 57 ] y las actualizaciones posteriores del sistema operativo solo incrementaron el número de compilación (que se basa en la fecha) y el número de revisión de compilación de actualización (UBR).
El sucesor de Windows 10, Windows 11 , se lanzó el 5 de octubre de 2021. A pesar de llamarse "11", la nueva versión de Windows no aumentó su número de versión principal a 11. En cambio, mantuvo el mismo número de versión 10.0, utilizado por Windows 10. [ 58 ]
Uso no relacionado con el software
Algunos sistemas de archivos informáticos , como el sistema de archivos OpenVMS , también mantienen versiones de los archivos. El control de versiones entre documentos es relativamente similar al procedimiento utilizado en informática e ingeniería de software, donde con cada pequeño cambio en la estructura, el contenido o las condiciones, el número de versión se incrementa en 1, o en un valor menor o mayor, dependiendo de la preferencia personal del autor y del tamaño o la importancia de los cambios realizados.
Los archivos de dibujo técnico y de software CAD también pueden utilizar algún tipo de número de versión primitivo para realizar un seguimiento de los cambios.
Véase también
Notas
- ↑ La secuencia completa de versiones clásicas de Mac OS (sin incluir parches) es: 1.0, 1.1, 2.0, 2.1, 3.0, 3.2 (saltando 3.1), 4.0, 4.1, 5.0, 5.1, 6.0, 7.0, 7.1, 7.5, 7.6, 8.0, 8.1, 8.5 (saltado), 8.6, 9.0, 9.1, 9.2.
Referencias
- 1 2 3 4 5 Preston-Werner, Tom (2013). Semantic Versioning 2.0.0. Creative Commons. Recuperado de https://semver.org/spec/v2.0.0.html .
- ↑ TENEX, un sistema de tiempo compartido paginado para el PDP - 10 , Bobrow, Burchfiel, Murphy, Tomlinson, marzo de 1972, Communications of the ACM 15(3):135-143.
- ↑ interdependencias de paquetes , Robert Sanders, 25 de febrero de 1994.
- ↑ Error n.° 1167: Los paquetes de desarrollo ELF fallan o tienen dependencias faltantes , Ian Jackson, 30 de julio de 1995.
- ↑ Una Breve Historia de Debian , Javier Fernández-Sanguino et al, 26-10-2021.
- ↑ "PEP 440 – Identificación de versiones y especificación de dependencias | peps.python.org" . peps.python.org . Consultado el 19 de abril de 2023 .
- ↑ Lam, Patrick; Dietrich, Jens; Pearce, David J. (16 de agosto de 2020). «Incorporando la semántica al versionado semántico». Actas del Simposio Internacional ACM SIGPLAN 2020 sobre Nuevas Ideas, Nuevos Paradigmas y Reflexiones sobre Programación y Software . págs. 157–179 . arXiv : 2008.07069 . doi : 10.1145/3426428.3426922 . ISBN 9781450381789. S2CID 221139849 .
- ↑ "Nuevo sistema de numeración de versiones" . Minecraft.net .
- ↑ "Control de versiones de la interfaz de la biblioteca en Solaris y Linux" .
- ↑ "Sistema de control de versiones de Libtool" . Documentación de Libtool .
- ↑ "Conceptos de numeración de versiones: el proyecto Apache Portable Runtime" . Consultado el 11 de abril de 2009 .
- ↑ "Daemonita: La ciencia de la numeración de versiones" . 14 de septiembre de 2004. Consultado el 11 de abril de 2009 .
- ^ Frank Kyne, Bert de Beer, Luis Martínez, Harriet Morril, Miha Petric, David Viguers, Suzi Wendler. "Prácticas recomendadas de System z Parallel Sysplex" . 2011. pág. 6.
- ↑ "Registro de cambios de Opera para Windows" . Opera Software . 2014. Consultado el 6 de noviembre de 2014 .
- ↑ "Inicio" . Wiki de documentación de Movable Type . 25 de junio de 2013. Consultado el 6 de noviembre de 2014 .
- ↑ " Estándares de codificación GNU: Versiones" . Proyecto GNU . 13 de mayo de 2014. Consultado el 25 de mayo de 2014.
Debe identificar cada versión con un par de números de versión: una versión principal y una secundaria. No tenemos inconveniente en usar más de dos números, pero es muy improbable que realmente los necesite.
- 1 2 Uruk (28 de febrero de 2000). "Locura de numeración de versiones" . www.advogato.org . Archivado del original el 25 de julio de 2001. Recuperado el 11 de abril de 2009 .
- ↑ Manual de políticas de Debian, versión 5.6.12
- ↑ "Historial de versiones de Java Edition" . Wiki de Minecraft . Consultado el 24 de septiembre de 2023 .
- ↑ "Node.js es SemVer" . El blog de NodeSource: tutoriales, guías y actualizaciones de Node.js. 15 de septiembre de 2015. Introdujo Node con un esquema de versionado par/impar al estilo del kernel de Linux . Consultado el 26 de marzo de 2018 .
- ↑ "Control de versiones del calendario — CalVer" . calver.org . Consultado el 10 de octubre de 2019 .
- ↑ Markus Kuhn (19 de diciembre de 2004). "Notación internacional estándar de fecha y hora" . Universidad de Cambridge . Consultado el 11 de abril de 2009 .
- ↑ Jeff Atwood (15 de febrero de 2007). "Horror en la programación: ¿Qué hay en un número de versión?" . Consultado el 15 de noviembre de 2016 .
- ↑ Per Christensson (20 de octubre de 2006). "¿Qué significan las siglas "NT" en Windows NT?" . Consultado el 13 de agosto de 2022 .
- ↑ "Preguntas frecuentes de Debian: 6.2.2 ¿De dónde vienen estos nombres en clave?" . Archivado del original el 10 de diciembre de 2020 . Consultado el 2 de enero de 2021 .
- ↑ "BLAG Linux y GNU" . DistroWatch.com . Consultado el 29 de septiembre de 2011 .
- ↑ "Noticias y actualizaciones: BLAG" . DistroWatch.com . Consultado el 29 de septiembre de 2011 .
- ↑ "descarga de blag" . blag . Consultado el 29 de septiembre de 2011 .
- ↑ "Control de versiones Kelvin · jtobin.io" . jtobin.io . Consultado el 17 de marzo de 2021 .
- ↑ urbit.org. "Hacia un sistema operativo congelado – Urbit" . urbit.org . Consultado el 17 de marzo de 2021 .
- 1 2 "ToaruOS 1.0, sistema operativo de código abierto lanzado tras más de 6 años de desarrollo" . 13 de febrero de 2017. Consultado el 23 de mayo de 2017 .
- 1 2 Gilbertson, Scott. "El vino se dirige a su lanzamiento 1.0. Finalmente" . WIRED . Wired . Consultado el 23 de mayo de 2017 .
- ↑ "Calendario de lanzamientos de Firefox – MozillaWiki" . wiki.mozilla.org .
- ↑ "Lanzamiento simultáneo – Eclipsepedia" . wiki.eclipse.org .
- ↑ "ReleasePlan – La Wiki de la Fundación Documental" . wiki.documentfoundation.org .
- ↑ "Versiones – Wiki de Ubuntu" . wiki.ubuntu.com .
- ↑ "Versiones – Wiki del Proyecto Fedora" . fedoraproject.org .
- ↑ "PEP 0 – Índice de propuestas de mejora de Python (PEP)" . Python.org .
- ↑ "Plan de lanzamiento" . digikam.org . 25 de marzo de 2018.
- ↑ "VMware Product Release Tracker (vTracker)" . Virten.net . 13 de febrero de 2015.
- ↑ Tyrsina, Radu (21 de noviembre de 2014). "El kernel de Windows 10 NT se actualiza de la versión 6.4 a la 10 en compilaciones internas recientes" . Windows Report . Consultado el 7 de julio de 2024 .
- ↑ "Preguntas frecuentes sobre Slackware" .
- ↑ "Firefox copiará el calendario de desarrollo de Google Chrome: nuevas versiones cada seis semanas" . 17 de marzo de 2011.
- ↑ Kevin P. Fleming (21 de julio de 2011). "La evolución de Asterisk (o: cómo llegamos a Asterisk 10) | Inside the Asterisk" . Inside the Asterisk . Digium, Inc. Recuperado el 25 de mayo de 2014 .
- ↑ Torvalds, Linus: Notas para la versión 0.01 de Linux kernel.org, 1991.
- ↑ Calore, Michael (25 de agosto de 2009). "25 de agosto de 1991: Un chico de Helsinki impulsa la revolución de Linux" . WIRED . Consultado el 8 de febrero de 2018 .
- ↑ Still, Michael; Smith, Stewart (15 de diciembre de 2007). Practical MythTV: Building a PVR and Media Center PC . Nueva York: Springer-Verlag New York, Inc. pág. 9. ISBN 978-1-59059-779-8. Consultado el 15 de abril de 2018 .
- ↑ Paul Thurrott (14 de mayo de 2009). "Preguntas frecuentes sobre Office 2010" . Archivado del original el 19 de abril de 2009. Consultado el 30 de diciembre de 2009 .
- ↑ Finnie, Ryan (23 de octubre de 2010). "Lo siento" . Recuperado el 9 de febrero de 2012 .
- ↑ "PEP 440 – Identificación de versiones y especificación de dependencias" .
- 1 2 Knuth, Donald E. (diciembre de 1990). "El futuro de TeX y Metafont" (PDF) . TUGboat . 11 (4): 489. Recuperado el 7 de septiembre de 2023 .
- ↑ "Apple lanza una actualización complementaria de macOS 10.13.3 con corrección de errores en telugu" . Consultado el 26 de marzo de 2018 .
- ↑ Gallagher, William (22 de junio de 2020). "Apple lleva macOS al siguiente nivel, o mejor dicho, a la versión 10.16" . AppleInsider.
- ↑ Heater, Brian. "Apple presenta macOS 11.0 Big Sur" . TechCrunch . Archivado del original el 22 de junio de 2020. Consultado el 22 de junio de 2020 .
- ↑ De Looper, Christian (12 de octubre de 2021). "Apple macOS Monterey: Todo lo que sabemos hasta ahora" . BGR. Archivado del original el 10 de octubre de 2021.
- ↑ Dent, Steve (9 de junio de 2025). "iOS 26 es oficial: Apple cambia los números de versión por años para los nombres de sus sistemas operativos" . Engadget . Consultado el 11 de junio de 2025 .
- ↑ "Anuncio de Windows 10" . Blog de Windows . 30 de septiembre de 2014.
- ↑ "Windows 11: Una nueva era para la PC comienza hoy" . Blogs de Windows . 4 de octubre de 2021.
Enlaces externos
- Plan de lanzamiento de Document Foundation para LibreOffice, que muestra las secuencias de lanzamiento.
- Control de versiones
- Historiales de versiones de software
- Lanzamiento de software