Nerdkrams
GitHub (4): Schöne Lizenz hat­ten Sie da. Tja, blöd jetzt.

Microsoft hat in sein GitHub die­ser Tage ganz viel Intelligenz rein­ge­kün­stelt, die beim Programmieren in „öffent­li­chem Code“ (also unter ande­rem in auf GitHub lie­gen­den Projekten) nach ver­meint­lich pas­sen­dem Code sucht und aus die­sem wie­der­um neu­en Code generiert.

Wenn ich das rich­tig ver­ste­he, läuft das unge­fähr so ab:

  • Der „Programmierer“ - wer sei­nen Code von Automatismen schrei­ben lässt, ist kein Programmierer ohne Anführungszeichen, son­dern ledig­lich ein Knopfdrücker, wenn nicht gar ein grü­ner Kanzlerkandidat Plagiator - schreibt einen Funktionskommentar und/oder -pro­to­ty­pen, in dem er per Variablennamen, Funktionsnamen, Beispieldaten und so wei­ter unge­fähr beschreibt, was er vor­hat. So weit erst mal kei­ne Einwände, immer­hin klingt das nach auch für ande­re Leute ver­ständ­li­chem Code und das ist gut.
  • Die „künst­li­che“ „Intelligenz“ guckt, ob sie in den ihr bekann­ten Daten ver­gleich­ba­res Ansinnen fin­det, und kopiert im Erfolgsfall vor­han­de­ne Codeschnipsel zu einem neu­en Codeschnipsel zusam­men, der viel­leicht funk­tio­niert oder auch nicht.
  • Diese „künst­li­che“ „Intelligenz“ ist dabei der­ma­ßen treff­si­cher, dass bereits nach weni­gen Tagen Berichte im Netz zu fin­den sind, denen zufol­ge sie auch mal schlicht Ausschnitte aus der GPL als Kommentar vorschlägt.

In „0,1 Prozent der Fälle“, behaup­tet Microsoft, kön­ne es vor­kom­men, dass gan­ze Codestücke voll­stän­dig über­nom­men „vor­ge­schla­gen“ wer­den. Meine Kenntnisse im Lizenzrecht sind als mäßig zu bezeich­nen, aber ich wür­de anneh­men wol­len, dass auch in 0,1 Prozent der Fälle aus unbe­kann­ter Quelle über­nom­me­ner Code dem Entwickler des Originalcodes nicht gefal­len dürf­te. Natürlich auf Twitter wur­de vor­ge­schla­gen, Microsoft möge doch, wenn sie sich so sicher sei­en, dass die „Copilot“ genann­te Beleidigung für rich­ti­ge Programmierer schon nie­man­des Urheberrecht ver­let­ze, die­sen „Copiloten“ - sogar gegen Bezahlung - mal mit dem Code des Windows-10-Kernels füt­tern. Bisher blieb die­ser Vorschlag anschei­nend unbeantwortet.

Das Lizenzproblem, auch für mich (so zwei, drei klei­ne Programme von mir lie­gen ja auch offen im Internet her­um) nicht ganz unin­ter­es­sant, ist aber gar nicht mal unbe­dingt das Ärgerlichste an dem Mitflieger. Viel wesent­li­cher scheint mir zu sein, wel­ches Problem damit gelöst wer­den soll: Nutzer von Visual Studio Code, einem auf einem Webbrowser basie­ren­den und dar­um außer­or­dent­lich res­sour­cen­hung­ri­gen „Texteditor“ von Microsoft, sol­len so in die Lage ver­setzt wer­den, Programme zu schrei­ben, ohne pro­gram­mie­ren zu kön­nen. Ich bin eigent­lich nicht wäh­le­risch, was die von mir genutz­te Software angeht (Texteditoren aus­ge­nom­men), so lan­ge sie ihren Dienst zufrie­den­stel­lend ver­rich­tet, und ich hal­te auch nicht viel von Vorverurteilungen von Menschen, die ich mei­nes Wissens über­haupt nicht ken­ne, aber ich bin mir trotz­dem ziem­lich sicher, dass es eine fürch­ter­li­che Idee ist, eine Generation von „Programmierern“ her­an­wach­sen zu las­sen, deren gesam­te Programmiererfahrung dar­auf fußt, dass sie einen Knopf gedrückt haben und auf magi­sche Weise Code erschie­nen ist, der dann auch noch halb­wegs das getan hat, was sie erwar­tet hatten.

Quelloffen ist der „Copilot“ im Übrigen nicht. Nicht, dass den noch eine „künst­li­che“ „Intelligenz“ irgend­wo reinkopiert!

(Hätte der Bullshifier nicht gereicht?)

