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

7

Un proyecto de código abierto con licencia de 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 posee 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. Por lo tanto, si alguien aporta ilegalmente un código con licencia GPL a mi proyecto, no conozco ninguna forma de detenerlo (a menos que no acepte ninguna contribución).

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

¡Gracias!

    
pregunta Joe 09.03.2018 - 21:04

1 respuesta

5

Unonosimplemente"protege contra" las contribuciones ilegales.

Nunca aceptas una contribución a ciegas, y debes tener un proceso para examinar las contribuciones (incluida la tuya) 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)
  • olores de código (automatizados)
  • lógica de código deficiente (revisión por pares, "suficientes ojos para hacer que los errores sean poco profundos", etc. - la historia de OpenSSL muestra que esto podría no ser suficiente)
  • Estoy seguro de que extrañé a muchos otros: las contribuciones son bienvenidas

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

Acabo de intentarlo levantando algunos ejemplos de código de proyectos, y funciona. Simplemente extraje cadenas, formatos, comentarios, nombres de funciones y prototipos del código, luego los busqué en Google y observé dónde aparecía un solo sitio en varias coincidencias. En 17 pruebas de 19, el sitio de origen fue el primero de cinco candidatos; En todos los casos, el sitio apareció entre los primeros cinco. En contraste, partes de mi propio código solo activaron falsos positivos en tres (cuatro) casos de cada veinte, con objetivos de muy baja calidad, por lo que al examinar rápidamente media docena de sitios, pude descartar la alerta. Además, con el código GPL, el fragmento de la Búsqueda de Google era visiblemente el mismo que el código que había archivado en pruebas.

En este punto, estoy seguro de que puedes hacerlo a mano . Eche un vistazo al código, mire los comentarios (¿tienen sentido? Si no es así, ese es otro tipo de luz roja. En caso afirmativo, o bien todos se han rediseñado (!) O los encontrará), pruebe un Un par de cadenas de texto, enchúfalos en Google y / u otros motores de búsqueda.

Y solo necesitas esto para las contribuciones importantes .

Desde un punto de vista legal - Me estoy alejando rápidamente de mi profundidad - Imagino que necesita que sus contribuyentes acepten algún tipo de renuncia o acuerdo en el que afirman que van a ir para contribuir honestamente.

Cuando no lo hacen, y te lo perdiste (por ejemplo, transformaron / ofuscaron algo de código GPL para que no se encuentre en Google), es probable que nunca se descubra a menos que se haya hecho para atraparlo Propósitos, y ellos mismos hacen sonar el silbato. En ese momento, su proyecto violará la GPL y usted podrá:

  • eliminar el código GPL del proyecto
  • declare que el resto del proyecto debe estar bajo la GPL

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

  • localice una sección de código GPL significativa de proporciones útiles,
  • eliminar toda la información de licencia,
  • reescribalo completamente - comentarios, nombres de funciones, nombres de variables no triviales, cadenas de texto - para que la búsqueda no encuentre el código, y, sin embargo, lo deje reconociblemente igual , y al mismo tiempo déjalo funcionando
  • deje que el código "guise" en el código base y otros colaboradores confíe en su funcionalidad , hasta el punto de que eliminarlos sería un problema

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

    
respondido por el LSerni 10.03.2018 - 15:02

Lea otras preguntas en las etiquetas