Lizenzkonformität Musikwissenschaft Open-Source

GPL lizenzierte LilyPond-Snippets — und ihre Nebenwirkungen

Die­ser Arti­kel geht unge­woll­ten Sei­ten­ef­fek­ten nach: Er beschreibt, war­um es sub­op­ti­mal ist, GPL lizen­zier­te LilyPo­nd-Snip­pets zu dis­tri­bu­ie­ren, selbst wenn man — wie ich es tue — ger­ne Freie- und Open-Source-Soft­ware erstellt, ver­teilt und ver­wen­det. Der Sei­ten­ef­fekt ist über­ra­schen­der­wei­se der Copy­left-Effekt der GPL:

[ de | en ]

Begin­nen wir mit eini­gen hof­fent­lich unbe­strit­te­nen Punk­ten: Das Pro­gramm ‘LilyPo­nd’ ist unter der GPLv3 lizen­ziert [⇒ 1]. Es will “schö­ne Noten erstel­len” [⇒ 2]. Zu die­sem Zweck nimmt es eine Datei, die die dar­zu­stel­len­den Noten beschreibt, und zwar in einer LilyPo­nd spe­zi­fi­schen Beschrei­bungs­spra­che. Und es erzeugt dar­aus den eigent­li­chen Noten­text — als PDF, PNG etc:

Tristan Chord

LilyPo­nd is a com­pi­led sys­tem: it is run on a text file describ­ing the music. The resul­ting out­put is view­ed on-screen or prin­ted. In some ways, LilyPo­nd is more simi­lar to a pro­gramming lan­guage than gra­phi­cal score editing soft­ware. [⇒ 3]

Die LilyPo­nd-Beschrei­bungs­spra­che ist also eine Pro­gram­mier­spra­che (aus­ge­führt und inter­pre­tiert vom Pro­gramm LilyPo­nd). Das Schrei­ben von Musik für LilyPo­nd ist Pro­gram­mie­rung. LilyPo­nd ist ein Pro­gram­mier­sys­tem wie PHP‑, PYTHON- oder BASH: Der Inter­pre­ter (die PHP‑, Python‑, Bash- oder eben die LilyPo­nd-Engi­ne) nimmt ihren Ein­ga­be­code und erzeugt dar­aus eine neue Aus­ga­be. Sol­che (Open Source-basier­ten) Engi­nes wer­den häu­fig unter ande­ren Lizen­zen frei­ge­ge­ben als der Pro­gram­mier­code, den sie aus­füh­ren. Bei­spiels­wei­se ist PHP unter der PHP-Lizenz lizen­ziert, es gibt jedoch vie­le PHP-Pro­gram­me, die unter der MIT‑, der BSD- oder sogar der LGPL-Lizenz lizen­ziert sind.

Dass dem auch bei LilyPo­nd so ist, zeigt das LilyPo­nd-Repo­si­to­ry [⇒ 4]:

  • Es ent­hält die Datei COPYING, die eine Kopie der GPLv3 ist.
  • Es ent­hält eine Datei mit dem Namen LICENSE, die besagt, dass LilyPo­nd unter der GPLv3 lizen­ziert sei.
  • Es ent­hält eine Datei mit dem Namen LICENSE.Documentation, aus der her­vor­geht, dass alle Doku­ment­ein­ga­ben unter die GNU Free Docu­men­ta­ti­on Licen­se fal­len, aller­dings mit Aus­nah­me der Datei­en im Ver­zeich­nis ’snip­pets’, die­se sei­en ‘Public Domain’.

