👆👆👆 Suscríbete a nuestro podcast. Y mejor aún, a nuestro boletín mensual: todo cosas útiles que no encontrarás en otro lado, una vez al mes.
El pasado día 14 de mayo de 2024 Microsoft dejó de dar soporte a .NET 7. Sin embargo, .NET 6 sigue estando soportado todavía (aunque le queda poco). O sea, que ahora mismo tenemos .NET 6 y .NET 8 como versiones vigentes, pero no .NET 7...
¿Cómo es posible esto? ¿Qué significa que la versión ya no esté soportada? ¿Cómo funciona todo esto de las versiones de .NET?
Te lo cuento a continuación...
📺 Puedes ver este post en vídeo si lo prefieres: ¿Cómo funcionan las versiones en .NET?
¿Cómo funciona el soporte de .NET?
Antes de nada, una cosa que deberíamos tener clara es qué significa que una versión de .NET tiene soporte oficial de Microsoft.
Pues básicamente que Microsoft se responsabiliza de la calidad de la versión, corrigiendo los posibles errores que aparezcan, especialmente si son errores de seguridad. Sacan una versión menor de .NET con parches casi cada mes.
Además, mientras la versión está vigente, suelen sacar actualizaciones de vez en cuando que añaden alguna funcionalidad al producto, que suele ser pequeña y, lo más importante, que no rompe la compatibilidad hacia atrás, por lo que la puedes actualizar sin miedo a que nada falle.
Si eres una empresa y quieres contratar el soporte técnico directo con Microsoft, mientras la versión esté soportada puedes hacerlo. Les pagas y te ayudan, sin tener que depender de los voluntarios de Stack Overflow ni de la comunidad en general. A ti esto quizá no te importe demasiado, pero a las empresas de cierto tamaño, créeme, sí les importa mucho.
Por lo tanto, tienes que tener claro que si la versión de .NET que estás usando para programar ya no está soportada, en cualquier momento puedes tener un problema. Sobre todo si es de seguridad, ya que no lo van a solucionar.
Y es por esto que se recomienda siempre ir actualizando las versiones aunque, como veremos enseguida, no de cualquier manera.
El periodo de soporte de la versión "tradicional" de .NET
.NET "clásico", o sea lo que ahora se llama simplemente .NET framework, o sea, .NET hasta su versión 4.8, utilizaban una forma de soporte que Microsoft denominaba "ciclo de vida fijado" (te dejo enlaces a todo esto justo debajo) que es el que tienen muchos de sus productos. Este tipo de soporte solía ofrecer un número fijo de años de soporte estándar (en el que se corregían bugs, problemas de seguridad e incluso se le añadían funcionalidades a la versión principal) y otros tantos años de soporte extendido (en los que solo se corregían problemas de seguridad). Pero este soporte no estaba condicionado a la aparición de nuevas versiones del framework.
El tiempo de soporte mínimo que Microsoft garantizaba a cualquier producto era de 5 años, con un soporte extendido en la mayoría de los casos de al menos otros tantos. Por lo que una versión tradicional de .NET podías tenerla funcionando sin preocuparte al menos de los problemas de seguridad del producto, al menos una década. No estaba nada mal.
De hecho, y esto es muy interesante, .NET "clásico" ahora mismo tiene soporte "infinito" (así, entre comillas), ya que forma parte del sistema operativo Windows y se actualiza como un componente más del mismo. Nunca van a sacar una nueva versión, pero sí que se corregirán los problemas de seguridad:
Es decir, es como si estuviese en un "soporte extendido" perpetuo lo cual, al menos a mí, me parece algo sensacional y que le da valor a esta versión antigua y superestable.
El periodo de soporte de la versión "moderna" de .NET
Las cosas cambiaron mucho cuando apareció .NET Core. Aunque, en realidad, el cambio a lo que soporte de versiones se refiere, se produjo cuando llegó .NET 5, la nueva versión (en teoría) unificada del framework, allá por noviembre de 2020, en plena pandemia del COVID-19.
A partir de ese momento .NET empezó a lanzar versiones "major" o principales una vez al año, en noviembre. O sea, cada noviembre cambia el numerito: .NET 5, 6, 7 y actualmente la 8, con posibles actualizaciones y parches por el medio, de noviembre a noviembre.
Pero no todas las versiones principales son iguales en cuanto al soporte que da Microsoft. Existen versiones con soporte estándar o STS y versiones con soporte a largo plazo o LTS (del inglés Long Term Support).
Es importante saber que las versiones pares de .NET, por ejemplo .NET 6 o la actual .NET 8, son versiones LTS. Y las impares, como .NET 7, son versiones estándar.
Y esto es importante porque:
- Las versiones "estándar" de .NET o STS están soportadas por Microsoft durante año y medio año.
- Las versiones LTS de .NET, sin embargo, tienen un soporte más largo: 3 años.
A partir de que se acaba el soporte de una versión pues, lo dicho: ya puedes tener el agujero de seguridad más grande, que Microsoft no va a sacar el parche. Tienes que actualizarte. Por eso es tan importante tenerlas controladas.
Por eso, en este año 2024 resulta que tenemos como versiones soportadas la 6 y la 8, pero paradójicamente la 7 no está soportada desde el 14 de mayo, que es cuando se cumplió 1 año y medio desde que sacaron la 6.
La versión 6 dejará de estar soportada en noviembre, cuando salga .NET 9 que será con soporte estándar (es impar, recuerda). En ese momento volveremos a tener dos versiones soportadas con numeración consecutiva, aunque la 8 durará más que la 9.
Todo super claro, en fin...
Un inciso: en realidad la duración del soporte durante año y medio o 3 años no es exactamente así. La correcto es decir que las estándar se soportan hasta medio año después de que salga la siguiente versión (que es una LTS al año siguiente). Y las LTS se soportan durante 1 año tras salir la siguiente LTS (que es a los dos años). O sea, que en la práctica son aproximadamente cada 1,5 y 3 años, por eso se suele decir eso. Pero, otra vez, conviene conocer el detalle.
Otro inciso por si te lo encuentras escrito por ahí: a las versiones STS o estándar las llamaron inicialmente, al mas puro estilo Microsoft, "versiones current", o sea, actuales si lo traducimos al español. Lo cual es una denominación objetivamente confusa y que puede dar lugar a equívocos. Así que, menos mal que lo cambiaron y ahora son versiones STS o estándar, que deja algo más claro el significado.
Soporte de .NET MAUI
Dentro de .NET, MAUI es un animal distinto. Como tienen que lidiar con muchos sistemas operativos (Windows, macOS, iOS y Android como mínimo), y con muchas herramientas de terceros (como XCode de Apple o el SDK de Android), MAUI tiene unos plazos de soporte diferentes a los de .NET.
Además, aunque la versión principal (o sea, la 6, 7, 8, etc..) se actualiza junto a .NET, las versiones menores que hay por el medio van completamente a su aire y no dependen de las de .NET. Por eso, todas las versiones de .NET MAUI son con soporte estándar, es decir, se les ofrece soporte hasta 6 meses después de aparecer la siguiente versión grande. O sea, en la práctica se les da soporte durante año y medio.
Pero, además, hay otro detalle pequeño, pero muy importante: si sale una versión "minor" de MAUI, es decir, una que cambie el segundo número de la versión y no el tercero, la anterior deja de estar soportada automáticamente y solo se soporta la más reciente.
O sea, por ejemplo, si sale .NET MAUI 8.1, la versión 8.0 de MAUI deja de estar soportada y deberíamos actualizarnos de inmediato a la nueva que, por otro lado, garantiza en principio que nada va a romper (en la práctica ya lo veremos cuando lo hagamos).
Esto es así, como digo, para seguirle el ritmo a las herramientas y SDKs de terceros, pero también, hace que cada poco tiempo tengamos que estar actualizando la versión para mantenernos al día.
En la práctica esto significa que si programas aplicaciones multiplataforma con .NET MAUI prepárate a estar actualizándote muy a menudo. Esto es algo que, para ser sinceros, también pasaba con Xamarin y que era un dolor, porque en ese caso las actualizaciones rompían cosas muy a menudo. Ahora parece que todo es mucho más estable. Pero en desarrollo móvil es lo que hay...
Conclusiones
Bueno, el resumen de todo esto es el siguiente y es más sencillo de lo que parece:
- Cada año, en noviembre, sale una nueva versión "major" de .NET.
- Si el número de la versión es impar, se le da soporte por año y medio.
- Si es par, se trata de una versión con soporte a largo plazo: de 3 años.
- En el caso de .NET MAUI el soporte siempre es de año y medio y, en la práctica, hay que actualizarse siempre, incluso en versiones menores.
¿Y cómo sabes la fecha exacta hasta la que está soportada una versión de .NET? Pues simplemente te vas a la página de descarga de .NET y allí, al lado de cada una (incluso de las viejas) te lo dice.
¿Y qué pasa si estoy trabajando con una versión que ya no está soportada, por ejemplo la 7? Pues que deberías actualizarte lo antes posible. Microsoft documenta los "breaking changes" de cada versión para que puedas saber de antemano si algo te afecta. La verdad es que generalmente no suele haber grandes cosas y puedes migrar de versión sin problema pero, sobre todo si trabajas con .NET MAUI o con ASP.NET, debes leer bien la lista de cosas que rompen antes de hacerlo para no llevarte sorpresas.
Un soporte de 3 años puede parecer mucho para los tiempos que corren, pero si lo comparamos con los tiempos que daban en .NET tradicional es muy, muy inferior. De hecho, .NET platform, como forma parte de Windows y no va a evolucionar, en la práctica está soportada para siempre (o, al menos, mientras exista Windows).
Esto para un desarrollador individual o un pequeño equipo quizá no suponga demasiado, pero para organizaciones grandes puede ser un problema. Si comparamos con otras plataformas, como Java, el soporte de las LTS es bastante más largo y, dependiendo de la versión puede durar hasta 15 años, por eso muchas empresas están todavía con Java 8 cuando vamos en la versión 22. Del soporte de Java hablaré otro día, quizá pronto...
Espero que todo esto te aclare el funcionamiento de las versiones y del soporte de .NET.
¡Hasta el próximo!