¿Qué es GitHub Copilot y qué implicaciones tiene?

By

 

GitHub recientemente dio a conocer Copilot —un nuevo servicio todavía en estatus experimental o “technical preview”— que básicamente es una especie de autocomplete en esteroides.

Resumen exprés de Copilot

Imagina que estás en tu editor de código y vas a implementar una función que regrese una lista de objetos de cierto tipo. Así que pones un comentario para describir el propósito de la función, y escribes el nombre (firma) de la función, y Copilot automáticamente te sugiere el contenido (cuerpo) de la función. 

¿Cómo sucede esto? Pues Copilot en realidad es una interfaz para interactuar con OpenAI Codex, un sistema de inteligencia artificial creado por la empresa OpenAI, que ha sido entrenado con repositorios de código público en GitHub.

Copilot se accede por medio de una extensión para Visual Studio Code, y por el momento soporta Python, JavaScript, TypeScript, Ruby y Go. Todavía no está disponible al público en general, pero puedes solicitar acceso en https://copilot.github.com 

En principio, Copilot suena como una gran idea. Puede quitarnos trabajo “de talacha”, así como a entender cómo utilizar/arrancar con bibliotecas de código con las que no estamos familiarizados. Sin embargo, también hay implicaciones que debemos considerar, a continuación compartimos algunas: 

Discusión sobre licenciamiento

En los pocos días desde que se dio a conocer el technical preview de Copilot, algo de lo que más se ha discutido es si Copilot está infringiendo propiedad intelectual. Lo que sucede es que por medio de Copilot podrías terminar reutilizando código con una licencia incompatible a la de tu proyecto. 

También hay quienes cuestionan qué tan justo o ético es que GitHub use código abierto para proveer un servicio de código cerrado y que muy probablemente será de paga (todavía no se conocen los detalles de precio de Copilot).

Seguridad y calidad de código

Otro problema potencial con Copilot es que pueda introducir huecos de seguridad en nuestro código, al sugerirnos usar fragmentos de código con vulnerabilidades o que usa a su vez bibliotecas obsoletas e inseguras. Por ejemplo, si Copilot está entrenado con fragmentos de código que usan contraseñas en texto abierto, te va a sugerir fragmentos de código similares. Y si no sabes lo que haces, vas a tener esa misma vulnerabilidad en tu código.

Por esto, es muy importante que mejoremos nuestra habilidad para leer y entender código ajeno. Esperamos que más escuelas den cursos de lectura de código, y que más empresas formalicen esta práctica entre sus desarrolladores.

Nomenclatura y documentación

En el caso particular de las personas de habla hispana, si queremos usar Copilot de forma efectiva, será necesario que nos acostumbremos a escribir comentarios de código en inglés y a usar nomenclatura de funciones en inglés.

Conclusión

Copilot apenas es un experimento y no sabemos si se hará disponible como un servicio “oficial” y soportado de GitHub, pero por lo pronto ya nos mostró hacia donde van las cosas. Es un futuro para el que debemos prepararnos.