Dar­aus kön­nen wir Fol­gen­des ablei­ten:

  1. LilyPo­nd selbst ist unter den Bedin­gun­gen der GPL lizen­ziert: Sie dür­fen es aus­füh­ren, unter­su­chen, modi­fi­zie­ren und wei­ter­ge­ben. Wenn Sie jedoch eine (geän­der­te) Instanz wei­ter­ge­ben, müs­sen Sie ihrem ‘Paket’ den Lizenz­text, eine Lis­te der Urhe­ber­rechts­in­ha­ber, den Quell­code und eini­ge ande­re Com­pli­ance Arte­fak­te hin­zu­fü­gen.
  2. Die GPLv2/v3 sagt nir­gend­wo, dass die Ein­ga­be­da­tei­en (in unse­rem Fall: die LilyPo­nd enco­dier­ten Noten) oder die Aus­ga­be­da­tei­en (in unse­rem Fall: pdf, png, …) eben­falls unter den Bedin­gun­gen der GPLv3 ver­teilt wer­den müs­sen.
  3. Außer­dem ver­lan­gen die LilyPo­nd-Urhe­ber­rechts­in­ha­ber an kei­ner Stel­le, dass die Ein­ga­be- und Aus­ga­be­da­tei­en auch unter der GPL frei­zu­ge­ben sind (was sie — dem Vor­bild eini­ger Code­ge­nera­to­ren fol­gend — hät­ten tun könn­ten).
  4. Dar­über hin­aus wis­sen und akzep­tie­ren die Urhe­ber­rechts­in­ha­ber von LilyPo­nd nach­weis­bar, dass die LilyPo­nd-Ein­ga­be­da­tei­en nicht auto­ma­tisch durch den “Star­ken Copy­left Effekt” der GPL erfasst wer­den. Andern­falls hät­ten sie kei­ne Snip­pets in ihr Repo­si­to­ry ein­bet­ten und zugleich sagen sagen kön­nen, dass die­se Public Domain sei­en.

So kön­nen wir all­ge­mein fol­gern, dass die LilyPo­nd-Ein­ga­be- und Aus­ga­be­da­tei­en aus der Sicht von LilyPo­nd und sei­nen Ent­wick­lern anders lizen­siert wer­den dür­fen, als LilyPo­nd selbst.

Wel­che Lizenz soll­te man also für sei­ne LilyPo­nd-Schnip­sel wäh­len? Es gibt zwei Vor­bil­der:

  1. In einem LilyPo­nd Snip­pets Repo­si­to­ry wer­den bereits wie­der­ver­wend­ba­re Snip­pets gehos­tet. Laut LSR fal­len all die­se Snip­pets in die ‘Public Domain’ [⇒ 5]
  2. Ange­bo­ten wird fer­ner eine ‘Open LilyPo­nd Libra­ry’. [⇒ 6] Deren Home­page ist größ­ten­teils ein Web­site-Ske­lett. Es heißt dort nur, “open­Li­ly­Lib” sei eine Erwei­te­rungs­bi­blio­thek für die Musik­no­ta­ti­ons­soft­ware GNU LilyPo­nd. [⇒ 7] Unter der Git­hub Orga­ni­sa­ti­on “open­li­ly­lib” fin­det man dann das zen­tra­le Repo­si­to­ry “oll-core”, das sich als “the heart of open­Li­ly­Lib” vor­stellt und all­ge­mei­ne Funk­tio­nen anbie­tet, die jedes “openLilyLib”-Paket ver­wen­den müs­se. [⇒ 8]

Obwohl die­ses open­Li­ly­Lib Repo­si­to­ry kei­ne Datei mit dem Namen COPYING (mit dem Text der GPL als Inhalt) und auch kei­ne Datei LICENSE oder LICENSING ent­hält, sagt der Hea­der der zen­tra­len Quell­code­da­tei package.ily klar, dass “open­Li­ly­Lib’ freie Soft­ware sei und unter den Bedin­gun­gen der GNU Gene­ral Public Licen­se wei­ter­ge­ge­ben und / oder modi­fi­ziert wer­den kön­ne [⇒ 9]. Dies drückt den Wil­len der Ent­wick­ler und der Copy­right Owner aus, der von allen Benut­zern der open­Li­ly­Lib respek­tiert wer­den muss.

Lei­der hat das Model, GPLv3 lizen­sier­te LilyPo­nd-Schnip­sel anzu­bie­ten, hat eini­ge sehr unat­trak­ti­ve und schmerz­haf­te Fol­gen:

