# GitHub Copilot

O GitHub Copilot é uma ferramenta de inteligência artificial desenvolvida pelo GitHub em conjunto com a OpenAI, afim de auxiliar usuários de ambientes de desenvolvimento integrados (IDEs ou Integrated Development Environments) como Visual Studio Code, Visual Studio, Neovim e JetBrains por meio de sugestão de código para preenchimento automático. Atualmente está disponível apenas na versão beta, a ferramenta foi anunciada pela primeira vez pelo GitHub em 29 de junho de 2021 e oferece melhor suporte para usuários que desenvolvem em linguagens como Python, JavaScript, TypeScript, Ruby e Go .

## História

Em 29 de Junho de 2021, o GitHub anunciou o GitHub Copilot na versão beta para o ambiente de desenvolvimento Visual Studio Code.
Em 26 de Outubro de 2021, o GitHub Copilot foi liberado por meio de um plug-in para JetBrains.
Em 27 de Outubro de 2021, o GitHub liberou um plugin do GitHub Copilot para o Neovim plugin como um repositório publico.
Em 27 de Março de 2022, o GitHub anunciou oficialmente a disponibilidade do GitHub Copilot para o Visual Studio IDE 2022.

## Recursos

O GitHub Copilot é mantido pelo OpenAI Codex, um modelo de inteligência artificial criado pela OpenAI, que nada mais é do que um laboratório de pesquisa de inteligência artificial. O OpenAI Codex é uma versão de produção modificada do Generative Pre-trained Transformer 3 (GPT-3), um modelo de linguagem que usa deep-learning para produzir texto semelhante ao humano. Por exemplo, quando se é fornecido um problema de programação em linguagem natural, o Codex é capaz de gerar o código da solução. É também capaz de descrever o código de entrada em inglês e traduzir o código entre linguagens de programação. O GPT-3 do Codex é licenciado exclusivamente para a Microsoft, empresa detentora do GitHub.
O OpenAI Codex da Copilot é treinado com base no idioma inglês, em repositórios públicos do GitHub e outros códigos-fonte disponíveis publicamente. Isso inclui um conjunto de dados filtrado de 159 gigabytes de código Python proveniente de 54 milhões de repositórios públicos do GitHub.
De acordo com seu site, o GitHub Copilot inclui recursos para auxiliar programadores, como a conversão de comentários de código em código executável e preenchimento automático para trechos de código, seções repetitivas de código e métodos e/ou funções inteiros. O GitHub expõe que o recurso de preenchimento automático do Copilot é preciso em cerca de metade das vezes; com um código de cabeçalho de uma função Python, por exemplo, o Copilot completou automaticamente o restante do corpo código da função em 43% das vezes na primeira tentativa e 57% das vezes após dez tentativas.
O GitHub afirma que os recursos disponibilizados pelo Copilot permitem que os programadores naveguem em estruturas e linguagens de codificação desconhecidas, reduzindo a quantidade de tempo que os usuários gastam lendo a documentação .

## Recepção

Desde o lançamento do Copilot, houve preocupações em relação a sua segurança e o impacto educacional, bem como controvérsias em relação do licenciamento do código produzidos pela ferramenta.

### Controvérsia sobre o licenciamento

Embora a maior parte do código produzido pelo Copilot possa ser classificado como um trabalho inovador, o próprio GitHub admitiu que uma pequena parte é de fato copiada literalmente, o que levou a um receio no sentido de que o código gerado não seja suficientemente inovador para ser classificado como uso justo e possa infringir os direitos autorais do autor original. Isso deixa o Copilot em um terreno legal desconhecido, embora o GitHub afirme que "treinar modelos de aprendizado de máquina em dados disponíveis publicamente é considerado uso justo em toda a comunidade de aprendizado de máquina".

#### White papers da FSF

Em 28 de julho de 2021, a Free Software Foundation (FSF) publicou uma chamada financiada para white papers sobre questões filosóficas e jurídicas em torno do Copilot. Donald Robertson, Gerente de Licenciamento e Conformidade da FSF, afirmou que "o Copilot levanta muitas [...] questões que exigem uma analise mais profunda". Em 24 de fevereiro de 2022, a FSF anunciou que recebeu 22 artigos sobre o assunto e, usando um processo de revisão anônima, escolheu 5 artigos para destacar.

### Preocupações com a segurança

Um artigo aceito para publicação no IEEE Symposium on Security and Privacy (Simpósio sobre Segurança e Privacidade) em 2022 avaliou a segurança do código gerado pelo Copilot para as 25 principais fraquezas enumeradas no código do MITRE (por exemplo, cross-site scripting, path traversal e etc) em 89 contextos diferentes e em 1.689 programas. Isso foi feito ao longo dos eixos de diversidade de pontos fracos (a sua capacidade de responder a cenários que podem conduzir a vários pontos fracos do código), diversidade de sugestões (sua capacidade de responder à mesma fraqueza de código com variações sutis) e diversidade de domínios (sua capacidade de gerar especificações de hardware em nível de transferência de registro em Verilog). O estudo descobriu que nesses eixos em vários idiomas, 39,33% das principais sugestões e 40,73% do total de sugestões levam a vulnerabilidades de código. Além disso, descobriram também que pequenas alterações não semânticas (ou seja, comentários) feitas no código podem afetar a segurança do mesmo.

### Preocupações com a educação

Um artigo de fevereiro de 2022 divulgado pela Association for Computing Machinery avalia o impacto que o Codex, a tecnologia usada pelo Github Copilot, pode ter na educação de programadores iniciantes. O estudo utiliza questões de avaliação de uma aula introdutória de programação na Universidade de Auckland e compara as respostas do Codex com o desempenho dos alunos. Os pesquisadores descobriram que o Codex, em média, teve um desempenho melhor do que a maioria dos alunos; no entanto, seu desempenho diminuiu em questões que limitavam os recursos que poderiam ser usados na resolução (por exemplo, condicionais, coleções e laços de repetição). Dado esse tipo de problema, “apenas duas das 10 soluções [do Codex] produziram a saída correta, mas ambas [...] violaram [a] restrição”. O artigo conclui que o Codex pode ser útil para fornecer uma variedade de soluções aos alunos, mas também pode levar ao excesso de confiança e ao plágio.

## Planos futuros

Em seu site, o GitHub afirma que, se a versão beta do Copilot for bem-sucedida, eles planejam comercializar a ferramenta no futuro. Além disso, a Microsoft – empresa dona do GitHub – declarou seus planos futuros de comercializar o Copilot como parte de seus produtos Visual Studio.