Desenvolvimento

27 jun, 2018

O que todo engenheiro deve saber sobre licenças de software de código aberto e IP

Publicidade

Defensores de software de código aberto promovem seus benefícios, tal qual como a forma como a natureza de revisão por pares do desenvolvimento de crowdsourcing gera confiabilidade, e como esse código transparente permite que os desenvolvedores encontrem e corrijam falhas de segurança.

Como muitas empresas optam por usar software de código aberto, os engenheiros que se tornam especialistas em um projeto de código aberto podem achar mais fácil traduzir suas habilidades em diferentes ambientes de trabalho. Além dessas vantagens, os engenheiros envolvidos no desenvolvimento de software de código aberto apreciam a camaradagem que encontram nas comunidades que se formam em torno de cada projeto.

A dimensão legal do software de código aberto pode ser um mistério para muitos engenheiros. No entanto, os direitos e obrigações legais, definidos tipicamente dentro de uma das várias licenças de código aberto, definem usos autorizados e não autorizados do projeto de código aberto. Além disso, a licença pode impor obrigações a certos usos autorizados. Conforme discutido abaixo, algumas dessas obrigações podem ser incompatíveis com o modelo de negócios de uma empresa.

Para entender melhor as vantagens e desvantagens legais do código aberto, nos reunimos com três advogados da equipe jurídica da Uber, Matt Kuipers, Rakesh Michael e Samantha Hsu, que estão supervisionando essa área de nossa pilha de tecnologia.

Responsável por abrir o caminho para o lançamento de software desenvolvido internamente para o público e examinar quais softwares de código aberto podemos integrar com nossas próprias soluções, o conhecimento de engenharia exclusivo dessa equipe facilita uma experiência colaborativa e construtiva quando se trata de navegar nesse processo.

Matt, que trabalha como advogado sênior da Uber, tem Phd. em engenharia; Rakesh, também advogado sênior da Uber, formou-se em engenharia; e Sam, advogada da Uber, é bacharel em engenharia. Todos os três advogados concentram-se na propriedade intelectual (PI) e na lei de patentes.

Perguntamos a Matt, Rakesh e Sam o que cada engenheiro precisa saber sobre a relação entre IP, patentes e código aberto:

Propriedade intelectual e como ela se aplica ao software

Em um sentido geral, a propriedade intelectual (PI) refere-se a criações intangíveis da mente humana, incluindo invenções (como processos ou métodos), obras literárias, obras musicais, desenhos, símbolos e frases. O IP pode ser protegido pela legislação dos EUA por meio de patentes, marcas registradas, direitos autorais e segredos comerciais.

Em relação ao software, uma pessoa ou empresa pode criar um código de copyright que tenha desenvolvido, para que nenhuma outra pessoa ou entidade possa copiar esse código escrito sem chegar a algum tipo de acordo com o criador original. O criador do software também pode patentear as ideias ou invenções subjacentes por trás do software.

Por exemplo, se o código fizer parte de um aplicativo de software que realiza alguma tarefa, o criador do software poderá patentear a maneira pela qual o software executa sua tarefa ou os processos ou operações que estão sendo executados pelo software.

Muitas empresas têm IP que protegem na forma de segredos comerciais. Um segredo comercial pode ser amplamente definido como qualquer informação secreta que confere valor ao seu titular em virtude de ser mantida em segredo. Assim, um segredo comercial pode ser um software, um processo ou algum modo de fazer/conhecimento que forneça uma vantagem competitiva e que a empresa mantenha de forma privada e segura.

Os segredos comerciais desfrutam de alguma proteção legal, como responsabilidade legal para aqueles que adquirem ou compartilham indevidamente segredos comerciais de outra empresa. No entanto, uma empresa com segredos comerciais é obrigada a tomar medidas concretas para protegê-los e manter seu sigilo. Isso significa que, se uma empresa for tornar seu software de código aberto, esse software perderá qualquer proteção de segredo comercial que possa ter.

Licenças de software de código aberto

Uma licença de software de código aberto é um meio pronto para um proprietário de direitos autorais de software permitir que outras pessoas usem seu código. Sem essa licença, qualquer pessoa usando o código poderia ser acusada de infringir o IP do detentor dos direitos autorais. Software de código aberto geralmente é protegido por direitos autorais, mas a licença que o proprietário atribui ao código descreve como outras pessoas podem usá-lo.

Existem diferentes tipos de licenças de software de código aberto que variam em como eles permitem que as pessoas usem o código. A Licença do MIT, por exemplo, permite que qualquer pessoa copie, modifique, distribua e até mesmo venda software que faça uso do código, com a única ressalva de que uma cópia da licença, que leva o nome do autor, deve ser incluída em qualquer distribuição.

No entanto, a Licença MIT não concede especificamente os direitos de uso de uma patente cobrindo o método ou processo executado pelo software de código aberto, embora haja uma escola de pensamento de que a licença implica o uso de patentes.

Lembre-se de que uma patente protege um método ou processo – o que um aplicativo faz. A Licença Apache, Versão 2.0 (“Apache 2.0”) permite especificamente o uso de direitos autorais e o uso de patentes. As empresas que fazem uso de software de código aberto sob esta licença podem ter um pouco mais de conforto para que seu uso seja protegido.

