Si administra un proyecto de código abierto con licencia BSD, ¿cómo se protege contra alguien que contribuye ilegalmente con un código con licencia GPL?

8

Un proyecto de código abierto con licencia BSD, MIT u otra licencia permisiva acepta contribuciones de código de la comunidad.

¿Cómo puedo evitar que alguien tome un código con licencia GPL que no es de su propiedad y lo envíe a mi proyecto con licencia BSD? No sé si la contribución fue robada de un proyecto con licencia GPL y la acepto.

No deseo aceptar tales contribuciones, para no hacer que todo el proyecto sea GPL. Pero no tengo forma de saber si el contribuyente realmente posee los derechos de autor del código que está contribuyendo. Entonces, si alguien contribuye ilegalmente a mi proyecto con un código con licencia GPL, no conozco ninguna forma de detenerlo (salvo por no aceptar ninguna contribución).

Seguramente, hay un montón de proyectos con licencia BSD y MIT, por lo que debe haber una solución.

¡Gracias!

Joe
fuente
1
probablemente porque las preguntas que buscan asesoramiento legal generalmente están mal vistas por estar fuera de tema
Newtopian
3
@Newtopian ¿Cómo es este consejo legal? Se trata de gestionar un proyecto de código abierto. No veo cómo esto está fuera de tema aquí en absoluto. Sin embargo, puede ser más adecuado para Open Source, pero administrar un proyecto es bueno aquí.
Thomas Owens
3
@ThomasOwens: No veo cómo cualquier intento de respuesta no toca cuestiones legales. Al final del día, dependerá de la palabra del contribuyente a menos que solicite pruebas de derechos de autor de algún tipo, lo que lo convierte en un problema legal nuevamente.
Robert Harvey
3
No era un votante negativo ni voté para cerrar. Es una pregunta legítima pero difícil de responder sin, como dijo Robert, recurrir al lado legal de la misma. Lo mejor que puedo esperar aquí es confiar en la buena fe de los contribuyentes y, al mismo tiempo, mantener excelentes registros de qué, cuándo y quién del código comitado y prepararnos para eventuales reversiones y reescrituras en caso de que alguna pieza se escape. las grietas
Newtopian
55
Tenga en cuenta que agregar incorrectamente el código GPL a un proyecto BSD sin incluir la atribución adecuada, etc., no convierte automáticamente el proyecto en GPL. En cambio, hace que el proyecto sea imposible de distribuir legalmente. Eso se puede solucionar ya sea eliminando el código GPL o atribuyéndolo correctamente, etc. y convirtiendo todo el proyecto a GPL.
bdsl

Respuestas:

6

ingrese la descripción de la imagen aquí

Uno no simplemente "protege contra" contribuciones ilegales.

Nunca acepta una contribución a ciegas y debe tener un proceso para examinar las contribuciones (incluida la suya) para varios tipos de problemas:

  • pruebas unitarias (automatizadas)
  • puertas traseras y fallas de seguridad (el análisis estático podría ayudar, existen otras herramientas)
  • código de olores (automatizado)
  • mala lógica de código (revisión por pares, "suficientes ojos para hacer que los errores sean superficiales", etc. - la historia de OpenSSL muestra que esto podría no ser suficiente)
  • Estoy seguro de que me perdí varios otros - contribuciones bienvenidas

"Todo" lo que debe hacer sería agregar un cheque por plagio . Esto se puede hacer, hasta cierto punto, con herramientas automáticas simplemente buscando en Google las líneas de código relevantes.

Lo he intentado ahora levantando algunas muestras de código de proyectos, y funciona. Simplemente extraje cadenas, formatos, comentarios y nombres de funciones y prototipos del código, luego busqué en Google y miré dónde aparecía un solo sitio en múltiples coincidencias. En 17 pruebas de 19, el sitio fuente fue el primero de cinco candidatos; en todos los casos, el sitio apareció entre los primeros cinco. Por el contrario, partes de mi propio código solo activaron falsos positivos en tres (cuatro) casos de veinte, con objetivos de muy baja calidad, por lo que al leer rápidamente media docena de sitios pude descartar la alerta. Con el código GPL, además, el fragmento de la Búsqueda de Google era visiblemente el mismo que el código que había probado.

En este punto, estoy seguro de que podrías hacerlo a mano . Eche un vistazo al código, mire los comentarios (¿tienen sentido? Si no, ese es otro tipo de luz roja. En caso afirmativo, o se han redactado de nuevo (!) O los encontrará), pruebe un un par de cadenas de texto, conéctelas a Google u otros motores de búsqueda.

Y solo necesita esto para contribuciones considerables .

Desde un punto de vista legal, me estoy desviando rápidamente de mi profundidad , me imagino que necesita que sus contribuyentes acepten alguna forma de renuncia o acuerdo en el que declaren que van a contribuir honestamente.

Cuando no lo hacen, y te lo perdiste (por ejemplo, transformaron / ofuscaron algún código GPL para que no se encuentre buscando en Google), lo más probable es que nunca se descubra a menos que se haya hecho con fines de atrapamiento, y ellos mismos hacen sonar el silbato. En ese momento, su proyecto violará la GPL y usted puede:

  • eliminar el código GPL del proyecto
  • declarar que el resto del proyecto está incluido en la GPL

Para que todo el escenario sea cualquier tipo de problema realista, el "contribuyente" debería necesitar:

  • localizar una sección de código GPL significativa de proporciones útiles,
  • eliminar toda la información de licencia,
  • reescríbalo a fondo (comentarios, nombres de funciones, nombres de variables no triviales, cadenas de texto) para que una búsqueda no encuentre el código y , sin embargo, lo deje reconociblemente igual , y al mismo tiempo lo deje funcionando
  • Deje que el código "guiso" en la base de código y otros contribuyentes confíen en su funcionalidad , hasta el punto de que eliminarlo sería un problema

Todo el escenario, especialmente el último punto, me parece muy descabellado. Una vez que el control de plagio esté en su lugar, dejaría de preocuparme.

LSerni
fuente
1
Muy interesante y completa respuesta! Sí, algunas búsquedas en Google podrían ayudar a identificar algunos copiar y pegar no deseados. Sin embargo, esto solo funciona para copias literales: si alguien toma el mismo código y reemplaza algunos nombres de variables, o cambia el orden de algunas declaraciones, no lo encontrará, aunque sigue siendo un plagio. Pero tiene razón: al menos puede ayudar a reducir los riesgos. El acuerdo del contribuyente debe aclarar las obligaciones y transferir el riesgo residual al contribuyente.
Christophe
1
Para agregar a esta respuesta, fui instructor en un campamento de codificación durante un tiempo. El plagio no era común, pero sucedió. Por lo general, era bastante obvio para mí cuando sucedía porque un estudiante enviaba un código que era muy diferente de lo que estaba acostumbrado a ver de ellos. Cuando eso sucediera, tomaría algunas líneas de código algo distintivo y buscaría el código en GitHub. Si no lo encontraba en GitHub, Google sería el siguiente, pero siempre pude encontrar el código original en GitHub.
Dan Jones