GPL vs. BSD (?)

In der ganz neuen Debatte darüber, dass Sony einen BSD-Lizenzierten Ersatz für Busybox herstellen will, wurde schon extrem viel geschrieben über den Sinn und Unsinn der GPL in Unternehmen und Sonys Motive etc. Leider war in diesen Diskussionen in diversen News-Portalen und Foren soviel FUD dabei wie lange nicht mehr im Copyleft vs. Non-Copyleft Lizenzstreit, weshalb ich gerne ein paar Dinge bezüglich der GPL und des allgemeinen Streits klarstellen möchte. (Und natürlich meinen Senf dazugeben, wie immer 😛 )

Was ist Freiheit?

Logo of the GNU ProjectDie BSD-Fraktion bezeichnet sich immer selbst als die mit der freieren Lizenz und bezichtigen den “Gegner”, Copyleft-Lizenzen wie die GPL, Freiheiten einzuschränken. Umgekehrt, nur mit etwas anderer Argumentation, werfen die GPLer das auch den BSDlern vor. Wer hat also recht? Welche Lizenz ist die “freiere”? Die Antwort ist so einfach wie verwirrend: Beide haben recht. Es kommt nämlich ganz darauf an, wie man Freiheit definiert bzw. welche Freiheit man betrachtet.

Die GPL-Lizenz zwingt den Programmierer bzw. die Firma, die den GPL-Code nutzt, alle Änderungen ebenfalls mit den binären Dateien zu veröffentlichen und denjenigen, die die Binärdateien erhalten, zugänglich zu machen. In der Regel ist das die Allgemeinheit, da jeder die Binärdateien erhalten kann, in einigen Fällen müsste aber der Code auch nur dem jeweiligen Auftraggeber zugänglich gemacht werden, der das Programm bestellt hat, und alleine die Binärdatei erhält. (Somit müssten also Änderungen, die intern in der Firma verwendet werden, gar nicht veröffentlicht werden. Bei Webanwendungen ist das mitunter ein Problem, wofür die AGPL geschaffen wurde) Die GPL-Lizenz forciert also insgesamt die Freiheit des Codes.

Die BSD-artigen Lizenzen ermöglichen es der Firma, jegliche Änderung am BSD-Code als Closed-Source zu behalten, ein Veröffentlichungszwang existiert nicht. Einzig die Autoren der BSD-Software müssen irgendwo genannt werden. Da BSD-Code quasi beliebig verwendet werden kann, ohne zusätzliche Pflichten aufzuerlegen, steht hier die Freiheit des Entwicklers im Vordergrund.

Spricht man über freie Software, muss man also immer überlegen, wie weit die Freiheit geht, bzw. was genau die jeweilige Freiheit ist.

Beide großen Lizenzen, GPL wie BSD, sind nach der FSF zulässig für “freie Software”, also im Grunde gleich frei.

Das System GPL

Die GPL-Lizenz stellt sicher, dass Code, welcher unter der GPL veröffentlicht wurde, auch für immer offen bleibt und alle Änderungen ebenfalls veröffentlicht werde.

Der Hintergedanke dabei ist, dass wenn jemand das Projekt eines Entwicklers X benutzt und verbessert, dieser dann seinen Code veröffentlichen muss, der dann wieder in das ursprüngliche Projekt einfließt. Somit wird das Projekt immer besser, je mehr Leute es nutzen.

Die GPL etabliert also ein System von “geben-und-nehmen”. Dabei ist es relativ problemlos möglich, GPL-Lizenzierten Code in Closes-Source Softwareprojekten zu verwenden, anders als oft behauptet. Einzige Bedingung bei der GPL: Der Code muss separat kompiliert werden und die Closed-Sozrce Teile dürfen keinen GPL-Code enthalten. (Sonst müssten sie ja im Sourcecode freigegeben werden) Das führt zu Problemen, wenn Bibliotheken unter der GPL stehen, denn durch das linken gegen diese würde der Closed-Source-Code ebenfalls “GPLifiziert”. Dafür gibt es dann die LGPL, die das Problem umgeht, indem sie einige Ausnahmen zur GPL hinzufügt. Wenn eine Firma also LGPL-Code benutzen will, muss sie diesen nur in eine extra-Library auslagern und ihren Closed-Source Code dann gegen diese linken. Einzig die Änderungen am ursprünglichen LGPL-Code müssten dann publiziert werden.

Das System BSD

