Esta tradução pode não refletir as alterações feitas desde 2022-01-02 ao original em Inglês.

Você deveria dar uma olhada nas alterações. Por favor, veja o README de traduções para informações sobre a manutenção de traduções a este artigo.

Rótulos web de licença de JavaScript: plano de fundo e raciocínio

Introdução

Os usuários que navegam na Web hoje em dia normalmente usam grandes quantidades de software privativo em seus computadores, geralmente sem saber. O software livre está tendo sucesso como programas que rodam diretamente nas máquinas do usuário, em parte devido à proteção do copyleft, que garante que os usuários sejam avisados com antecedência quando um determinado programa é livre para eles usarem, estudarem, compartilharem e modificarem. Na Web, os navegadores baixam e executam JavaScript sem nunca informar os usuários sobre a licença do programa ou sobre suas liberdades – ou como outros programas negam as liberdades dos usuários.

Para resolver esse problema, desenvolvemos o programa LibreJS, que reconhece código JavaScript não trivial e verifica sua licença. Seu funcionamento depende da especificação de licenças de forma que um programa que não possui inteligência humana possa reconhecer de forma confiável. Além disso, todas as licenças de software GNU exigem que os distribuidores declarem a licença com o software, para que os destinatários conheçam seus direitos e digam onde encontrar o código-fonte.

A maneira mais simples de especificar a licença é com um comentário estilizado no código JavaScript. No entanto, isso pode ser inconveniente para arquivos de biblioteca minificados, por isso desenvolvemos outra forma de declarar suas licenças: rótulos web de JavaScript.

Raciocínio

As condições das licenças de software livre para incluir uma cópia dos termos da licença e acesso ao código-fonte são quase sempre fáceis de seguir quando o software é distribuído pela Web ou por outros canais da Internet. No entanto, a distribuição de JavaScript incorporado em sites da Web é complicada por alguns fatores exclusivos: os visitantes geralmente recebem o software sem solicitá-lo expressamente, e os webmasters podem servir apenas um único arquivo de código JavaScript (por exemplo, não podem enviar um pacote de arquivos que inclui outros recursos requeridos pela licença).

Essas questões combinadas deixam os webmasters com poucas maneiras óbvias de fornecer material adicional exigido pelas licenças de software livre. A solução mais simples seria servir apenas JavaScript na forma de código-fonte, com uma cópia completa da licença em seus comentários. Isso pode ser aceitável em sites menores, mas quando o JavaScript começa a representar muito tráfego repetido, os webmasters ficam compreensivelmente relutantes em fornecer tantos dados. Nosso método dá a eles um lugar claro para fornecer recursos de licença adicionais – e os visitantes um local claro para procurá-lo – abordando estes dois pontos. Primeiro, torna a distribuição de software visível ao oferecer “informações de licença do JavaScript” através de um link. A página vinculada fornece aos webmasters um espaço onde eles podem publicar os recursos que são adequadamente proeminentes, mas não confusos para os visitantes.

Legibilidade por máquina

A fim de tornar mais fácil para as pessoas rejeitarem o JavaScript não livre em seus navegadores, nosso método é específico o suficiente para que um plug-in ou outro software encontre a tabela de informações de licença JavaScript do site, confirme que todo o JavaScript está em uma licença, faça o download do código-fonte e confirme se ele corresponde ao JavaScript otimizado que está sendo exibido no site. Dessa forma, os visitantes podem verificar de forma rápida e conveniente se o JavaScript é livre e decidir se desejam ou não executá-lo. O LibreJS é um plug-in para navegadores baseados no Mozilla que ajuda os usuários a evitar a execução de JavaScript não livre, e implementará essas verificações para aprimorar seus recursos.

Nós consideramos o uso de outro formato como o RDF como base para o nosso sistema, a fim de simplificar este trabalho para os programadores, dando-lhes informações mais detalhadas em um formato facilmente analisado. No entanto, nosso objetivo era tornar essa informação acessível aos leitores humanos em primeiro lugar, e às máquinas em segundo lugar. Usar HTML bem estruturado forneceu a melhor correspondência com essas prioridades.

Próximas etapas

Não estamos dizendo que os webmasters que hospedam o software livre JavaScript devem seguir esse método específico para cumprir as licenças. Toda licença de software livre estabelece claramente suas próprias condições, e qualquer webmaster que queira usar um método diferente que atenda a essas condições é bem-vindo a fazê-lo. No entanto, esse método tem a vantagem de tornar as informações completas sobre licenças prontamente acessíveis aos visitantes – um problema que tem sido difícil de resolver até o momento – sem comprometer a capacidade dos webmasters de veicular o JavaScript da maneira que consideram melhor.

Estamos muito interessados em ouvir comentários e sugestões sobre outras formas de atingir os mesmos objetivos e, ao mesmo tempo, tornar o sistema mais útil para webmasters, visitantes do site ou desenvolvedores que trabalham com software de verificação de licenças. Se obtivermos sugestões suficientes para publicar um novo método que seja visivelmente melhor em relação a este, faremos isso. (É por isso que esse método usa um identificador tão detalhado para a tabela de informações de licença: para permitir que o software diferencie esse método de outros que possamos criar no futuro.) Se esse for um problema de seu interesse, inscreva-se na lista de discussão do LibreJS e escreva com seus comentários e sugestões. Estamos ansiosos para ouvir você.