GitHub Copilot, qu'est-ce que c'est ?GitHub Copilot Free for VS Code has arrived. pic.twitter.com/DVChR5Shub
— Satya Nadella (@satyanadella) December 18, 2024
Copilot a été lancé en fin juin 2022 dans le cadre d'une Preview technique sur invitation uniquement, promettant de faire gagner du temps en répondant au code des utilisateurs par ses propres suggestions intelligentes. Ces suggestions sont basées sur des milliards de lignes de code public dont les utilisateurs ont publiquement contribué à GitHub, en utilisant un système d'IA appelé Codex de la société de recherche OpenAI.
GitHub décrit Copilot comme l'équivalent IA de la « programmation en paire », dans laquelle deux développeurs travaillent ensemble sur un seul ordinateur. L'idée est qu'un développeur peut apporter de nouvelles idées ou repérer des problèmes que l'autre développeur aurait pu manquer, même si cela nécessite plus d'heures de travail.
Dans la pratique, cependant, Copilot est plutôt un outil utilitaire de gain de temps, qui intègre les ressources que les développeurs devraient autrement chercher ailleurs. Lorsque les utilisateurs saisissent des données dans Copilot, l'outil leur suggère des extraits de code à ajouter en cliquant sur un bouton. Ainsi, ils n'ont pas à passer du temps à chercher dans la documentation de l'API ou à rechercher des exemples de code sur des sites spécialisés.
Un réseau neuronal dans GitHub Copilot est entraîné à l'aide de volumes massifs de données, constituées du code : des millions de lignes téléchargées par les dizaines de millions d'utilisateurs de GitHub, la plus grande plateforme au monde permettant aux développeurs de collaborer et de partager leur travail. Le but est que Copilot en apprenne suffisamment sur les modèles de code pour pouvoir faire du hacking lui-même. Il peut prendre le code incomplet d'un partenaire humain et terminer le travail en ajout les parties manquantes. Dans la plupart des cas, il semble réussir à le faire. GitHub prévoit de vendre l'accès à l'outil aux développeurs.
Comme pour la plupart des outils d'IA, GitHub souhaite également que Copilot devienne plus intelligent au fil du temps en fonction des données qu'il collecte auprès des utilisateurs. Lorsque les utilisateurs acceptent ou rejettent les suggestions de Copilot, son modèle d'apprentissage automatique utilisera ce retour d'information pour améliorer les suggestions futures, de sorte que l'outil deviendra peut-être plus humain à mesure qu'il apprendra.
De nombreux acteurs de la filière du développement de logiciels ont pointé GitHub Copilot comme un outil qui s’appuie sur un piratage massif de bases de code open sourceA new free tier of GitHub Copilot in @code.
— GitHub (@github) December 18, 2024
✅ 2,000 code completions per month
💬 50 chat messages per month
💫 Models like Claude 3.5 Sonnet or GPT-4o
♥️ More fun for you
Check it out today!
Oh yeah, and we passed 150M developers on GitHub 💅 https://t.co/2K0FfpA9G1
Selon Matthieu Butterick, Copilot soulève des questions juridiques relatives à la fois à la formation du système et à l'utilisation du système. Ce qui suit est extrait de son billet à ce sujet.
Sur la formation du système
La grande majorité des progiciels open source sont publiés sous des licences qui accordent aux utilisateurs certains droits et imposent certaines obligations (par exemple, en préservant l'attribution précise du code source). Ces licences sont rendues possibles légalement par les auteurs de logiciels faisant valoir leur droit d'auteur sur leur code.
Ainsi, ceux qui souhaitent utiliser des logiciels open source ont le choix. Ils doivent :
- soit respecter les obligations imposées par la licence ;
- soit utiliser le code sous réserve d'une exception de licence, par exemple, l'utilisation équitable en vertu de la loi sur le droit d'auteur.
Microsoft et OpenAI ont reconnu que Copilot & Codex sont formés sur des logiciels open source dans des dépôts publics sur GitHub. Alors quel choix ont-ils fait ?
Si Microsoft et OpenAI avaient choisi d'utiliser ces référentiels sous réserve de leurs licences open source respectives, Microsoft et OpenAI auraient dû publier de nombreuses attributions, car il s'agit d'une exigence minimale de presque toutes les licences open source. Pourtant, aucune attribution n'est apparente.
Par conséquent, Microsoft et OpenAI doivent s'appuyer sur un argument d'utilisation équitable. En fait, nous savons que c'est le cas, car l'ancien PDG de GitHub, Nat Friedman, a affirmé lors de la Preview technique de Copilot que « la formation des systèmes [d'apprentissage automatique] sur les données publiques est une utilisation équitable ».
Eh bien, n'est-ce pas ? La réponse n'est pas une question d'opinion ; c'est une question de droit. Naturellement, Microsoft, OpenAI et d'autres chercheurs ont promu l'argument de l'utilisation équitable. Nat Friedman a en outre affirmé qu'il existe une « jurisprudence » sur l'utilisation équitable qui est « largement invoquée par la communauté de l'apprentissage automatique ». Mais la Software Freedom Conservancy n'était pas d'accord et a pressé Microsoft d'obtenir des preuves pour étayer sa position. Selon le directeur de la SFC, Bradley Kuhn :
« Nous nous sommes renseignés en privé auprès de Friedman et d'autres représentants de Microsoft et de GitHub en juin 2021, demandant de solides références juridiques pour les positions juridiques publiques de GitHub… Ils n'en ont fourni aucune ».
Pourquoi Microsoft n'a-t-elle pu produire aucune autorité légale pour sa position ? Parce que ma SFC a raison : il n'y en a pas. Bien que certains tribunaux aient examiné des questions connexes, il n'existe aucune affaire américaine résolvant carrément les ramifications de l'utilisation équitable de la formation à l'IA.
De plus, les cas qui tournent autour de l'utilisation équitable équilibrent plusieurs facteurs. Même si un tribunal décide finalement que certains types de formation à l'IA sont une utilisation équitable (ce qui semble possible) il peut également en exclure d'autres. À ce jour, nous n'avons aucune idée de la position de Copilot ou de Codex sur ce spectre. Ni celle de Microsoft, encore moins de l'OpenAI.
Sur l'utilisation du système
Nous ne pouvons pas encore dire comment l'utilisation équitable finira par être appliquée à la formation à l'IA. Mais nous savons que la recherche n'affectera pas du tout les utilisateurs de Copilot. Pourquoi ? Parce qu'ils utilisent simplement Copilot pour émettre du code. Alors, quel est le statut du droit d'auteur et de la licence de ce code émis ?
Ici encore, nous constatons que Microsoft devient indulgente. En 2021, Nat Friedman a affirmé que « la sortie de Copilot appartient à l'opérateur, tout comme avec un compilateur ». Mais c'est une analogie malicieuse, car Copilot tend de nouveaux pièges aux imprudents.
Microsoft caractérise la sortie de Copilot comme une série de « suggestions » de code. Microsoft « ne revendique aucun droit » sur ces suggestions. Mais Microsoft ne garantit pas non plus l'exactitude, la sécurité ou l'atténuation des enchevêtrements de propriétés intellectuelles du code ainsi produit. Une fois que vous avez accepté une suggestion Copilot, tout cela devient votre problème :
« Vous êtes responsable d'assurer la sécurité et la qualité de votre code. Nous vous recommandons de prendre les mêmes précautions lors de l'utilisation du code généré par GitHub Copilot que lorsque vous utilisez un code que vous n'avez pas écrit vous-même. Ces précautions comprennent des tests rigoureux, une analyse IP [(= propriété intellectuelle)] et un suivi des vulnérabilités de sécurité ».
Quels enchevêtrements pourraient survenir ? Les utilisateurs de Copilot ont montré que Copilot peut être amené à émettre du code verbatim à partir de référentiels identifiables. Pas plus tard que cette semaine, le professeur Texas A&M, Tim Davis, a donné de nombreux exemples de gros morceaux de son code copiés textuellement par Copilot, y compris lorsqu'il a invité Copilot avec le commentaire /* sparse matrix transpose in the style of Tim Davis */ L'utilisation de ce code crée clairement une obligation de se conformer à sa licence. Mais comme effet secondaire de la conception de Copilot, les informations sur l'origine du code (auteur, licence, etc.) sont supprimées. Comment les utilisateurs de Copilot peuvent-ils se conformer à la licence s'ils ne savent même pas qu'elle existe ?
Les méthodes de récupération de code astucieuses de Copilot sont un écran de fumée destiné à dissimuler une vérité crasseuse : Copilot n'est qu'une interface alternative pratique à un vaste corpus de code open source. Par conséquent, les utilisateurs de Copilot peuvent encourir des obligations de licence envers les auteurs du code sous-jacent. Dans ce contexte, l'affirmation de Nat Friedman selon laquelle Copilot fonctionne « comme... un compilateur » est plutôt douteuse - les compilateurs changent la forme du code, mais ils n'injectent pas de nouveaux enchevêtrements de propriétés intellectuelles. Pour être juste, Microsoft ne conteste pas vraiment cela. L'entreprise le cache juste en l'écrivant en petits caractères.
Des études font même état de ce que l’utilisation d’outils comme GitHub Copilot entraîne une baisse de la qualité du codeNow in GitHub Copilot, you can choose Anthropic’s Claude 3.5 Sonnet to perform a variety of tasks—like refactoring code. 💻 pic.twitter.com/58klM33IJF
— GitHub (@github) December 10, 2024
Selon une étude de GitClear, la qualité du code n'est pas bonne, avec des problèmes tels que le renouvellement du code (du code ajouté, mais supprimé peu après) et une plus grande proportion de code répété. L'étude porte sur le code ajouté, mis à jour, supprimé, copié ou déplacé, et exclut ce que GitClear définit comme du « bruit ». Cela fait référence au même code engagé dans plusieurs branches, des lignes vierges et d'autres lignes non significatives.
« GitHub a publié de nombreuses études approfondies sur la croissance et l'impact de l'IA sur le développement de logiciels. L'une de leurs conclusions est que les développeurs écrivent du code "55 % plus vite" lorsqu'ils utilisent Copilot. Cette profusion de code généré par les grands modèles de langage soulève la question suivante :
Comment la qualité et la maintenabilité du code se comparent-elles à ce qui aurait été écrit par un humain ? Est-ce plus proche des contributions soignées et raffinées d'un développeur senior, ou plus proche du travail désordonné d'un contractant à court terme ?
Pour répondre à cette question, GitClear a analysé environ 153 millions de lignes de code modifiées, rédigées entre janvier 2020 et décembre 2023. Il s'agit de la plus grande base de données connue sur les modifications de code hautement structurées qui a été utilisée pour évaluer les différences de qualité du code. Nous constatons des tendances déconcertantes en matière de maintenabilité », commente GitClear
Selon Bill Harding, fondateur de GitClear, l'essentiel est que les assistants de code de l'IA sont très bons pour ajouter du code, mais ils peuvent causer « une dette technique induite par l'IA » : « L'ajout rapide de code est souhaitable si vous travaillez de manière isolée ou sur un problème nouveau. Mais un code ajouté à la va-vite est néfaste pour les équipes chargées d'en assurer la maintenance par la suite », a déclaré Harding. En d'autres termes, une plus grande quantité n'est pas toujours synonyme d'une meilleure qualité. Selon lui, cette tendance pourrait poser de nombreux problèmes aux organisations à l'avenir.
En outre, une étude publiée en octobre dernier a rapporté que GitHub Copilot génère du code comportant des faiblesses de sécurité. « Nos résultats confirment que les développeurs doivent être prudents lorsqu'ils ajoutent du code généré par Copilot (et des outils d'IA similaires de génération de code) et doivent également effectuer des contrôles de sécurité appropriés lorsqu'ils acceptent le code suggéré. Cela montre également que les praticiens doivent développer une conscience et des compétences en matière de sécurité correspondantes », ont écrit les chercheurs à l'origine de l'étude.
Dans le cadre de son étude, GitClear a mis l'accent sur la qualité du code plutôt que sur la quantité, et observe que les assistants d'IA ont tendance à donner "des suggestions pour ajouter du code, mais jamais de suggestions pour mettre à jour, déplacer ou supprimer du code". Les chercheurs proposent également que les algorithmes de suggestion de code soient incités à proposer les suggestions les plus susceptibles d'être acceptées, ce qui semble raisonnable jusqu'à ce que l'on considère l'importance d'un code concis et lisible. Selon le rapport de l'étude, il n'est pas facile de mesurer la qualité du code.
Et vous ?
Trouvez-vous les remarques de Matthieu Butterick crédibles ou pertinentes ?
Quelle est votre expérience avec des outils comme GitHub Copilot ? Les suggestions de Copilot sont-elles toujours alignées avec les meilleures pratiques de développement ?
Peut-on vraiment considérer le code généré par Copilot comme fiable, ou nécessite-t-il systématiquement une revue manuelle approfondie ?
Les développeurs expérimentés gagnent-ils réellement du temps ou risquent-ils de perdre leur créativité face aux suggestions automatisées ?