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

Micro­soft hat in sein Git­Hub die­ser Tage ganz viel Intel­li­genz rein­ge­kün­stelt, die beim Pro­gram­mie­ren in „öffent­li­chem Code“ (also unter ande­rem in auf Git­Hub lie­gen­den Pro­jek­ten) nach ver­meint­lich pas­sen­dem Code sucht und aus die­sem wie­der­um neu­en Code gene­riert.

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

  • Der „Pro­gram­mie­rer“ – wer sei­nen Code von Auto­ma­tis­men schrei­ben lässt, ist kein Pro­gram­mie­rer ohne Anfüh­rungs­zei­chen, son­dern ledig­lich ein Knopf­drücker, wenn nicht gar ein grü­ner Kanz­ler­kan­di­dat Pla­gia­tor – schreibt einen Funk­ti­ons­kom­men­tar und/oder ‑pro­to­ty­pen, in dem er per Varia­blen­na­men, Funk­ti­ons­na­men, Bei­spiel­da­ten und so wei­ter unge­fähr beschreibt, was er vor­hat. So weit erst mal kei­ne Ein­wän­de, immer­hin klingt das nach auch für ande­re Leu­te ver­ständ­li­chem Code und das ist gut.
  • Die „künst­li­che“ „Intel­li­genz“ guckt, ob sie in den ihr bekann­ten Daten ver­gleich­ba­res Ansin­nen fin­det, und kopiert im Erfolgs­fall vor­han­de­ne Code­schnip­sel zu einem neu­en Code­schnip­sel zusam­men, der viel­leicht funk­tio­niert oder auch nicht.
  • Die­se „künst­li­che“ „Intel­li­genz“ ist dabei der­ma­ßen treff­si­cher, dass bereits nach weni­gen Tagen Berich­te im Netz zu fin­den sind, denen zufol­ge sie auch mal schlicht Aus­schnit­te aus der GPL als Kom­men­tar vor­schlägt.

In „0,1 Pro­zent der Fäl­le“, behaup­tet Micro­soft, kön­ne es vor­kom­men, dass gan­ze Code­stücke voll­stän­dig über­nom­men „vor­ge­schla­gen“ wer­den. Mei­ne Kennt­nis­se im Lizenz­recht sind als mäßig zu bezeich­nen, aber ich wür­de anneh­men wol­len, dass auch in 0,1 Pro­zent der Fäl­le aus unbe­kann­ter Quel­le über­nom­me­ner Code dem Ent­wick­ler des Ori­gi­nal­codes nicht gefal­len dürf­te. Natür­lich auf Twit­ter wur­de vor­ge­schla­gen, Micro­soft möge doch, wenn sie sich so sicher sei­en, dass die „Copi­lot“ genann­te Belei­di­gung für rich­ti­ge Pro­gram­mie­rer schon nie­man­des Urhe­ber­recht ver­let­ze, die­sen „Copi­lo­ten“ – sogar gegen Bezah­lung – mal mit dem Code des Win­dows-10-Ker­nels füt­tern. Bis­her blieb die­ser Vor­schlag anschei­nend unbe­ant­wor­tet.

