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.