JavaScript

12 fev, 2020

Entendendo o ciclo de publicação do Node.js

Publicidade

O ano de 2020 promete muitas novidades muito boas! Já vimos em um artigo anterior que o JavaScript vai emplacar uma série de novas mudanças e uma série de funcionalidades muito legais no decorrer dos meses! Agora, e o Node?

O Node.js era mantido pela antiga Node Foundation, e agora, depois de anunciar a fusão das duas fundações, é mantido pela JS Foundation, a mesma organização que se encarrega de tomar conta também do JavaScript. Isso é muito bom, pois cria uma certa unidade na área e mantem tudo unificado sob um mesmo teto. Porém, o fluxo de releases do Node é completamente diferente do JavaScript.

Releases do Node.js

O runtime do Node segue um calendário bem estrito através de semantic versioning. Novas versões major são lançadas a cada seis meses, sempre em outubro e abril. A estas versões majors damos o nome de Atuais (ou, em ingles, Current). Atualmente, estamos na versão 13 do Node.js, que foi lançada em Outubro de 2019, e vamos para a versão 14 que será lançada em Abril. O status de atual é mantido por seis meses, isto é feito para que os desenvolvedores de pacotes e bibliotecas possam adequar seu código à nova versão em um tempo hábil.

Assim como o Ubuntu e outros sistemas famosos, os números das versões do Node importam sim! A mudança da versão 13 para a 14 é crucial para entender o processo pelo qual o Node.js passa e como ele funciona. Todas as versões ímpares (por exemplo, a 7, 9, 11 e a própria 13) são lançadas em outubro, sempre tem uma vida curta, de, no máximo, 6 meses e não são consideradas como sendo versões estáveis para produção. Elas são feitas para poder testar novas funcionalidades e aplicar mudanças drásticas que podem impactar várias áreas do ecossistema, pense nelas como uma versão “beta”. Todas as alterações e funcionalidades que sobreviverem a uma versão ímpar serão levadas para a próxima versão par do runtime.

Como era de se esperar, versões pares (por exemplo, 10, 12 e a próxima versão, 14) são lançadas em abril e são consideradas versões oficiais e estáveis do Node.js. Após o lançamento de uma versão par em abril, a versão ímpar anterior imediatamente perde suporte e para de receber novas atualizações. Porém é importante notar que, como dissemos antes, todas as versões major se mantém como atuais por 6 meses, então isso significa que esta versão par sofrerá mudanças e novas implementações até o lançamento da próxima versão ímpar em outubro novamente.

Após o lançamento da próxima versão ímpar (no nosso caso seria a 15), a versão par anterior muda de status e se torna ativa, que é o que conhecemos como LTS (Long-Term Support), estas versões são consideradas próprias para produção por, pelo menos mais um ano. Recebendo correções críticas, bugfixes e outras atualizações de segurança regularmente.

Por isso que, quando entramos no site oficial do node, temos a opção de baixar as duas versões: a LTS e a Current:

O conceito de LTS não é novo e já existe e é utilizado em diversas aplicações de grande porte, desde pequenas libs até grandes sistemas operacionais e embarcados. A ideia com um LTS é prover uma “garantia do fabricante” de que aquele sistema vai continuar sendo atualizado não só com atualizações de segurança, mas também com novas implementações, melhorias de performance e outras mudanças compatíveis a fim de que nada que exista durante o tempo de LTS desta versão possa se tornar incompatível com ela.

Após o período de 12 meses em LTS, as versões do Node finalmente se aposentam e entram no estado de Manutenção. Este estado é uma variação do LTS, onde o runtime vai receber somente atualizações críticas de performance, bugs ou segurança. Este estágio dura 18 meses, durante este tempo a versão ainda é considerada production ready (pronta para produção) porém com um aviso que será depreciada em breve.

Veja que o período de manutenção sempre vai se iniciar em abril e vai terminar um pouco depois de abril do ano seguinte, isso significa que esta versão estará como LTS durante o lançamento da próxima versão ímpar e também durante a próxima versão par, deixando os usuários cobertos com uma versão LTS pronta para uso até que a próxima versão se torne pronta para entrar em produção.

Podemos ver mais informações sobre este processo de lançamento no site oficial (e também em outros sites de forma mais detalhada), mas, para nos ajudar, vamos dar uma olhada na tabela de lançamentos:

Estamos em janeiro de 2020, portanto temos a seguinte estrutura atualmente:

  • Versão Atual (Current): 13 (até abril)
  • Versão Ativa (LTS): 12
  • Próxima Versão estável: 14 (a partir de abril)

Todas as versões pares do Node também ganham codenomes para facilitar, como podemos ver na tabela abaixo:

Veja que a data de término de todas as versões pares (LTS) são no final dos meses de abril, enquanto as ímpares são no início dos meses de junho. Isto porque as versões ímpares possuem um período de manutenção curto de 2 meses para que uma versão seja finalizada corretamente até a próxima assumir.

Em outubro de 2020 devemos ter o seguinte cenário:

  • Versão Atual (Current): 14 (até outubro)
  • Versão Ativa (LTS): 12
  • Próxima Versão estável: 16 (a partir de abril de 2021)

Conclusão

Agora que entendemos melhor o ciclo de publicação do Node.js, fiquem ligados para o próximo artigo onde vou falar melhor sobre o que está por vir no Node.js em 2020!