Bei der BSD-Lizenz kann der offene BSD-Code beliebig mit dem Closed-Source Code vermischt werden. Man kann also geziehlt einzelne Module aus dem Code in seinem Projekt verwenden, ohne sie in irgendeiner Form auszulagern. Das ist für viele Firmen natürlich angenehmer, da man nicht darauf achten muss, ob man die GPL-Lizenz verletzt.

Änderungen an BSD-Code können, müssen aber nicht an das ursprüngliche Projekt zurückgegeben werden. So konnte z.B. Apple aus einem BSD-System sein MacOS formen, ohne es im Code freizugeben, war aber gleichzeitig bei seinem KHTML-Fork WebKit dazu gezwungen, dieses im Code freizugeben, da KHTML unter der LGPL-Lizenz stand.

Fazit & Meinung

Im Prinzip müsste es für Unternehmen problemlos möglich sein, GPL-Code zu verwenden und auf dessen Lizenz zu achten. Kleinere Unternehmen schaffen das, und größere mit einer so riesigen Rechtsabteilung wie der von Sony müssten erst recht dazu in der Lage sein.

Klar ist die GPL ein Mehraufwand und schränkt die Flexibilität eines Entwicklers ein wenig ein, aber man muss ihr zugutehalten, dass mit der Freiheit des Codes, den die GPL propagiert, in der Regel auch die Freiheit des Nutzers einhergeht. Klar, nicht jeder kann den Code selber anpassen oder kontrollieren, aber von den Veröffentlichungen von denjenigen, die sowas können, profitiert am Ende auch der ganz normale Endnutzer.

Das alles sind keine Argumente gegen die Verwendung der BSD-Lizenz – und ganz ehrlich, für den durchschnittlichen, freien Entwickler fallen mir auch keine ein. Das ist eine Sache persönlicher Vorlieben. Anders herum kann es in manchen Fällen durchaus sinnvoll sein, die GPL bzw. eine andere Copyleft-Lizenz nicht zu nutzen. So steht z.B. Googles WebM-Projekt under der BSD-Lizenz. Das macht es einfacher, das Format zu verbreiten, da man BSD-Code, solange man den Namen der Autoren erwähnt, beliebig nutzen kann. Das ist für Unternehmen wir bereits gesagt weit weniger aufwändig als die Verwendung von GPL-Code, womit sich WebM im Unternehmensbereich schneller verbreiten kann.

Meine Projekte stehen alle unter der GPLv3 oder LGPLv3, da ich nicht erwarte, das eine Firma – sollte sie auf die Idee kommen, den Code zu verwenden – ohne irgendeinen Anreiz wieder Code an das Projekt zurückfließen lässt. Warum auch? Firmen arbeiten kapitalistisch, wenn sie also die Werte, die sie selber schaffen freigeben, ohne Gewinn zu machen, ist das höchst unlogisch, sofern das Geschäftsmodell der Firma aus dem Varkauf von Closed-Source-Softwarelizenzen besteht. (dass es anders geht, zeigt das Beispiel RedHat)

Die GPL-Lizenz zwingt nun quasi ein Unternehmen, ebenfalls etwas beizutragen. Durch den viralen Effekt der GPL, wird das Projekt nach und nach immer besser. Ein Beispiel ist Linux. Man kann zwar nicht wissen, wie es ausgesehen hätte, wenn Linux unter einen Non-Copyleft-Lizenz wie der BSD-Lizenz gestanden hätte, aber ich würde jede Wette eingehen, dass der Kosmos and Firmen und freien Entwicklern, die gemeinsam an Linux arbeiten ohne GPL nie zustande gekommen wäre.

Im Gegensatz zur Meinung einiger fordert die GPL auch nicht, den gesamten Code eines Projektes herauszugeben. Lediglich die GPL-Teile müssen veröffentlicht werden, was ich akzeptabel für alle Seiten finde.

Im ganzen Streit um die GPL scheint ziemlich viel Unwissen vorhanden zu sein: So kenne ich z.B. ein Unternehmen, in dem noch immer der GCC (GNU C Compiler) in Version 3 eingesetzt wird, obwohl es bereits Version 4.6 gibt. Warum? Die neueren versionen des Compilers sind GPLv3 lizenziert, die älteren GPLv2. Die GPLv3 erhebt ein paar weitere Ansprüche, z.B. enthält sie eine Art eine “anti-DRM-Klausel” und erzwingt die Lizenzierung von Patenten an den Nutzer des GPL-Codes. Weiterhin wurde die Kompatibilität mit anderen Lizenzen verbessert. Im Grunde gäbe es keinen Grund, die GPLv3 bei einem Compiler (!) zu umgehen, aber anscheinend sind die Unterschiede zwischen den GPL-versionen nicht gut genug bekannt.