Uma categoria de licença de software de código aberto, conhecida como copyleft, estipula que qualquer trabalho derivado, ou seja, qualquer software que faça uso do software original, também deve usar sua licença original. A Licença Pública Geral GNU e a Licença Pública Mozilla se enquadram na categoria copyleft. Uma empresa pode estar menos inclinada a usar software distribuído sob uma licença copyleft porque seria obrigada a abrir o código do software resultante, mesmo que contivesse código proprietário.

Cabe inteiramente ao detentor dos direitos autorais decidir qual licença aplicar.

Software de código aberto não é gratuito

Embora o código-fonte aberto possa ser oferecido sem custo, ainda há custos associados ao software de código aberto de entrada. Por um lado, há o custo de engenharia ao depender de software de terceiros, como o trabalho associado à implementação e manutenção. Engenheiros entendem bem esse custo. No entanto, existe um custo análogo associado ao policiamento do uso interno de software de código aberto para garantir a conformidade com as licenças.

Quando um usuário de software livre viola a licença, o usuário se torna um infrator dos direitos autorais do software e os resultados podem ser graves. Por exemplo, o usuário pode ser forçado a pagar danos, remover o software infrator e até abrir código-fonte de todo o código-fonte do produto que inclui o software de código aberto.

Para complicar a situação, está o fato de que o software de código aberto pode ser importado internamente para um uso inicial compatível com sua licença de código aberto, mas o uso do software pode mudar com o tempo, talvez sem que os engenheiros conheçam as restrições ou obrigações impostas pela licença.

Os advogados de uma empresa podem usar software para monitorar como o código-fonte aberto está sendo usado internamente, de modo que o software construído usando software de código aberto permaneça em conformidade com as respectivas licenças de código aberto.

Além disso, assim como uma vulnerabilidade de segurança em um projeto de código aberto cria um risco para qualquer produto usando o projeto, pode ser descoberto que um projeto de código aberto tem uma vulnerabilidade de IP (por exemplo, violação de patente potencial) que cria um risco legal para qualquer produto incorporando o código-fonte aberto. Isso ocorre porque a maioria dos licenciamentos de código aberto tem um requisito de atribuição.

As pessoas que desejam explorar uma vulnerabilidade descoberta de um projeto de código aberto precisam simplesmente revisar apenas a lista de atribuições do produto para determinar se podem atacar o produto usando a vulnerabilidade. Em contraste, se o software proprietário foi usado em vez de software de código aberto, pode ser difícil para os invasores determinarem que o produto é vulnerável.

O papel dos advogados no licenciamento e uso de software de código aberto

Em um ambiente corporativo, os engenheiros tendem a fazer uso de software de código aberto para um projeto interno ou querem criar um código que tenham escrito disponível como software de código aberto. Em ambos os casos, o departamento jurídico de uma empresa pode fornecer uma assistência muito importante.

Na Uber, tentamos envolver nossos advogados o mais cedo possível em qualquer projeto de software de código aberto.

Ao fazer uso de código externo, um advogado pode determinar como a licença desse código afetará o código proprietário dentro da empresa. Se, por exemplo, o software licenciado sob a GNU General Public License (GPL) foi usado no produto de software distribuído de uma empresa, isso pode significar que o código-fonte de todo o produto deve ser fornecido sob uma licença GPL. Esse requisito pode ser incompatível com o modelo de negócios do usuário.

No entanto, se houver vantagens significativas no uso do código-fonte oferecido sob uma licença incompatível, em alguns casos, um advogado poderá ajudar facilitando discussões com o detentor dos direitos autorais para alterar a licença para uma licença compatível. Descobrimos em vários casos que os proprietários de projetos de código aberto às vezes desconhecem o impacto negativo que uma licença selecionada pode ter na adoção mais ampla do projeto.

Quanto a transformar código escrito dentro de uma empresa para a comunidade de código aberto, inicialmente se trata de uma decisão de negócios: se a liderança executiva da empresa decide que seria de interesse fornecer acesso a determinados projetos de software.

Os advogados podem ajudar a realizar a análise de custo-benefício. Por exemplo, um advogado de IP pode ajudar a avaliar o impacto do fornecimento aberto de um projeto em particular ao segredo comercial ou aos portfólios de patentes da empresa.

Além disso, uma vez que é decidido abrir o código-fonte de um projeto, os advogados podem facilitar a transição de software proprietário para código aberto. Em uma função importante, um advogado pode determinar a melhor licença de software de código aberto a ser usada, levando em consideração a natureza dos negócios da empresa, o que o software faz e a compatibilidade de quaisquer licenças das dependências do projeto.

Engenheiros da Uber apreciam o fato de que os advogados da equipe de código aberto têm experiência em engenharia de computação ou de software. Esses advogados podem ter uma boa compreensão de como o software lançado como código aberto pode ser usado, os efeitos práticos de diferentes licenças no contexto do software específico e o tipo de impacto que ele pode ter na reputação da empresa.

O processo de abertura de código de uma perspectiva legal

