Se você gerencia um projeto de código aberto licenciado pela BSD, como se protege contra alguém que contribua ilegalmente com o código licenciado pela GPL?

8

Um projeto de código aberto licenciado sob BSD, MIT ou outra licença permissiva aceita contribuições de código da comunidade.

Como posso impedir que alguém pegue o código licenciado pela GPL que não é seu e o envie ao meu projeto licenciado pelo BSD? Não sei se a contribuição foi roubada de um projeto licenciado pela GPL e a aceito.

Não desejo aceitar tais contribuições, para não tornar o projeto inteiro GPL. Mas não tenho como saber se o contribuidor realmente possui os direitos autorais do código que está contribuindo. Portanto, se alguém contribuir ilegalmente com o código licenciado pela GPL para o meu projeto, não conheço nenhuma maneira de detê-lo (exceto por não aceitar nenhuma contribuição).

Certamente, há muitos projetos licenciados para BSD e MIT por aí, portanto, deve haver uma solução.

Obrigado!

Joe
fonte
1
provavelmente porque pergunta procurar aconselhamento jurídico são geralmente desaprovado como sendo off-topic
Newtopian
3
@ Newtopian Como é esse conselho jurídico? É sobre como gerenciar um projeto de código aberto. Não vejo como isso está fora de tópico aqui. Porém, pode ser mais adequado para código aberto, mas o gerenciamento de um projeto é bom aqui.
Thomas Owens
3
@ ThomasOwens: Não vejo como qualquer tentativa de resposta não toque em questões legais. No final do dia, você confia na palavra do colaborador, a menos que solicite algum tipo de direito autoral, tornando-o um problema legal novamente.
Robert Harvey
3
Eu não era um defensor negativo nem votei para fechar. É uma pergunta legítima, mas para a qual é difícil responder sem, como Robert disse, recair no lado legal dela. O melhor que eu poderia esperar aqui é confiar na boa-fé dos colaboradores e, ao mesmo tempo, manter excelentes registros sobre o quê, quando, quem do código confirmado e se preparar para eventuais retrocessos e reescrições prolongados, caso alguma peça escorregue as rachaduras.
Newtopian 9/0318
5
Esteja ciente de que adicionar incorretamente o código GPL a um projeto BSD sem incluir a atribuição adequada, etc., não torna o projeto automaticamente GPL. Em vez disso, torna impossível a distribuição legal do projeto. Isso pode ser corrigido removendo o código GPL ou atribuindo-o adequadamente, etc., e convertendo todo o projeto em GPL.
bdsl

Respostas:

6

insira a descrição da imagem aqui

Não se "guarda contra" simplesmente contribuições ilegais.

Você nunca aceita cegamente uma contribuição e deve ter um processo para verificar as contribuições (incluindo a sua) para vários tipos de problemas:

  • testes de unidade (automatizados)
  • backdoors e falhas de segurança (a análise estática pode ajudar, existem outras ferramentas)
  • cheiros de código (automatizados)
  • lógica de código ruim (revisão por pares, "olhos suficientes para deixar bugs rasos" etc.) - a história do OpenSSL mostra que isso pode não ser suficiente
  • Tenho certeza de que perdi vários outros - contribuições bem-vindas

"Tudo" que você precisa fazer é adicionar uma verificação de plágio . Isso pode ser feito, até certo ponto, com ferramentas automáticas, pesquisando apenas as linhas de código relevantes.

Eu tentei agora levantando alguns exemplos de código de projetos, e ele funciona. Simplesmente extraí strings, formatos, comentários e nomes de funções e protótipos do código, depois pesquisei em todos eles e observei onde um único site apareceu em várias correspondências. Em 17 testes em 19, o site de origem foi o primeiro dos cinco candidatos; em todos os casos, o site apareceu entre os cinco primeiros. Por outro lado, trechos do meu próprio código só acionavam falsos positivos em três (quatro) casos em vinte, com metas de qualidade muito baixa; portanto, examinando rapidamente meia dúzia de sites, pude ignorar o alerta. Além disso, com o código GPL, o snippet da Pesquisa Google era visivelmente o mesmo que o código que eu havia testado.

Neste ponto, estou confiante de que você poderia fazer isso manualmente . Dê uma olhada no código, veja os comentários (eles fazem sentido? Se não, isso é outro tipo de luz vermelha. Se sim, eles foram todos reformulados (!) Ou você os encontrará), tente um algumas seqüências de texto, conecte-as ao Google e / ou a outros mecanismos de pesquisa.

E você só precisa disso para contribuições consideráveis .

Do ponto de vista jurídico - estou me afastando rapidamente -, imagino que você precise que seus colaboradores aceitem alguma forma de renúncia ou acordo no qual eles afirmam que vão contribuir honestamente.

Quando não o fazem, e você perdeu isso (por exemplo, eles transformaram / ocultaram algum código GPL para que não seja encontrado no Google), as chances de IMHO são que ele nunca será descoberto, a menos que tenha sido feito para fins de armadilha, e eles mesmos apitam. Nesse ponto, seu projeto estará violando a GPL e você poderá:

  • remova o código GPL do projeto
  • declarar o restante do projeto abrangido pela GPL

Para que todo o cenário tenha qualquer tipo de problema realista, o "colaborador" deve:

  • localize uma seção significativa do código GPL de proporções úteis,
  • remova todas as informações de licenciamento,
  • reescreva-o completamente - comentários, nomes de funções, nomes de variáveis ​​não triviais, seqüências de texto - para que uma pesquisa não encontre o código e , no entanto, o deixe reconhecidamente o mesmo e, ao mesmo tempo, deixe-o funcionando
  • deixe o código "guiar" na base de código e outros contribuidores dependam de sua funcionalidade , a ponto de removê-lo seria um problema

Todo o cenário, especialmente o último ponto, parece-me realmente absurdo. Uma vez que a verificação do plágio esteja em vigor, eu deixaria de me preocupar.

LSerni
fonte
1
Resposta muito interessante e abrangente! Sim, algumas pesquisas no Google podem ajudar a identificar algumas cópias e colagens indesejadas. No entanto, isso funciona apenas para cópias literais: se alguém pegar o mesmo código e substituir alguns nomes de variáveis ​​ou alterar a ordem de algumas instruções, você não o encontrará, embora ainda seja um plágio. Mas você está certo: pode pelo menos ajudar a reduzir os riscos. O contrato do colaborador deve esclarecer as obrigações e transferir o risco residual para o colaborador.
Christophe
1
Para adicionar essa resposta, eu fui instrutor de um bootcamp de codificação por um tempo. Plágio não era comum, mas aconteceu. Geralmente era bastante óbvio para mim quando acontecia, porque um aluno enviava um código muito diferente do que eu estava acostumado a ver com eles. Quando isso acontecia, eu pegava algumas linhas de código algo distinto e procurava no código do GitHub. Se não o encontrasse no GitHub, o Google seria o próximo, mas sempre consegui encontrar o código original no GitHub.
21718 Dan Jones