Zur aktuellen Debatte: Sony hat jedes Recht, einen Busybox-Ersatz unter einer X-Beliebigen Lizenz nachzuprogrammieren. Die Ausführungen wirken aber so, als ob Sony die Community dazu brigen will, ihnen einen Busybox-Ersatz zu bauen, was ich wiederum ziemlich dreist finde. Mal sehen, wie sich das Ganze entwickelt, ich hoffe aber, dass sich die Antipathie gegen die (L)GPL mit der Zeit legt und Lizenzen sinnvoll gewählt werden.

Beide, die GPL- und die BSD-Lizenz, haben ebsolut eine Daseinsberechtigung und keine ist “besser”. Lediglich der Fokus beider Lizenzen und die Definition von “Freiheit” sind bei den Lizenzen anders gewählt.

Für die, die Interesse haben empfehle ich den Blogbeitrag von Bradley M. Kuhn (englisch) zum Thema Copyleft-Lizenzen und Firmen.

Bei allem, was oben steht möchte ich noch anmerken, dass ich kein Jurist bin und auch nicht selbst in einer Firma arbeite. 8Dennoch ist es natürlich möglich, Informationen zu bekommen 😉 )

9 Comments

  • Christian commented on 19. February 2012 Reply

    Man kann schon sagen, wie es ausgesehen hätte, wenn Linux unter einer BSD-Lizenz gewesen wäre. Es hätte so ausgesehen wie BSD (mehr oder weniger Schattendasein), und eine große Firma hätte sich den Code geschnappt (so wie Apple) und daraus Millionen verdient, ohne den Code frei zu geben.
    Insofern ist die GPL der Garant dafür, dass es irgendwann noch gute Software für freie Menschen gibt. Leute, die sich Lizenzgebühren nicht leisten können, müssen derzeit halt immer noch entweder illegale Kopien verwenden, oder eben Freie Software.

  • Mike commented on 20. February 2012 Reply

    Vielen Dank für den Eintrag. Ich selbst (als Nutzer) mag die GPL lieber, da sie meiner Meinung nach die Freiheit der Software auf dauer sicherstellt.
    Ich möchte aber einen Satz korrigieren, soweit ich die ganze Sache richtig verstanden habe:
    “Die GPL-Lizenz zwingt den Programmierer bzw. die Firma, die den GPL-Code nutzt, alle Änderungen ebenfalls zu veröffentlichen und der Allgemeinheit zugänglich zu machen.”
    Ich denke dieser Satz ist so nicht korrekt. Die GPL zwingt doch nur bei Weitergabe bzw. Veröffentlichung auch den geänderten Code offenzulegen (share alike)!? Wenn ich oder eine Firma GPL Code ändern, um ihn intern (zu Hause oder nur innerhalb der Firma) zu verwenden, dann muss ich ihn doch gar nicht offenlegen!? Die freie Nutzung des Codes zu eigenen Zwecken ist doch ausdrücklich erlaubt!?
    Kann das jemand so bestätigen, oder habe ich hier einen Denkfehler?

    • Ximion commented on 21. February 2012 Reply

      Nein, du hast völlig recht. Das war sehr unsauber definiert. Ich habe das im Artikel mal genauer dargestellt, obwohl der Abschnitt dadurch etwas komplizierter geworden ist ^^
      Danke für den Hinweis!

  • ostcar commented on 20. February 2012 Reply

    Danke für diesen Artikel. Insbesondere deine Ausführungen zur Freiheit waren sehr klar. Es wäre aber keine Umstrittene diskussion, wenn nicht andere Leute (zum Beispiel ich) darauf hin einen Kommentar abgeben wollen 🙂

    === Zur Freiheit ===

    > Die GPL-Lizenz forciert also die Freiheit des Codes.
    Mir stell sich die Frage, was ist die „Freiheit des Codes.“

    Laut Wikipedia bedeutet Freiheit folgendes:
    >Freiheit (lateinisch libertas) wird in der Regel verstanden als die Möglichkeit, ohne innere oder äußere Zwänge zwischen verschiedenen Möglichkeiten entscheiden zu können. Der Begriff benennt allgemein einen Zustand der Autonomie eines Subjekts.

    Nur Subjekte (Menschen, vielleicht auch Tiere) können daher Frei sein. Freie Software bedeutet daher, dass es sich um eine Software handelt, die jedem Menschen gewisse freiheiten garantiert. Bei einer Lizenz ohne Copyleft (zB die BSD-Lizenz) werden diese Freiheiten fast unbedingt gegeben. Bei Lizenzen mit Copyleft (zB die GPL) ist die Freiheit bedingt, daher, die Software gibt den Menschen nur dann die Freiheiten, wenn diese sich wiederum selbst auf eine bestimmte Art und Weise verhalten.

    Freie Software ist für mich also die mehr oder weniger bedingte Freiheit von Menschen an einer Software.

    Nach dieser Definition ist klar, dass die Freiheit des Menschen größer ist, je weniger Bedingungen sie unterliegt. Die BSD-Lizenz stellt weniger bedingungen als die GPL und ist von daher freier.

    Auch ich möchte hier kein Statement für oder gegen die GPL geben. Denn ich bezweifle, dass eine unbedingte Freiheit besser ist. Unser (deutsches) Grundgesetz formuliert es in Art. 2 abs. 1 sehr schön. Dort steht sinngemäß drinnen, dass jeder tun und lassen kann was er will, so weit er damit nicht in die Rechte von anderen eingreift. Auch diese für unser Rechtssysstem grundlegende (allgemeine Handlungs-) Freieheit ist daher bedingt.

    • Ximion commented on 22. February 2012 Reply

      Danke für deinen (sehr guten!) Kommentar!
      Im Grunde hast du auch Recht, aber eine Sache würde ich doch anmerken:
      Wenn ich freien, offenen Code nehme und daraus etwas proprietäres baue, also effektiv anderen die Freiheiten nehme, den Code zu studieren und ebenfalls zu verändern. Ich selber habe natürlich die Freiheit, das zu tun, schränke aber gleichzeitig aber andere in ihrer individuellen Freiheit ein. Somit stellt die GPL dann eigentlich nur sicher, dass die Rechte, den Code zu studieren allen gewährt werden. Sie verhindert also das “eingreifen in die Rechte einer anderen Person”.
      Die GPL stellt also damit gewissermaßen eine faire Behandlung aller Beteligten her. In einer idealen Welt wäre der Unterschied zwischen GPL und BSD völlig egal, aber leider leben wir da nicht 😉

    • ostcar commented on 22. February 2012 Reply

      Ich habe mir nach dem schreiben meines Kommentars nochmal Gedanken gemacht. Und kann nun sagen, dass auch du Grundsätzlich recht hast.

      Hätte jeder die unbedingte Freiheit, alles zu tun oder zu lassen was er möchte, würde faktisch das Recht des Stärkeren gelten, da dieser seine Freiheiten besser durchsetzten kann. Der (wirtschaftlich) Schwache hätte am Ende des Tages nur noch „die Freiheit unter der Brücke zu schlafen.“ Damit ist gemeint, dass er eigentlich keine Freiheit mehr hat, da ihm jede Handlungsoption fehlt. Eine unbedingte Freiheit kann daher zu der Einschränkung von Freiheiten anderer führen.

      Bei freier Software ist es jedoch noch einmal ein bisschen anders. Eine Software, die unter die BSD-Lizenz gestellt wird kann von allen frei studiert, bearbeitet und weitergegeben werden. Hieran kann niemand etwas ändern. Auch wenn jemand die Software nimmt, verändert und den Quellcode der Änderung nicht freigibt, bleibt die ursprüngliche Software frei. Die Allgemeinheit hat daher weder etwas gewonnen, noch etwas verloren. Somit gibt es einen Gewinner (der die Software angepasst hat) jedoch keine Verlierer.

      Auch wenn die Starken (Google, Apple, Cedega) sich einfach alles nehmen können ohne etwas zurückzugeben, hat die Community eigentlich nichts verloren. Apple hat sich am Code von FreeBSD (BSD-Lizenz) bedient. Cegeda hat Wine (damals noch X11-Licence) geforkt. Und Google hat Android 3.x (Apache Licence) nie freigegeben. Hierdurch ist den Ursprungsprojekten kein Schaden entstanden, (wenn man mal von einer gestärkten Konkurrenz absieht). Sie haben weder gewonnen, noch verloren.

      Wenn man also ganz allgemein sagen kann, dass eine unbedingte Freiheit zu mehr Unfreiheit bei anderen führt, so gilt das bei einer Non-Copyleft-Lizenz genau genommen nicht.

    • Ximion commented on 23. February 2012 Reply

      > Die Allgemeinheit hat daher weder etwas gewonnen, noch etwas verloren. Somit gibt es einen Gewinner (der die Software angepasst hat) jedoch keine Verlierer.

      Prinzipiell ja, aber die eine Seite, die der freuen Entwickler, hat unbezahlt Arbeit verrichtet für die andere Seite, eine Firma X, die damit nun Profit macht, den der ursprüngliche Entwickler nicht bekommt. Genau genommen bekommt er gar nichts, weder Geld noch wird das Projekt gestärkt. Die Firma sieht auch eigentlich keinen Sinn, am ursprünglichen Projekt weiter mitzuarbeiten, denn so würden sie ja sogar die Konkurrenz mit ihrem Geld unterstützen, die sich einfach den code unter der non-Copyleft-Lizenz schnappen könnten und damit ihr eigenes Ding drehen würden.
      Damit würde das Projekt an sich verlieren, da es keine Firmenunterstützung bekommt und jeder seinen Fork entwickelt. Patches würden nur vom offen liegenden Code in den geschlossenen wandern. Auch der freie Entwickler hätte bestimmt nicht mehr lange Lust, das Projekt weiter zu führen, da es keinen Sinn für ihn macht. Beim OpenSSL-Projekt ist z.B. so eine Tendenz zu beobachten.
      Die GPL hingegen zwingt alle die nehmen, auch etwas zurück zu geben. So bleibt auch unter den Firmen eine Art gleichgewicht erhalten: Firma A stellt code bereit, den Firma B benutzen kann, auch wenn A und B konkurrieren. Ändert B allerdings den Code, müssen die änderungen auch für A zu verfügung gestellt werden. Insgesamt gewinnt also das Projekt, und keiner bekommt übermäßige vorteile. (Durch CLAs wird das in einigen Fällen wiederum ausgehebelt, das ist aber eine andere Geschichte :P)

      Prinzipiell hätte die OSS Community natürlich formal nichts verloren, aber der psychiologische Effekt wäre fatal. (Und ich zweifle auch dran, dass OpenSource so wie heute existieren würde, wenn es keine GPL gäbe)
      Es gäbe weniger OSS code, was widerum die Freiheit, mit der Software zu machen was man will einschränken würde.

      Der Busybox-Streit scheint inzwischen übrigens beigelegt zu sein: http://www.pro-linux.de/news/1/18077/gpl-freier-busybox-ersatz-wohl-unnoetig.html – Alles ein “großes Missverständnis”! 😀 Ich muss mir noch überlegen, wie ich das interpretieren soll 😛

  • Mike commented on 20. February 2012 Reply

    Ein interessanter Gedankengang. Danke dafür. Allgemeingültige Rechte sind zwangsläufig mit Pflichten verbunden. Die (gleichen) Rechte der anderen düfen ja nicht eingeschränkt werden.

    Mit “Freiheit des Codes” ist für mich auch die Sicherstellung der “vier Freiheiten” des Nutzers gemeint. Mittels Copyleft wird verhindert, dass, mit zukünftigen Versionen des Codes, dem Nutzer diese Freiheiten entzogen werden können. Somit kann man aus meiner Sicht von “Freiheit des Codes” sprechen, auch wenn dieser natürlich kein Subjekt ist. Vor allem im Hinblick auf den Terminus “Freie Software”. Ob das allerdings (bezogen auf die Aussage) sprachlich wirklich korrekt ausgedrückt ist und demnach unmisserverständlich ist, vermag ich jedoch nicht zu beurteilen.

    Nutzer und Software haben für mich (im Sinne der GPL) also beide ihre Rechte, somit aber auch die Pflicht die Rechte des anderen zu respektieren und nicht einzuschränken!?

  • dion commented on 7. December 2012 Reply

    “der anarchismus der hacker” erzäahkt von der geschichte von unix, linux, ms etc und die sichtweise der hacker damals. gpl und bsd ….

    http://www.datenteiler.de/translations/anarchy-and-source-code/

Leave a Reply

Your email address will not be published. Required fields are marked *