# GitHub Copilot

GitHub Copilot es una herramienta de inteligencia artificial basada en la nube desarrollada por GitHub y OpenAI para ayudar y asistir a los usuarios de Visual Studio Code, Visual Studio, Neovim y los entornos de desarrollo integrado (IDE) de JetBrains mediante el autocompletado de código. Actualmente está disponible por suscripción para desarrolladores individuales. La herramienta fue anunciada por primera vez por GitHub el 29 de junio de 2021 y funciona mejor para los usuarios que codifican en los lenguajes Python, JavaScript, TypeScript, Ruby y Go.

## Historia

El 29 de junio de 2021 GitHub anunció GitHub Copilot como una vista previa técnica en el entorno de desarrollo de Visual Studio Code. Ese mismo año, en octubre, GitHub Copilot se lanzó como complemento en el mercado de JetBrains. El 27 de octubre de 2021, GitHub lanzó el complemento GitHub Copilot Neovim como repositorio público. Posteriormente, en marzo de 2022, GitHub anunció la disponibilidad de Copilot para Visual Studio 2022 IDE. El 21 de junio de 2022, GitHub anunció que Copilot estaba fuera de la "vista previa técnica" y pasaba a estar disponible como un servicio basado en suscripción para desarrolladores individuales.

## Características

Cuando se le proporciona un problema de programación en lenguaje natural, Codex es capaz de generar una solución en código. También es capaz de describir código de entrada en inglés y traducir código entre lenguajes de programación. Según su sitio web, GitHub Copilot incluye funciones de asistencia para programadores, como la conversión de comentarios de código en código ejecutable y autocompletado para fragmentos de código, secciones repetitivas de código y métodos y/o funciones completos. GitHub informa que la función de autocompletar de Copilot es precisa aproximadamente la mitad del tiempo; con algún código de encabezado de función de Python, por ejemplo, Copilot autocompletaba correctamente el resto del código del cuerpo de la función el 43 % de las veces en el primer intento y el 57 % de las veces después de diez intentos. GitHub afirma que las funciones de Copilot permiten a los programadores navegar por lenguajes y marcos de codificación desconocidos al reducir la cantidad de tiempo que los usuarios dedican a leer la documentación.

## Implementación

GitHub Copilot funciona con OpenAI Codex, que es una versión de producción modificada del Generative Pre-trained Transformer 3 (GPT-3), un modelo de lenguaje que utiliza el aprendizaje profundo para producir texto similar al humano. El modelo Codex también se entrena en gigabytes de código fuente en una docena de lenguajes de programación.
OpenAI Codex de Copilot está capacitado en una selección del idioma inglés, repositorios públicos de GitHub y otro código fuente disponible públicamente. Esto incluye un conjunto de datos filtrado de 159 gigabytes de código Python procedente de 54 millones de repositorios públicos de GitHub.
El GPT-3 de Open AI tiene licencia exclusiva para Microsoft, la empresa matriz de GitHub.

## Recepción

Desde el lanzamiento de Copilot, ha habido preocupaciones con su seguridad e impacto educativo, así como controversias sobre la licencia en torno al código que produce.

### Controversia de licencias

Si bien el director ejecutivo de GitHub, Nat Friedman, declaró en junio de 2021 que "entrenar sistemas de ML en datos públicos es un uso justo ", una demanda colectiva presentada en noviembre de 2022 llamó a esto "pura especulación", afirmando que "ningún tribunal ha considerado la cuestión de si 'entrenar sistemas de ML en datos públicos es un uso justo'". La demanda de Joseph Saveri Law Firm, LLP cuestiona la legalidad de Copilot en varios reclamos, que van desde el incumplimiento de contrato con los usuarios de GitHub hasta el incumplimiento de la privacidad bajo la CCPA por compartir PII.
GitHub admite que una pequeña proporción de la salida de la herramienta puede copiarse palabra por palabra, lo que ha generado temores de que el código de salida no sea lo suficientemente transformador para ser clasificado como uso legítimo y pueda infringir los derechos de autor del propietario original. En junio de 2022, Software Freedom Conservancy anunció que terminaría con todos los usos de GitHub en sus propios proyectos, acusando a Copilot de ignorar las licencias de código utilizadas en los datos de entrenamiento. En un mensaje de atención al cliente, GitHub declaró que "entrenar modelos de aprendizaje automático en datos disponibles públicamente se considera un uso justo en la comunidad de aprendizaje automático", pero la demanda colectiva calificó esto como "falso" y además señaló que "independientemente del nivel de aceptación de este concepto en 'la comunidad de aprendizaje automático', según la ley federal, es ilegal".

#### Libros blancos de la FSF

El 28 de julio de 2021, la Free Software Foundation (FSF) publicó una convocatoria financiada para artículos técnicos sobre cuestiones filosóficas y legales en torno a Copilot. Donald Robertson, Gerente de Licencias y Cumplimiento de la FSF, afirmó que "Copilot plantea muchas [...] preguntas que requieren un examen más profundo". El 24 de febrero de 2022, la FSF anunció que había recibido 22 artículos sobre el tema y, mediante un proceso de revisión anónimo, eligió 5 artículos para destacar.

### Preocupaciones sobre la privacidad

El servicio de Copilot está basado en la nube y requiere una comunicación continua con los servidores de GitHub Copilot. Esta arquitectura opaca ha alimentado las preocupaciones sobre la telemetría y la extracción de datos de pulsaciones de teclas individuales.

### Preocupaciones de seguridad

Un artículo aceptado para su publicación en el Simposio IEEE sobre seguridad y privacidad en 2022 evaluó la seguridad del código generado por Copilot para las 25 principales enumeraciones de debilidades de código de MITRE (por ejemplo, secuencias de comandos entre sitios, cruce de rutas) en 89 escenarios diferentes y 1689 programas Esto se hizo a lo largo de los ejes de diversidad de debilidades (su capacidad para responder a escenarios que pueden conducir a varias debilidades de código), diversidad de avisos (su capacidad para responder a la misma debilidad de código con variaciones sutiles) y diversidad de dominios (su capacidad de generar especificaciones de hardware de nivel de transferencia de registro en Verilog ). El estudio encontró que en estos ejes en varios idiomas, el 39,33 % de las sugerencias principales y el 40,73 % del total de sugerencias generaron vulnerabilidades en el código. Además, descubrieron que los pequeños cambios no semánticos (es decir, los comentarios) realizados en el código podrían afectar la seguridad del código.

### Preocupaciones educativas

Un documento de febrero de 2022 publicado por la Association for Computing Machinery evalúa el impacto que Codex, la tecnología utilizada por Github Copilot, puede tener en la educación de los programadores novatos. El estudio utiliza preguntas de evaluación de una clase de introducción a la programación en la Universidad de Auckland y compara las respuestas de Codex con el desempeño de los estudiantes. Los investigadores encontraron que Codex, en promedio, se desempeñó mejor que la mayoría de los estudiantes; sin embargo, su rendimiento disminuyó en las preguntas que limitaban las funciones que se podían usar en la solución (por ejemplo, condicionales, colecciones y bucles). Dado este tipo de problema, "solo dos de las 10 soluciones [del Codex] produjeron el resultado correcto, pero ambas [...] violaron [la] restricción". El documento concluye que Codex puede ser útil para proporcionar una variedad de soluciones a los alumnos, pero también puede conducir a un exceso de confianza y plagio.