GitHub Copilot: Smarter KI-Helfer unterstützt beim Coding
GitHub stellt eine neue Funktion vor, die euch beim Programmieren das Leben erleichtern soll. Das Ganze nennt sich Copilot und wie der Name schon sagt, fliegt der Gute zusammen mit euch durch den Code. Doch was tut er?
Copilot ist eine KI-Funktion, die durch mehrere Millionen Zeilen von Code angelernt wurde und anhand der Definition einer Funktion etc. erkennt, was ihr vorhabt. Möchtet ihr beispielsweise eine Funktion bauen, die einen Tweet absendet, erkennt Copilot das und schlägt euch den Code der ganzen Funktion vor, weil es sicher genügend andere Programmierer vor euch gab, die eine derartige Funktion bereits geschrieben haben. Ihr schaut also „nur“ noch drüber und passt an. Das ist insofern praktisch, da es euch die Arbeit der Suche nach Beispielen in anderen Code-Schnipseln erspart.
Copilot kann in Visual Studio Code per Erweiterung eingebaut werden und geht ein ganzes Stück weiter, als einfach nur einen Befehl zu vervollständigen. Die Preview unterstützt offiziell Python, JavaScript, TypeScript, Ruby und Go, ist aber in der Lage auch bei anderen Sprachen zu helfen. Ihr könnt aus mehreren Vorschlägen wählen und somit das richtige Coding für euch auswählen.
Alle Details dazu findet ihr direkt auf der dazugehörigen Seite von GitHub.
Meet GitHub Copilot – your AI pair programmer. https://t.co/eWPueAXTFt pic.twitter.com/NPua5K2vFS
— GitHub (@github) June 29, 2021
Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf gelangt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalten wir eine kleine Provision. Für euch ändert sich am Preis nichts. Partnerlinks haben keinerlei Einfluss auf unsere Berichterstattung.
Auch wenn „sies“ anders hinstellen … aber für mich schaut das aktuell nach einem besseren Autocomplete aus. Die NAS hat vor 10(?) Jahren auch schon gesagt sie haben eine AI die Software/Code geniert … hat man auch nie wieder was gehört
Und genau das wird eventuell noch sehr problematisch. Denn etliche dieser „anderen Programmierer“ haben ihren Code unter einer Lizenz veröffentlicht, die von ihrem Code abgeleiteten Code unter bestimmte Auflagen stellt, von Attribution der ursprünglichen Autoren über kommerzielle Einschränkungen bis hin dazu, dass der abgeleitete Code dann unter derselben Lizenz veröffentlicht werden muss. Ein ubiquitäres Beispiel dafür ist die GPL.
Wenn eine AI auf solcherart lizensierten Code angelernt wurde — und derzeit zeigt alles darauf hin, dass Copilot u.a. auch GPL-Code als Futter erhielt — kann die Ausgabe der AI nur abgeleiteter Code sein, die dazugehörige Lizenz wird aber unterschlagen.
Etliche Programmierer sprechen hier von „License Washing.“ Und es wird sehr interessant, wie sich dieses Thema noch entwickelt.
Nur weil irgendwo eine geschachtelte Schleife in einem GPL-Programm verwendet wurde, heißt es nicht, dass überall jetzt die GPL gelten muss, weil woanders auch eine geschachtelte Schleife vorhanden ist.
Bitte werde nicht albern. Weder Copilot noch ich reden von geschachtelten Schleifen. Es geht um gesamte Routinen.
In Tests hat Copilot in ca. 0.1% aller Fälle gesamte Routinen verbatim aus GPL-Code übernommen. 0.1% klingt wenig, ist es aber nicht. Das wäre so als hätte man 1000 Programmierer im Unternehmen und einer davon ist nur damit beschäftigt, copyright-geschützten Code von anderer Software in die Repositories einzukopieren.
Copilot hat in 0,1% der Fälle Code aus dem Trainingsset identisch reproduziert. Das ist nicht gleichbedeutend mit es wurden in 0,1% der Fälle GPL-Code reproduziert! Das Trainingsset bestand ja nicht nur aus GPL-lizensierten Code.
Du hast recht, danke für die Korrektur. Das ändert allerdings nicht viel am Knackpunkt: Unverändert reproduzierter Code ohne Rückschluss auf die Herkunft und ohne Rücksichtnahme auf die Lizenz ist problematisch. Zumal „nicht nur GPL-lizensierter Code“ auch bedeuten kann, dass der Code sogar sogar noch wesentlich strikteren Lizenzen unterliegt. Dass Code auf Github veröffentlicht ist bedeutet beiweiten noch nicht, dass er frei verwendet werden darf. Ich könnte mir durchaus vorstellen, dass es noch einigen Leuten Kopfschmerzen machen wird, die lizenzrechtliche Qualität von Code zu beurteilen. Mal sehen.
(Amüsant am Rande: Copilot hat wohl u.a. auch die GPL-Präambel in leere Dateien eingefügt, weil es — durchaus korrekt — festgestellt hat, dass sehr viele Dateien damit beginnen.)
Da ist dann natürlich die Frage ab wann die Schöpfungshöhe erreicht ist, damit es problematisch wird.
Das kann man sogar noch mehr einschränken: vorgeschlagen werden komplexere Funktionen, innerhalb derer sind bei 0,1% Snippets drin, die verbatim aus dem Datensatz kommen. Ein kurzer Stippet wird einfach von der Semantik der Sprache vorgegeben. Wenn ein Dichter ein Gedicht schreibt: „Ich habe Hunger, also esse ich etwas.“ ist das auch nicht gerade eine besondere Schöpfungshöhe.
Laut Aussage von GitHub treten 1-zu-1-Reproduktionen hauptsächlich bei trivialen Problemen auf oder wenn es eine übliche, universelle Lösung für ein Problem gibt. In beiden Fällen darf man bezweifeln, ob eine GPL-Lizensierung überhaupt greift (Schöpfungshöhe, Code genau so in freierem Code auffindbar und damit gar nicht GPL-Lizensiert, auch wenn er *auch* in GPL-Code auftaucht).
Insofern (again, nach Aussage von GitHub!) bleiben selbst von 0,1% Reproduktionen nicht viele übrig, in denen tatsächlich GPL-Lizensierbarer und GPL-Lizensierter Code „geklaut“ wurde. Inwiefern sich GitHub diese Zahlen schönrechnet bleibt abzuwarten, aber da wir keine anderen Zahlen haben, lässt sich nur basierend auf diesen eine Einordnung treffen.
Sorry, aber da vertrau ich lieber IntelliJ und Resharper