Wir wis­sen bereits, dass der LilyPo­nd-Code selbst Soft­ware ist. Sol­che Schnip­sel wer­den mit dem Befehl include "ABC.ly" in den Haupt­code ein­ge­bun­den. Oder sie wer­den in den eige­nen LilyPo­nd-Musik­code hin­ein­ko­piert. Bei­des trig­gert den Star­ken Copy­left-Effekt der GPL [⇒ A, §5]: Wenn ich einen Teil des GPL-lizen­zier­ten Codes mit­tels eines Funk­ti­ons­auf­ru­fes von mei­nem Code aus ver­wen­de (anstatt die­sen Code selbst zu schrei­ben) oder wenn mei­ne Datei den Fremd­code gar selbst ent­hält, dann hängt mei­ne Arbeit von die­ser GPL-lizen­zier­ten Vor­ar­beit ab und ich muss mei­nen Code auch unter den Bedin­gun­gen der GPL ver­brei­ten, unab­hän­gig davon, ob ich mei­ne Arbeit als Quell­code [⇒ A, §5] oder in Form von kom­pi­lier­ten Ergeb­nis­sen [⇒ A, §6] ver­brei­te.

Jetzt kann man die unan­ge­neh­men Kon­se­quen­zen gera­de­zu rie­chen. Wenn ich mei­ne Musik­no­ten mit der LilyPo­nd-Spra­che beschrei­be und dabei ein GPL-lizen­zier­tes Snip­pet ver­wen­de, muss ich mei­ne Musik­no­ten auch unter den Bedin­gun­gen der GPL ver­brei­ten, und zwar unab­hän­gig davon, ob ich sie als Bil­der / PDFs oder LilyPo­nd-Code wei­ter­ge­be. Durch die Ver­tei­lung unter der GPL gewäh­re ich dann kon­se­quen­ter­wei­se jedem, der mei­ne Ergeb­nis­se bekommt, das Recht, sie zu ver­wen­den, zu stu­die­ren, zu modi­fi­zie­ren und neu zu ver­tei­len. Und was bedeu­tet es, Musik­no­ten zu ver­wen­den? Natür­lich! Es bedeu­tet ins­be­son­de­re auch, die Musik zu spie­len.

Wenn Sie also ein GPL-lizen­zier­tes LilyPo­nd-Snip­pet zum Erstel­len Ihrer eige­nen LilyPo­nd-Musik­da­tei ver­wen­den — sei es als ‘inklu­dier­te’ Datei, sei per Copy&Past -, haben all die­je­ni­gen, die Ihre Noten erhal­ten — egal, in wel­cher Form -, das Recht, Ihre Musik zu spie­len (oder sonst wie zu ver­wen­den) — ohne wei­te­re Nach­fra­ge und zu jedem Zweck.

Um es klar zusa­gen: Natür­lich hat jeder Autor das Recht, sei­ne Arbeit unter eine belie­bi­ge Lizenz zu stel­len. Und die Benut­zer sei­ner Arbeit müs­sen die Anfor­de­run­gen der gewähl­ten Lizenz erfül­len. Das ist unstrit­tig und der Kern der gan­zen Free Soft­ware World. Kein Zwei­fel.

Die Fra­ge ist aller­dings, was dann die­je­ni­gen tun kön­nen, die ihre Nut­zer nicht solch radi­ka­le Kon­se­quen­zen auf­bür­den wol­len?

  • Sie könn­ten ihre Snip­pets / Libs zum ers­ten unter den Bedin­gun­gen der LGPL ver­brei­ten. [⇒ B] Auf­grund des Schwa­chen Copy­left-Effekts der LGPL [⇒ B, §2/§4] dür­fen die Benut­zer dann ihren eige­nen Code / ihre eige­ne Musik unter den ihnen gemä­ßen Bedin­gun­gen ver­brei­ten.

