Hace dos días, anunciamos que GitHub y OpenAI habían lanzado GitHub Copilot, una herramienta capaz de autocompletar y generar código recurriendo a la inteligencia artificial.
Que GitHub Copilot sea capaz de 'aprender' de código preexistente escrito por humanos y sugerir fragmentos de código (en ocasiones, de funciones completas) es una gran noticia que evidencia el progreso del machine learning… pero que causa dudas y temores en otros ámbitos.
Uno de ellos es el laboral (¿hay futuro para los desarrolladores ahora que la IA está aprendiendo a programar?); y el otro es estrictamente legal, pues supone todo un reto a la hora de dictaminar a qué licencias debe estar sujeto el software resultante.
"¿Cómo?" —os preguntaréis— "¿No puedo decidir yo la licencia del software que programe si cuento con la asistencia de Copilot?".
Bueno, no hay unanimidad a la hora de responder a esa pregunta. En HackerNews se ha abierto un animado debate a raíz del tuit de una programadora, @eevee, que afirma lo siguiente:
"GitHub Pilot ha sido, según admiten ellos mismos, entrenado con montañas de código GPL, por lo que no tengo claro cómo no constituye una forma de blanquear código abierto para [poder usarlo] en proyectos comerciales. Su afirmación de que 'por lo general no reproduce fragmentos exactos' no resulta muy satisfactoria".
"Los derechos de autor no sólo cubren el 'copypaste'; también las obras derivadas", prosigue explicando en su hilo. Y dado que todo lo que GitHub Copilot 'sabe' fue extraído de código open source, "no existe una interpretación posible de "[obra] derivada" que no incluya esto".
Según @eevee, la anterior generación de redes neuronales causó menos dolores de cabeza legales porque se centraba en textos y fotos, cuyo copyright era más difícil de reclamar…
"pero esto se basa en trabajos con licencias muy explícitas que ya han sido puestas a prueba por los tribunales, aquí que espero con ansias las inevitables demandas colectivas".
¿Y si no quiero que usen mi código?
Viendo lo visto, ¿qué hacer si eres un desarrollador que está a punto de empezar a desarrollar un nuevo proyecto de código abierto en tu repositorio de GitHub… y no deseas que tu código sea utilizado para 'alimentar' a GitHub CoPilot? ¿Bastaría con utilizar una licencia personalizada que incluya un aviso de que "este código no puede ser usado para entrenar modelos de generación de código"?
Podríamos pensar que sí, pues de lo contrario GitHub incurriría en una violación clara de licencia. Sin embargo, según los términos de uso de GitHub, cada vez que cargamos un contenido le concedemos permiso a la plataforma para usarlo con el fin de "mejorar el servicio", lo cual supone conceder un permiso explícito al margen de lo especificado en la licencia.
Ciertamente, los términos de uso de GitHub dejan claro que no les estamos otorgando el derecho a vender nuestro código a terceros, pero sí a incluirlo en sus bases de datos e índices de búsqueda, y a compartirlo y mostrárselo a otros usuarios.
De modo que, en caso de que finalmente surgieran demandas en torno a las licencias del software programado con la ayuda de GitHub CoPilot, la responsabilidad última residiría en los usuarios que aceptaron las sugerencias de dicho asistente.
GitHub tiene la solución: avisar al desarrollador y que decida él
Aunque la documentación de GitHub Copilot no aborda explícitamente la potencial polémica legal, sí intenta analizar la naturaleza de las sugerencias de código, preguntándose retóricamente si la plataforma es "un loro" (en referencia al concepto técnico de 'loro estocástico') o "un cuervo".
"A menudo, se parece menos a un loro [que repite lo que oye] y más a un cuervo construyendo nuevas herramientas a partir de pequeños bloques".
En el documento se afirma que, con el fin de saber con qué frecuencia Copilot "se limita a repetir algún código que ha visto durante su entrenamiento", se llevó a cabo un experimento con casi 300 empleados de la compañía, que usaron el asistente en el marco de su trabajo diario con Python, generando un total de 453.307 sugerencias repetidas.
"Son muchas, pero muchas de ellas pueden ser desestimadas de inmediato", pues muchas de ellas eran meramente signos de puntuación y expresiones regulares.
Sucesivos filtrados de los resultados incluyeron fragmentos de código estándar, como los listados (de números naturales, números primos, letras de distintos alfabetos o tickers del mercado de valores).
Al final, terminaron detectando un total de 41 casos de 'regurgitación' de código en los que, efectivamente, se repetían fragmentos relevantes de código.
"Eso equivale a 1 evento de regurgitación por cada 10 'semanas de usuario'. […] No parece mucho, pero es cierto que no equivale a 0".
Por ello, ofrecen una solución que planean terminar integrando en la herramienta (actualmente, recordemos, disponible sólo como versión preview): un detector de duplicación, que informe al usuario de si el código que le acaba de sugerir se trata de una duplicación relevante. "A continuación", éste "podrá incluir la atribución adecuada o decidir no utilizar el código en modo alguno".
Ver 17 comentarios