Senfecke:

  1. Dann sind auch die­je­ni­gen die Stack Overflow nut­zen kei­ne ech­ten Programmierer? Zum Programmieren gehört auch die Software-Architektur, allei­ne sich zu über­le­gen in was für Funktionen man sein Code auf­teilt, wie man die Funktion nennt, wie die Variablen und ihn damit mög­lichst gut les­bar macht gehört bereits zum Programmieren. Ich bezweif­le, dass die KI da in näch­ster Zeit so intel­li­gent sein wird, als das man nicht aus selbst Programmieren muss. Wichtig wäre es m.M.n aber, dass der Author und die Lizenz des Snippets mit in den Kommentar ein­ge­tra­gen wird.

    • Wenn „aus frem­dem Code Dinge zusam­men­ko­pie­ren und sei­nen Namen dran­schrei­ben“ „Programmieren“ ist, haben Baerbock, Guttenberg und Milli Vanilli :-) ja alles rich­tig gemacht.

      • Ich glau­be, da ver­wech­selst Du was: Ein schlam­pig zusam­men­ge­pfusch­tes Buch ist pein­lich und schlecht ( und zahl­reich vor­han­den), eine geklau­te Doktorarbeit aber eine ande­re Nummer. Hatte die CSU such nicht exklu­siv, wie man hört.
        Milli Vanilli, das sagt ja der Name schon, ist in jedem Fall pein­lich, mit Plagiat oder ohne.
        Aber Bearbock und Guttenberg gehö­ren nicht in einen Atemzug.

      • Naja ich sag ja, der ori­gi­nal Author + Lizenz soll­te schon auto­ma­tisch als Kommentar dazu gene­riert wer­den. Wenn der­je­ni­ge die­sen dann ent­fernt ist es immer­hin ein bewuss­tes klau­en und das ist auch jetzt schon mög­lich, wenn auch etwas umständlicher.

  2. Mein Gedanke war ähn­lich wie der von Pascal: macht es einen Unterschied - außer im Zeitaufwand -, ob der Mensch Code aus StackOverflow kopiert oder die Maschine Code aus Github? Im Zweifel ist doch bei­des ähn­lich kata­stro­phal- oder kann glei­cher­ma­ßen lehr­reich sein, wenn man das als Ausgangspunkt für eige­nes Verständnis und eige­nen Code nimmt.

    (Okay, und jetzt muss ich mir selbst wider­spre­chen: es ist ähn­lich kata­stro­phal- sogar mit weni­ger eige­nem Aufwand -, aber nicht glei­cher­ma­ßen lehr­reich, weil Erläuterung und Diskussion fehlen. )

      • Kommt ver­mut­lich dar­auf wie man damit umgeht, wenn die Quelle des Snippets dabei steht (kei­ne Ahnung ob das der Fall ist?), dann könn­te man sich ja zumin­dest den Kontext der Quelle anschau­en und davon eben­falls ler­nen. Wer den Code den er da ver­wen­det nicht ver­steht wird irgend­wann sowie­so auf Bugs sto­ßen die er nicht behe­ben kann. Das glei­che kann dir bei StackOverflow pas­siert wenn du das best­näch­ste Ergebnis blind kopierst.

    • Der Unterschied liegt viel­leicht dar­in, dass Code auf Stackoverflow ja genau des­we­gen dort ver­öf­fent­licht wird, damit ihn jeder­mann ohne wei­te­res Lizenzgehampel über­neh­men kann.

      Ein dickes Softwareprojekt unter GPL auf GitHub hat dage­gen absicht­lich die Lizenz bekommen.

      • Ja das ist sicher­lich ein Unterschied, aber wenn mein Projekt unter der GPL steht, dann darf ich auch Code aus ande­ren Projekten die unter der GPL ste­hen ein­bin­den. Wenn ein Projekt unter der MIT steht darf ich den Code sogar in kom­mer­zi­el­len Projekten ver­wen­den und brau­che ihn noch nicht ein­mal zurück geben.

        Wenn ich ein Projekt unter einer frei­en Lizenz ver­öf­fent­li­che, dann u.a. auch damit ande­re ggf. etwas von dem Code ler­nen oder sich davon inspi­rie­ren las­sen können.

        Wenn ich es unter der GPL ver­öf­fent­li­che, dann erlau­be ich das nur unter den glei­chen Bedingungen und möch­te nicht, dass mei­ne Arbeit unge­fragt in kom­mer­zi­el­len pro­prie­tä­ren Projekten ver­wen­det wird.

        Wenn ich den Code unter der MIT ver­öf­fent­li­che, dann ist es mir ziem­lich egal was ande­re damit machen.

        Wer das mit der KI nicht gut fin­det soll­te sei­nen Code also nicht unter der MIT ver­öf­fent­li­chen und lie­ber zur (A)GPL wech­seln, dann wird man dage­gen ach vor­ge­hen kön­nen wenn Snippets ver­wen­det wer­den die län­ger als 3 Zeilen (kei­ne Ahnung wo die Grenze hier genau ist) Code sind.

        Jetzt muss die KI nur noch die Lizenzen auf Kompatibilität prü­fen (zumin­dest bei grö­ße­ren Snippets), wenn sie das nicht macht, fin­de ich das auch nicht okay.

        • wenn mein Projekt unter der GPL steht, dann darf ich auch Code aus ande­ren Projekten die unter der GPL ste­hen ein­bin­den. Wenn ein Projekt unter der MIT steht darf ich den Code sogar in kom­mer­zi­el­len Projekten ver­wen­den und brau­che ihn noch nicht ein­mal zurück geben.

          Mit Ausnahme der MIT-0 (die ich in eini­gen mei­ner Programme nut­ze) ver­pflich­ten die mei­sten die­ser Lizenzen zur kor­rek­ten Angabe der Originallizenz und des ursprüng­li­chen Autors. Wie möch­test du dem in die­sem Fall nachkommen?

          • Die KI pflegt eine Datei im Workspace in der alle auf­ge­li­stet wer­den. Diese lässt sich in unter­schied­li­chen Formaten expor­tie­ren (HTML, PDF, Markdown, …) Es wird aus­drück­lich dar­auf hin­ge­wie­sen, dass die­se Datei in der Anwendung ver­füg­bar gemacht wer­den muss.

            In der Extension gibt es zudem eine allo­w­list mit Lizenzen die ich in mei­nem Projekt erlau­be (oder eine blocklist).

            Das gan­ze betrifft aber nur Snippets von x Komplexität.

            Ich könn­te mir auch etwas ver­gleich­ba­res zur robots.txt vor­stel­len, wo man für sein Projekt fest­le­gen kann, dass man nicht möch­te, dass der Code auto­ma­tisch durch­sucht wird, oder das bestimm­te Ordner nicht durch­sucht werden.

            Bestehst du eigent­lich auch dar­auf wenn jemand sich einen Fünfzeiler per Hand aus dei­nem Source klaut? Ich mei­ne, dass kann ja auch jetzt schon pas­sie­ren. Oder ab wel­che Komplexität wür­de dich das stören?

            Es könn­te auch sein, dass mit der Zeit immer mehr opti­mier­te Varianten belieb­ter Snippets auf­tau­chen wer­den (da man ihn über­nimmt, aber dann viel­leicht noch opti­miert). Würdest du das dann bei dir zurück­por­tie­ren? Vielleicht wird dir die opti­mier­te Variante sogar auto­ma­tisch ange­zeigt wenn du auch die Extension instal­liert hast. Letztendlich ist das doch eigent­lich auch im Sinne von OpenSource.

            • Bestehst du eigent­lich auch dar­auf wenn jemand sich einen Fünfzeiler per Hand aus dei­nem Source klaut?

              Ja, natür­lich. Ich erin­ne­re mich an kei­nen Passus in der CDDL oder der MIT-0, in dem „This licen­se is only rele­vant for more than 5 lines of code.“ oder ver­gleich­ba­res stün­de. Was an „Dieser Code steht voll­stän­dig unter $lizenz!“ bedarf dei­ner Meinung nach seman­ti­scher Überarbeitung?

              Ich wer­de das Problem auf abseh­ba­re Zeit nicht selbst haben, da ich mich wei­ge­re, „Texteditoren“ zu benut­zen, die erst mal eine voll­stän­di­ge Webbrowserengine hoch­fah­ren müs­sen, um mich Zeichen auf dem Bildschirm erschei­nen las­sen zu lassen.

  3. Es waren Zeiten, als man sich als Entwickler für die ver­öf­fent­lich­te Software ver­ant­wort­lich gefühlt hat­te. Und zwar so, dass man sogar die Umgebung (aka Betriebssystem), die man als Plattform für die eige­ne Software ver­wen­det („miss­braucht“) hat, in- und aus­wen­dig ler­nen woll­te, um im Falle eines Falles auch ein selt­sa­mes Problem ernst­haft ana­ly­sie­ren zu kön­nen. Dann kam die Generation von „Entwicklern“, denen die Attitüde „it works on my machi­ne“ kei­ne Blamage dar­ge­stellt hat.
    Und von da aus scheint der näch­ste logi­sche Schritt der Verantwortungsdegradation, den die kom­men­de Generation ver­mut­lich mit­ma­chen wird, nicht weit ent­fernt zu sein.

  4. >Programme zu schrei­ben, ohne pro­gram­mie­ren zu können.

    Das ist gene­rell ein Problem in der Softwareentwicklung. Ein Programmieranfänger kann heu­te bereits ein funk­tio­nie­ren­des Programm in C / C++ / PHP schrei­ben. Das fällt dem­je­ni­gen aber dann auf die Füße, wenn die bösen Buben ankom­men und das Programm auf Sicherheitslücken abklopfen.

      • Für nen Anfänger wäre Rust glau­be ich bes­ser geeig­net. Der Rust Compiler haut dem Anfänger sein stin­ken­den Code hart um die Ohren, da der Rust Compiler es sich zur Aufgabe gemacht hat mög­lichst vie­le Probleme schon beim Kompilieren zu erken­nen. Da heißt es: Entweder man lernt es rich­tig zu machen oder man kämpft stän­dig gegen den Borrowchecker.

        • Ich mag Rust, aber eben die­ser Zwang zum grund­le­gen­den Verständnis von Speicherverwaltung scheint vie­len zu feh­len - dar­um ist C gera­de für Anfänger mei­nes Erachtens die klü­ge­re Wahl.

        • Ich wür­de jedem Anfänger heu­te emp­feh­len, mög­lichst schnell C zu ler­nen, denn C schafft einen Sinn für die Funktionsweise eines Computers, ohne so hirn­zer­mür­bend wie ein Assembler zu sein. Es gibt Speicher, Namen für den Speicher (Identifier für Variablen) und Adressen von Speicher. Und wenn man Speicher braucht, muss man ihn anfor­dern und wie­der zurück­ge­ben, wenn man ihn nicht mehr braucht. (Das war jetzt schon ein biss­chen platt aus­ge­drückt, ich weiß.) Wer das ver­steht, bekommt eine Vorstellung davon, wie der Computer arbeitet.

          Selbst, wenn man nie­mals ein grö­ße­res Projekt in C macht, hilft das so erwor­be­ne Wissen. Erstens, weil die C-Syntax in vie­le moder­ne Sprachen hin­ein­wirkt, und zwei­tens, weil man erahnt, wel­che Probleme zum Beispiel so eine auto­ma­ti­sche Speicherverwaltung machen kann. Ich habe mal gesagt: Speicher ist eine viel zu wich­ti­ge Ressource, um die Verwaltung einem Programmierer zu über­las­sen, aber Speicher ist auch eine viel zu wich­ti­ge Ressource, um die Verwaltung einem Automatismus zu über­las­sen. Wer erken­nen kann, wann was an die­ser Aussage wahr ist, wird vie­le Fehler nicht machen. Wer es nicht erken­nen kann, wird die Anwender sei­ner Software mit fet­ten Klötzen für ein­fa­che und längst mit guter Software gelö­sten Aufgaben quä­len (zum Beispiel mit einem Editor im Browser) oder sie mit dem Rätselraten dar­über belä­sti­gen, war­um die­ses ver­damm­te Programm eigent­lich in unre­gel­mä­ßi­gen Abständen zäh­flüs­sig wird. Nein, der Anwender kennt kei­ne GC, der Programmierer soll­te wis­sen, was das ist und gege­be­nen­falls, wie man die Speicherfreigaben so steu­ert, dass es kei­ne »Hänger« gibt. Wer kei­nen Sinn für Speicherverwaltung hat, kommt nur lei­der nicht darauf.

          Einer der größ­ten Vorteile von Rust über C ist es, dass man kei­ne Zusatzwerkzeuge wie lint benö­tigt, um schwer erkenn­ba­re und häu­fi­ge Standardfehler zu ent­decken, son­dern vom Compiler das Näschen dahin gesteckt bekommt, wo man gar nicht schnup­pern woll­te. Lint haut einem typi­schen Anfänger auch den Code um die Ohren, aber aua! Und mir auch manchmal… https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif

          Ich wür­de aller­dings auch jedem emp­feh­len, eine prak­ti­sche Skriptsprache zu erler­nen. Einfach nur, weil man damit ins­ge­samt ver­mut­lich Jahre an Lebenszeit spart. Welche das ist, ist bei­na­he gleichgültig.

  5. Ist doch gut so wie es ist, mei­ne Zukunftsbücher aus den 70-ern und 80-ern haben immer­hin behaup­tet, dass die Technologie bald über­all ist und die­se so ein­fach zu umge­hen ist wie sonst nichts.
    Da wer­den wir „alten Haudegen“ dann super über­le­ben können.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr...
 

Erlaubte Tags:
<strong> <em> <pre> <code> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <span style=""> <strike>

Datenschutzhinweis: Ihre IP-Adresse wird nicht gespeichert. Details finden Sie hier.

Senf hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr...
 

Du willst deinen Senf dazugeben, dir ist aber der Senf ausgegangen? Dann nutz den SENFOMATEN! Per einfachem Klick kannst du fertigen Senf in das Kommentarfeld schmieren, nur dazugeben musst du ihn noch selbst.