Das hat aber auch einen — wahr­schein­lich uner­wünsch­ten — Neben­ef­fekt: Wenn ich ein Musik­stück auf Basis eines LGPL-lizen­zier­ten Snip­pets geschrie­ben habe, muss ich — auch wenn ich mei­nen Noten­text nur als Bild oder PDF ver­tei­le- zusätz­lich auch den Code, den Lizenz­text selbst, eine Lis­te der Urhe­ber­rechts­in­ha­ber [⇒ B, §4] und eini­ge ande­re Com­pli­ance-Arte­fak­te ver­tei­len — und zwar zusam­men mit mei­nem Noten­text . Eine ein­fa­che Ver­tei­lung mei­ner Arbeit ohne die­se Com­pli­ance-Arte­fak­te wäre schlicht ein Lizenz­ver­stoß. Egal wie sin­nig oder unsin­nig man den Mehr­auf­wand ein­schätz­te!

  • Alter­na­tiv könn­ten Sie in dem Doku­ment, mit dem Sie Ihr Snip­pet lizen­sie­ren, aus­drück­lich dar­auf hin­wei­sen, dass die Ver­brei­tung der Musik in Form von Bil­dern / PDFs NICHT die Anfor­de­run­gen der LGPL ent­spre­chen müs­se (also den Copy­left-Effekt nicht trig­ge­re).

Die Lizenz durch Exzep­ti­ons ‘auf­zu­wei­chen’, ist mitt­ler­wei­le üblich. Es ist jedoch immer bes­ser, eine sprach­lich pas­sen­de Lizenz zu ver­wen­den, als hin­zu­zu­fü­gen, dass der Lizenz­text in gewis­ser Hin­sicht nicht mei­ne, wie er besa­ge.

  • Fer­ner könn­ten Sie den LilyPo­nd-Code unter jeder ande­ren zuläs­si­gen Open Source-Lizenz ver­tei­len.