Das Lizenz­pro­blem, auch für mich (so zwei, drei klei­ne Pro­gram­me von mir lie­gen ja auch offen im Inter­net her­um) nicht ganz unin­ter­es­sant, ist aber gar nicht mal unbe­dingt das Ärger­lich­ste an dem Mit­flie­ger. Viel wesent­li­cher scheint mir zu sein, wel­ches Pro­blem damit gelöst wer­den soll: Nut­zer von Visu­al Stu­dio Code, einem auf einem Web­brow­ser basie­ren­den und dar­um außer­or­dent­lich res­sour­cen­hung­ri­gen „Text­edi­tor“ von Micro­soft, sol­len so in die Lage ver­setzt wer­den, Pro­gram­me 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 Soft­ware angeht (Text­edi­to­ren 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 Vor­ver­ur­tei­lun­gen von Men­schen, die ich mei­nes Wis­sens ü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 Gene­ra­ti­on von „Pro­gram­mie­rern“ her­an­wach­sen zu las­sen, deren gesam­te Pro­gram­mier­erfah­rung dar­auf fußt, dass sie einen Knopf gedrückt haben und auf magi­sche Wei­se Code erschie­nen ist, der dann auch noch halb­wegs das getan hat, was sie erwar­tet hat­ten.

Quell­of­fen ist der „Copi­lot“ im Übri­gen nicht. Nicht, dass den noch eine „künst­li­che“ „Intel­li­genz“ irgend­wo rein­ko­piert!

(Hät­te der Bull­shi­fier nicht gereicht?)

Senfecke:

  1. Dann sind auch die­je­ni­gen die Stack Over­flow nut­zen kei­ne ech­ten Pro­gram­mie­rer? Zum Pro­gram­mie­ren gehört auch die Soft­ware-Archi­tek­tur, allei­ne sich zu über­le­gen in was für Funk­tio­nen man sein Code auf­teilt, wie man die Funk­ti­on nennt, wie die Varia­blen und ihn damit mög­lichst gut les­bar macht gehört bereits zum Pro­gram­mie­ren. Ich bezweif­le, dass die KI da in näch­ster Zeit so intel­li­gent sein wird, als das man nicht aus selbst Pro­gram­mie­ren muss. Wich­tig wäre es m.M.n aber, dass der Aut­hor und die Lizenz des Snip­pets mit in den Kom­men­tar ein­ge­tra­gen wird.

    • Wenn „aus frem­dem Code Din­ge zusam­men­ko­pie­ren und sei­nen Namen dran­schrei­ben“ „Pro­gram­mie­ren“ ist, haben Baer­bock, Gut­ten­berg und Mil­li Vanil­li :-) 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 Dok­tor­ar­beit aber eine ande­re Num­mer. Hat­te die CSU such nicht exklu­siv, wie man hört.
        Mil­li Vanil­li, das sagt ja der Name schon, ist in jedem Fall pein­lich, mit Pla­gi­at oder ohne.
        Aber Bear­bock und Gut­ten­berg gehö­ren nicht in einen Atem­zug.

      • Naja ich sag ja, der ori­gi­nal Aut­hor + Lizenz soll­te schon auto­ma­tisch als Kom­men­tar 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änd­li­cher.

  2. Mein Gedan­ke war ähn­lich wie der von Pas­cal: macht es einen Unter­schied – außer im Zeit­auf­wand -, ob der Mensch Code aus Stack­Over­flow kopiert oder die Maschi­ne Code aus Git­hub? Im Zwei­fel ist doch bei­des ähn­lich kata­stro­phal- oder kann glei­cher­ma­ßen lehr­reich sein, wenn man das als Aus­gangs­punkt für eige­nes Ver­ständ­nis 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 Auf­wand -, aber nicht glei­cher­ma­ßen lehr­reich, weil Erläu­te­rung und Dis­kus­si­on feh­len. )

      • Kommt ver­mut­lich dar­auf wie man damit umgeht, wenn die Quel­le des Snip­pets dabei steht (kei­ne Ahnung ob das der Fall ist?), dann könn­te man sich ja zumin­dest den Kon­text der Quel­le 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 Stack­Over­flow pas­siert wenn du das best­näch­ste Ergeb­nis blind kopierst.

    • Der Unter­schied liegt viel­leicht dar­in, dass Code auf Stack­over­flow ja genau des­we­gen dort ver­öf­fent­licht wird, damit ihn jeder­mann ohne wei­te­res Lizenz­ge­ham­pel über­neh­men kann.

      Ein dickes Soft­ware­pro­jekt unter GPL auf Git­Hub hat dage­gen absicht­lich die Lizenz bekom­men.

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

        Wenn ich ein Pro­jekt 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ön­nen.

        Wenn ich es unter der GPL ver­öf­fent­li­che, dann erlau­be ich das nur unter den glei­chen Bedin­gun­gen und möch­te nicht, dass mei­ne Arbeit unge­fragt in kom­mer­zi­el­len pro­prie­tä­ren Pro­jek­ten 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 Snip­pets ver­wen­det wer­den die län­ger als 3 Zei­len (kei­ne Ahnung wo die Gren­ze hier genau ist) Code sind.

        Jetzt muss die KI nur noch die Lizen­zen auf Kom­pa­ti­bi­li­tät prü­fen (zumin­dest bei grö­ße­ren Snip­pets), wenn sie das nicht macht, fin­de ich das auch nicht okay.

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

          Mit Aus­nah­me der MIT‑0 (die ich in eini­gen mei­ner Pro­gram­me nut­ze) ver­pflich­ten die mei­sten die­ser Lizen­zen zur kor­rek­ten Anga­be der Ori­gi­nal­li­zenz und des ursprüng­li­chen Autors. Wie möch­test du dem in die­sem Fall nach­kom­men?

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

            In der Exten­si­on gibt es zudem eine allo­w­list mit Lizen­zen die ich in mei­nem Pro­jekt erlau­be (oder eine block­list).

            Das gan­ze betrifft aber nur Snip­pets von x Kom­ple­xi­tät.

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

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

            Es könn­te auch sein, dass mit der Zeit immer mehr opti­mier­te Vari­an­ten belieb­ter Snip­pets auf­tau­chen wer­den (da man ihn über­nimmt, aber dann viel­leicht noch opti­miert). Wür­dest du das dann bei dir zurück­por­tie­ren? Viel­leicht wird dir die opti­mier­te Vari­an­te sogar auto­ma­tisch ange­zeigt wenn du auch die Exten­si­on instal­liert hast. Letzt­end­lich ist das doch eigent­lich auch im Sin­ne von Open­So­ur­ce.

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

              Ja, natür­lich. Ich erin­ne­re mich an kei­nen Pas­sus 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 „Die­ser Code steht voll­stän­dig unter $lizenz!“ bedarf dei­ner Mei­nung nach seman­ti­scher Über­ar­bei­tung?

              Ich wer­de das Pro­blem auf abseh­ba­re Zeit nicht selbst haben, da ich mich wei­ge­re, „Text­edi­to­ren“ zu benut­zen, die erst mal eine voll­stän­di­ge Web­brow­ser­en­gi­ne hoch­fah­ren müs­sen, um mich Zei­chen auf dem Bild­schirm erschei­nen las­sen zu las­sen.

              • Ja stimmt, die Lizenz und das Urhe­ber­recht muss ein­ge­hal­ten wer­den. Bei einem Ein­zei­ler der nicht wirk­lich indi­vi­du­ell ist, wäre das viel­leicht etwas ande­res.

                • Men­schen, die sich „Pro­gram­mie­rer“ nen­nen, aber Ein­zei­ler von einer „künst­li­chen“ „Intel­li­genz“ ein­fü­gen las­sen müs­sen, gehört das Recht auf Com­pu­ter­nut­zung auf Lebens­zeit aberkannt. YMMV.

  3. Es waren Zei­ten, als man sich als Ent­wick­ler für die ver­öf­fent­lich­te Soft­ware ver­ant­wort­lich gefühlt hat­te. Und zwar so, dass man sogar die Umge­bung (aka Betriebs­sy­stem), die man als Platt­form für die eige­ne Soft­ware ver­wen­det („miss­braucht“) hat, in- und aus­wen­dig ler­nen woll­te, um im Fal­le eines Fal­les auch ein selt­sa­mes Pro­blem ernst­haft ana­ly­sie­ren zu kön­nen. Dann kam die Gene­ra­ti­on von „Ent­wick­lern“, denen die Atti­tü­de „it works on my machi­ne“ kei­ne Bla­ma­ge dar­ge­stellt hat.
    Und von da aus scheint der näch­ste logi­sche Schritt der Ver­ant­wor­tungs­de­gra­da­ti­on, den die kom­men­de Gene­ra­ti­on ver­mut­lich mit­ma­chen wird, nicht weit ent­fernt zu sein.

  4. >Pro­gram­me zu schrei­ben, ohne pro­gram­mie­ren zu kön­nen.

    Das ist gene­rell ein Pro­blem in der Soft­ware­ent­wick­lung. Ein Pro­gram­mier­an­fän­ger kann heu­te bereits ein funk­tio­nie­ren­des Pro­gramm 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 Pro­gramm auf Sicher­heits­lücken abklop­fen.

      • Für nen Anfän­ger wäre Rust glau­be ich bes­ser geeig­net. Der Rust Com­pi­ler haut dem Anfän­ger sein stin­ken­den Code hart um die Ohren, da der Rust Com­pi­ler es sich zur Auf­ga­be gemacht hat mög­lichst vie­le Pro­ble­me schon beim Kom­pi­lie­ren zu erken­nen. Da heißt es: Ent­we­der man lernt es rich­tig zu machen oder man kämpft stän­dig gegen den Bor­row­checker.

        • Ich mag Rust, aber eben die­ser Zwang zum grund­le­gen­den Ver­ständ­nis von Spei­cher­ver­wal­tung scheint vie­len zu feh­len – dar­um ist C gera­de für Anfän­ger mei­nes Erach­tens die klü­ge­re Wahl.

        • Ich wür­de jedem Anfän­ger heu­te emp­feh­len, mög­lichst schnell C zu ler­nen, denn C schafft einen Sinn für die Funk­ti­ons­wei­se eines Com­pu­ters, ohne so hirn­zer­mür­bend wie ein Assem­bler zu sein. Es gibt Spei­cher, Namen für den Spei­cher (Iden­ti­fier für Varia­blen) und Adres­sen von Spei­cher. Und wenn man Spei­cher 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 Vor­stel­lung davon, wie der Com­pu­ter arbei­tet.

          Selbst, wenn man nie­mals ein grö­ße­res Pro­jekt in C macht, hilft das so erwor­be­ne Wis­sen. Erstens, weil die C‑Syntax in vie­le moder­ne Spra­chen hin­ein­wirkt, und zwei­tens, weil man erahnt, wel­che Pro­ble­me zum Bei­spiel so eine auto­ma­ti­sche Spei­cher­ver­wal­tung machen kann. Ich habe mal gesagt: Spei­cher ist eine viel zu wich­ti­ge Res­sour­ce, um die Ver­wal­tung einem Pro­gram­mie­rer zu über­las­sen, aber Spei­cher ist auch eine viel zu wich­ti­ge Res­sour­ce, um die Ver­wal­tung einem Auto­ma­tis­mus zu über­las­sen. Wer erken­nen kann, wann was an die­ser Aus­sa­ge wahr ist, wird vie­le Feh­ler nicht machen. Wer es nicht erken­nen kann, wird die Anwen­der sei­ner Soft­ware mit fet­ten Klöt­zen für ein­fa­che und längst mit guter Soft­ware gelö­sten Auf­ga­ben quä­len (zum Bei­spiel mit einem Edi­tor im Brow­ser) oder sie mit dem Rät­sel­ra­ten dar­über belä­sti­gen, war­um die­ses ver­damm­te Pro­gramm eigent­lich in unre­gel­mä­ßi­gen Abstän­den zäh­flüs­sig wird. Nein, der Anwen­der kennt kei­ne GC, der Pro­gram­mie­rer soll­te wis­sen, was das ist und gege­be­nen­falls, wie man die Spei­cher­frei­ga­ben so steu­ert, dass es kei­ne »Hän­ger« gibt. Wer kei­nen Sinn für Spei­cher­ver­wal­tung hat, kommt nur lei­der nicht dar­auf.

          Einer der größ­ten Vor­tei­le von Rust über C ist es, dass man kei­ne Zusatz­werk­zeu­ge wie lint benö­tigt, um schwer erkenn­ba­re und häu­fi­ge Stan­dard­feh­ler zu ent­decken, son­dern vom Com­pi­ler das Näs­chen dahin gesteckt bekommt, wo man gar nicht schnup­pern woll­te. Lint haut einem typi­schen Anfän­ger auch den Code um die Ohren, aber aua! Und mir auch manch­mal… 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 Skript­spra­che zu erler­nen. Ein­fach nur, weil man damit ins­ge­samt ver­mut­lich Jah­re an Lebens­zeit spart. Wel­che das ist, ist bei­na­he gleich­gül­tig.

  5. Ist doch gut so wie es ist, mei­ne Zukunfts­bü­cher aus den 70-ern und 80-ern haben immer­hin behaup­tet, dass die Tech­no­lo­gie bald über­all ist und die­se so ein­fach zu umge­hen ist wie sonst nichts.
    Da wer­den wir „alten Hau­de­gen“ dann super über­le­ben kön­nen.

Comments are closed.

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> <tt> <span style=""> <strike>

Datenschutzhinweis: Deine IP-Adresse wird nicht gespeichert. Details findest du hier.