O ambiente de execução do Node.js está se tornando mais popular com equipes que precisam construir aplicações web dinâmicas, do lado do servidor. Atualmente mantido pela OpenJS Foundation, Node.js tem quase 2.500 colaboradores e é o projeto open-source de crescimento mais rápido, com mais de 1 bilhão de downloads até o momento.
Desde seu lançamento em 2009, muitas grandes organizações agora usam o Node.js para construir aplicações corporativas e melhorar o desempenho das aplicações. Uma delas é o PayPal, que reduziu o tempo de resposta de sua página em cerca de 35% quando implantou o Node.js. Outros usuários do Node.js incluem IBM, NASA, Uber, Netflix e até mesmo Microsoft.
Embora esteja se tornando a linguagem de desenvolvimento de servidor web preferida, os usuários devem estar cientes de que existem considerações de licenciamento e segurança do Node.js.
O que é o licenciamento do Node.js?
Node.js usa uma licença MIT permissiva para a biblioteca principal. A licença MIT aplica-se a todas as partes do módulo Node.js não mantidas externamente.
As licenças adicionais que se aplicam às bibliotecas de terceiros restantes incluem a licença BSD da Cláusula Zero e a licença ISC com o arquivo de licença completo disponível aqui.
Estas licenças permitem a qualquer pessoa usar, modificar e redistribuir o software a qualquer momento, com apenas a atribuição necessária enquanto indeniza os contribuidores. Comparada à GNU GPL, a licença MIT não requer que os desenvolvedores disponibilizem seu próprio código fonte ao redistribuir seu software.
Quais são os riscos de licenciamento e segurança do Node.js?
Node.js usa um gerenciador de pacotes (npm) que tem mais de 1.000.000 de pacotes disponíveis. A comunidade de desenvolvedores do Node.js é uma das mais produtivas e em 2019, a plataforma npm tinha crescido 250%. Um dos desafios para desenvolvedores com segurança do Node.js é garantir que qualquer pacote e todas as dependências ligadas usadas na produção recebam atualizações e patches regulares.
Developers têm que auditar todas as dependências de pacotes frequentemente para encontrar quaisquer vulnerabilidades recentemente descobertas. Ao construir novos recursos, os desenvolvedores precisam garantir que eles usem pacotes seguros e corrijam quaisquer vulnerabilidades conhecidas antes de liberar seu código.
Quanta licença do Node.js é de código aberto?
As empresas adoram o modelo de licença do Node.js, pois ele permite que elas forcem a base de código, construam seus próprios snippets do lado do servidor, e atualizem seus pacotes vinculados apenas quando necessário. Licenças permissivas dão às equipes a opção de tornar sua base de código proprietária no futuro, ao contrário do princípio copyleft da GNU GPL.
Em termos de licença, os desenvolvedores devem saber quais softwares licenciam seus pacotes porque há muitos pacotes GPL disponíveis no npm. Em alguns casos, os desenvolvedores fornecerão o mesmo pacote sob uma licença comercial, o que impediria o acionamento da cláusula de reciprocidade na GPLv3.
Quais são os benefícios do modelo de licença Node.js?
Debates de licenciamento permissivos versus copyleft continuarão, mas o Node.js parece provar que os interesses comerciais não têm que impedir a colaboração. Para equipes que trabalham em ambientes altamente classificados (como a NASA), o Node.js e o ecossistema npm tem provado ser um recurso valioso. Com um modelo que permite que equipes individuais decidam se todo o seu código fonte deve ou não estar disponível, o Node.js dá a máxima liberdade aos usuários.
Os benefícios de desenvolvimento do Node.js também incluem:
- Oferece solução de programação JavaScript do lado do servidor
- Remanda altamente escalável tanto na direção horizontal como vertical
- Dispõe aos desenvolvedores uma única linguagem de programação para aplicações front e back-end
- Aprimora a performance da aplicação com operações de E/S sem bloqueio
- Suporte dos líderes da indústria com representantes no Node.js Foundation
Pode usar pacotes licenciados Node.js em software comercial?
A partir do momento em que uma equipe baixa e modifica o Node.js, eles têm a liberdade de fazer direitos autorais de sua versão do software a qualquer momento e aplicar uma licença mais restritiva em seu próprio trabalho.
A maioria dos projetos do Node.js permanecem em código aberto e as empresas utilizam-no para frameworks, bibliotecas e ferramentas. Para qualquer equipe que utilize pacotes npm-sourced, deve haver zero licenças recíprocas contidas dentro de qualquer um dos módulos (a menos que se pretenda). Todo pacote e módulo vinculado deve estar sob a licença MIT ou qualquer uma das licenças estilo BSD, incluindo a licença ISC.
Como utilizar uma licença Node.js?
Any component built on the Node.js library can use any of the available software licenses upon distribution. Os contribuidores preferem usar licenças permissivas, pois dá aos utilizadores subsequentes a liberdade de tomarem as suas próprias decisões sobre o seu software no futuro. Assim que a equipe começar a confiar em outros pacotes, eles precisarão garantir que seu trabalho esteja de acordo com quaisquer outras restrições implícitas nesses módulos.
Em npm, há um comando específico para adicionar texto de licença a todos os arquivos de projeto. Os desenvolvedores podem especificar o nome da licença e o nome do autor, com uma lista completa de licenças compatíveis disponíveis aqui.
Como o Node.js aborda riscos de segurança em pacotes?
Quando um desenvolvedor ou equipe de segurança descobre uma nova vulnerabilidade, o Node.js irá lançar uma versão com uma atualização de segurança. Em alguns casos, um patch manual será necessário. Os desenvolvedores precisam rever suas vulnerabilidades de pacotes frequentemente usando o comando de auditoria, que fornecerá uma correção recomendada para a falha de segurança.
Mantenha suas dependências de base de código com Snyk
Any projeto que roda em produção deve estar sujeito a vulnerabilidade regular e auditoria de licença para todas as dependências.
Snyk ajuda as equipes a escanear todas as dependências e garantir que elas possam gerenciar a conformidade da licença durante todo o projeto. Para as equipes de desenvolvimento do Node.js, ter uma supervisão clara de todos os pacotes e garantir a conformidade com as licenças durante cada estágio do projeto pode ajudar a evitar problemas maiores que se infiltram na base de código.
Para ver como o Snyk pode ajudar sua equipe a gerenciar a conformidade com as licenças – agende uma demonstração hoje mesmo.