Aber auch die­se Lizen­zen zwin­gen uns, Com­pli­ance-Arte­fak­te zusam­men mit unse­rer Musik zu ver­brei­ten (im Fal­le der Apache‑2.0‑Lizenz zum Bei­spiel wäre das z.B. der Lizenz­text selbst und die NOTI­CE-Datei des Pakets [⇒ C §4].

  • Schließ­lich könn­ten Sie die Snip­pets unter den Bedin­gun­gen einer der Crea­ti­ve Com­mons-Lizen­zen ver­brei­ten. [⇒ D]

Je nach Wahl der Attri­bu­te wür­den Sie selbst fest­le­gen, wie die Nut­zer Ihnen Respekt zol­len soll­ten (BY), wel­che Rech­te er über­neh­men muss (SA) oder ob er womög­lich gar nichts tun muss (CC0).

  • Schließ­lich könn­ten Sie Ihre Snip­pets zu ‘Public Domain Soft­ware erklä­ren’.

Dann gäben Sie aber Ihre Urhe­ber­rech­te voll­stän­dig auf. Ihre Arbeit dürf­te for­mal nicht ein­mal mehr auf Sie als Copy­righ­tow­ner bzw. Autor ver­wei­sen. Die­sen Weg wählt der LSR [⇒ 5]. Lei­der taugt die­ses Ver­fah­ren nur im ang­lo-ame­ri­ka­ni­schen Rechts­raum, im euro­päi­schen gibt es kei­ne “public domain”.

Was also sol­len wir als Autoren tun, die wir mit unse­ren Snip­pets ande­ren die Arbeit mit LilyPo­nd erleich­tern wol­len? Es gibt drei Wege:

  • Ich den­ke, der bes­te Weg besteht dar­in, die­se Snip­pets unter den Bedin­gun­gen der MIT-Lizenz zu ver­brei­ten. Die­se per­mis­si­ve Lizenz ist so klein, dass sie zusam­men mit der Copy­right-Zei­le buch­stäb­lich in den Quell­code inte­griert wer­den kann, sodass er lite­ral bereits alle Com­pli­ance-Arte­fak­te ent­hält: “The abo­ve copy­right noti­ce and this per­mis­si­on noti­ce shall be included in all copies or sub­stan­ti­al por­ti­ons of the Soft­ware.” [⇒ E]
  • Die zwei­te fast gleich­wer­ti­ge Metho­de bestün­de dar­in, die Snip­pets unter einer Crea­ti­ve Com­mons Lizenz zu ver­tei­len. Aller­dings bür­det nur die CC0 dem Nut­zer kei­ne ‘läs­ti­gen’ Pflich­ten auf [⇒ F].
  • Der drit­te Weg ist der, den ich bei harmonyli.ly ver­wen­det habe: die Dual­li­zen­zie­rung

Aller­dings: wenn wir so vor­ge­hen, kön­nen wir nicht mehr erzwin­gen, dass unse­re Nut­zer ihre Ver­bes­se­run­gen mit der Com­mu­ni­ty tei­len. Aber sei­en wir ehr­lich: Sind unse­re Snip­pets so wich­tig, dass wir sie beson­ders schüt­zen müs­sen? Ich den­ke, dass es manch­mal bes­ser ist, ein­fach so zu geben, ohne etwas zurück­zu­for­dern. Denn das kommt dann meist so, ganz von allein und frei­wil­lig.


Und in welchem Zusammenhang …

… steht das mit einer sys­te­ma­ti­schen Erfül­lung von FOSS-Lizen­zen? Nun, dazu müs­sen wir halt auch poli­ti­sche Kon­no­ta­tio­nen beden­ken, kon­zep­tio­nel­le und kon­tex­tu­el­le Aspek­te ana­ly­sie­ren — ein­zeln oder gemein­sam auf Kon­fe­ren­zen. Wir müs­sen kon­kre­te Fäl­le und all­ge­mei­ne Neben­wir­kun­gen durch­den­ken, für Soft­ware, Bil­der oder Doku­men­te. Wir müs­sen Trends benen­nen und Leit­fä­den erstel­len. Vor­nehm­lich aber müs­sen wir die Auto­ma­ti­sie­rung der Lizenz­er­fül­lung vor­an­trei­ben, unser Lizenz­wis­sen frei zur Ver­fü­gung stel­len, es in klei­ne­re Tools gie­ßen und in grö­ße­re Sys­te­me ein­brin­gen: Denn FOSS lebt von der Frei­heit durch Lizenz­er­fül­lung, im Gro­ßen und im Klei­nen.


Im Übri­gen: Män­ner sind mit­ge­meint.

2 Kommentare zu “GPL lizenzierte LilyPond-Snippets — und ihre Nebenwirkungen”

  • Carl Sorensen

    says:

    I belie­ve you are mis­in­ter­pre­ting the GPL licen­se as it appli­es to LilyPo­nd out­put.

    PDF files are not soft­ware, but out­put from soft­ware.

    Simi­lar­ly, MIDI files are not soft­ware, but out­put from soft­ware.

    gcc is licen­sed under GPL3. Using gcc to com­pi­le your pro­gram does not requi­re you to dis­tri­bu­te your pro­gram under GPL terms, becau­se your work is *NOT* a deri­va­ti­ve work. Ins­tead, your work is sepa­ra­te work that is crea­ted using the tools pro­vi­ded in gcc.

    Can you find a sin­gle refe­rence in any of the FSF dis­cus­sion of the GPL that indi­ca­tes the out­put of a GPL pro­gram is cover­ed by the GPL?

    Here are two ques­ti­ons and ans­wers from the FSF GPL FAQ[1] that indi­ca­te the out­put is only cover­ed by the GPL if the out­put has a ver­ba­tim copy of the pro­gram. This is not the case for any LSR snip­pet of which I am awa­re.

    Is the­re some way that I can GPL the out­put peo­p­le get from use of my pro­gram? For exam­p­le, if my pro­gram is used to deve­lop hard­ware designs, can I requi­re that the­se designs must be free? (#GPL­Out­put)
    In gene­ral this is legal­ly impos­si­ble; copy­right law does not give you any say in the use of the out­put peo­p­le make from their data using your pro­gram. If the user uses your pro­gram to enter or con­vert her own data, the copy­right on the out­put belongs to her, not you. More gene­ral­ly, when a pro­gram trans­la­tes its input into some other form, the copy­right sta­tus of the out­put inhe­rits that of the input it was gene­ra­ted from.

    So the only way you have a say in the use of the out­put is if sub­stan­ti­al parts of the out­put are copied (more or less) from text in your pro­gram. For ins­tance, part of the out­put of Bison (see abo­ve) would be cover­ed by the GNU GPL, if we had not made an excep­ti­on in this spe­ci­fic case.

    You could arti­fi­ci­al­ly make a pro­gram copy cer­tain text into its out­put even if the­re is no tech­ni­cal reason to do so. But if that copied text ser­ves no prac­ti­cal pur­po­se, the user could sim­ply dele­te that text from the out­put and use only the rest. Then he would not have to obey the con­di­ti­ons on redis­tri­bu­ti­on of the copied text.

    In what cases is the out­put of a GPL pro­gram cover­ed by the GPL too? (#What­Cas­eIs­Out­putGPL)
    The out­put of a pro­gram is not, in gene­ral, cover­ed by the copy­right on the code of the pro­gram. So the licen­se of the code of the pro­gram does not app­ly to the out­put, whe­ther you pipe it into a file, make a screen­shot, screen­cast, or video.

    The excep­ti­on would be when the pro­gram dis­plays a full screen of text and/or art that comes from the pro­gram. Then the copy­right on that text and/or art covers the out­put. Pro­grams that out­put audio, such as video games, would also fit into this excep­ti­on.

    If the art/music is under the GPL, then the GPL appli­es when you copy it no mat­ter how you copy it. Howe­ver, fair use may still app­ly.

    Keep in mind that some pro­grams, par­ti­cu­lar­ly video games, can have artwork/audio that is licen­sed sepa­ra­te­ly from the under­ly­ing GPLed game. In such cases, the licen­se on the artwork/audio would dic­ta­te the terms under which video/streaming may occur. See also: Can I use the GPL for some­thing other than soft­ware?

    I do not think the issue you are con­cer­ned about is a pro­blem.

    Carl Soren­sen

    1. https://www.gnu.org/licenses/gpl-faq.html#WhatCaseIsOutputGPL

    Antworten

  • Karsten Reincke

    says:

    Many thanks for your exhaus­ti­ve ans­wer!

    Alt­hough your com­ment con­ta­ins an important hint, it also pas­ses the core of my argu­men­ta­ti­on:

    You compa­re GCC and LilyPo­nd. And you con­clude, that — like in case of the GPL licen­sed GCC whe­re the copy­left effect does not cover its out­put (the com­pi­led pro­gram), — also in case of the GPL licen­sed LilyPo­nd the copy­left effect does not cover its out­put (the picture/pdf). Unfort­u­na­te­ly, that’s not my point:

    I am not arguing that my LilyPo­nd work (or a snip­pet) is cover­ed by the GPL becau­se it is ‘exe­cu­ted’ by LilyPo­nd. I argue that my code is cover­ed by the GPL if I use (include or copy) a GPL licen­sed LilyPo­nd snip­pet. And if it is cover­ed, then in accordance with the GPL §6 (title: “Con­vey­ing Non-Source Forms”) also the com­pi­led ver­si­on is cover­ed by the GPL. (BTW: even a pic­tu­re is bina­ry code which still must be inter­pre­ted).

    Nevert­hel­ess, your com­ment con­ta­ins the important hint, that the FSF does not want that the out­put is cover­ed by the strong copy­left effect of its pro­grams.

    I would be hap­py if the state­ment you quo­ted would be judi­ci­al­ly appro­ved! But as long as we do not have such a legal descis­i­on the­re is a gre­at risk that my sci­en­ti­fic and artis­ti­cal music work can free­ly be used due to the fact that I used a GPL licen­sed snip­pet for crea­ting the music scores — a risk, which I don’t want to take.

    But even if I agreed with your posi­ti­on, then we both still have to con­clude, that we can only dis­tri­bu­te/hand-over our LilyPo­nd code under the terms of the GPL, if our code used a GPL licen­sed snip­pet. And even this is a strong side effect.

    with best regards Kars­ten

    Antworten

Kommentar schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To top