Uma vez que a empresa tenha decidido abrir o código do software que desenvolveu, há uma série de questões que ela precisará abordar:

  • Qual licença de código aberto devemos usar? Conforme observado acima, as licenças têm restrições diferentes, por isso é importante escolher a que é melhor para os interesses da empresa.
  • Existe alguma coisa no software que não deva ser divulgada? Essas coisas podem ser algoritmos ou sistemas internos que dão à empresa uma vantagem competitiva, ou dados confidenciais ou proprietários que devem permanecer privados. Para lidar com esse problema, uma empresa pode modificar o software que está sendo aberto para que não revele nada confidencial.
  • Quais dependências o software contém e essas dependências serão agrupadas em uma distribuição? Se um software dependente usar uma licença diferente que não seja compatível com a licença do projeto principal, ele poderá apresentar um conflito ou criar uma situação difícil para um usuário final que fizer o download e usar do projeto. Portanto, é importante revisar as dependências e suas licenças por motivos de compatibilidade e substituir as dependências problemáticas, quando apropriado.
  • O nome do projeto está em conflito com uma marca registrada ou com o nome de outro projeto de código aberto? Geralmente, uma marca registrada é um nome, frase ou símbolo destinado a distinguir uma fonte de bens ou serviços e, portanto, é importante evitar o nome de um projeto que está em conflito com a marca registrada de outra empresa. Por exemplo, usar nomes como “adobe”, “amazon” ou “oracle” no contexto do software pode ser problemático, apesar de serem palavras bem conhecidas que antecedem as empresas que as usam, porque isso poderia criar confusão nas mentes das pessoas como se tal software estivesse sendo fornecido por essas empresas. Na comunidade de código aberto, muitos projetos de software se relacionam entre si e, por isso, é tentador usar nomes semelhantes. No entanto, esses nomes não devem ser tão semelhantes que causem confusão entre os projetos.

Usando software de código aberto, do ponto de vista legal

Ao considerar se deve usar um projeto de software de código aberto, os advogados podem examinar a licença sob a qual ele é distribuído para garantir que ele não represente nenhum risco para os negócios ou softwares existentes de uma empresa. Essa análise deve incluir uma análise das dependências do software e de quais licenças elas usam, o que também afetará a empresa.

Além de considerar o licenciamento, outra pergunta importante a ser respondida é como o software de código aberto será usado. É um componente que será distribuído como parte de um aplicativo? É uma ferramenta que um engenheiro usará para construir ou verificar o código?

É um sistema de back-end? Cada tipo de uso pode envolver uma consideração diferente sobre como isso afetará os negócios de uma empresa. Por exemplo, a distribuição de um aplicativo com software de código aberto tem diferentes responsabilidades e riscos do que usar uma ferramenta de código aberto para fins internos.

Uma pesquisa mais extensa sobre o uso de software de código aberto vem na área de patentes. Um advogado pode pesquisar quais empresas estão usando o código e quais patentes eles arquivaram, certificando-se de que a empresa que eles representam não esteja incorporando o código para usar de uma forma que infrinja uma patente.

Licenciamento de software de código aberto na Uber

A Uber recentemente mudou sua licença de código aberto padrão para projetos de saída da licença do MIT para a licença do Apache 2.0. As licenças do MIT e do Apache 2.0 são ótimas opções para projetos com uma meta de ampla adoção porque as licenças são permissivas. O fato de o Apache 2.0 chamar explicitamente os direitos de uso de patente pode torná-la mais atraente para os ambientes corporativos.

A decisão de mudar, iniciada por nossos engenheiros e facilitada por nossa equipe jurídica, veio parcialmente do fato de que muitos dos projetos de software de código aberto que usamos são licenciados sob o Apache 2.0. A padronização desta licença ajuda a criar a coerência das normas da comunidade e pode reduzir as diferenças entre diferentes bases de código usadas no Uber.

Os advogados da Uber valorizam parcerias e colaboração dentro da comunidade de código aberto. Quando um engenheiro da Uber deseja incorporar software de código aberto, nossos advogados podem entrar em contato com o proprietário do software para explorar se o proprietário do software estaria interessado no uso do software pela Uber.

Por exemplo, o software pode receber mais atenção e mais contribuições se uma empresa como a Uber usar e oferecer suporte a ele. Se o proprietário quiser que a Uber use o software, o advogado e o proprietário do software podem trabalhar juntos para encontrar uma licença de código aberto aceitável para ambas as partes.

Se você quiser conhecer e contribuir com os projetos de código aberto da Uber, confira nossa página do Github. Nossos advogados especializados nos ajudam a levar esses projetos para a comunidade, garantindo a qualidade do licenciamento em todo o software e quaisquer dependências. Se você estiver interessado em criar software e trabalhar com nossos esforços de código aberto, visite a página de carreiras na Uber.

Assine nossa newsletter para acompanhar as mais recentes inovações da Engenharia da Uber.

***

Este artigo é do Uber Engineering. Ele foi escrito por Wayne Cunningham. A tradução foi feita pela Redação iMasters com autorização. Você pode conferir o original em: https://eng.uber.com/oss-ip/