Warum ist quelloffene Software nicht böse


Dieser Artikel befindet sich noch in der Schreibphase und ist noch nicht abgeschlossen!


Im Forum kommt es immer wieder zu der Diskussion darüber, dass Python doch einen Compiler kriegen sollte, um in der "richtigen Welt" einsetzbar zu sein. Die häufigste Argumentation für einen Compiler ist nicht der Geschwindigkeitsvorteil, der sich aus optimiertem Maschinencode ergibt, sondern der Schutz vor Lizenz-Verletzungen der Kunden. Im folgenden möchte ich aus meiner Sicht dazu Stellung nehmen.

Bevor ich anfange: ich bin Medizin-Student und hoffentlich bald Arzt, programmiere aber auch um mir mein Studium zu finanzieren, bin also mehr oder weniger von dem folgenden direkt betroffen. Es kann und sollte mir also keiner vorwerfen, dass ich das ganze aus einer Perspektive sehe, die viel zu akademisch ist; ich sehe als Programmierer die Konsequenzen, die sich aus dem folgenden ergeben, ganz klar und deutlich, auch für mein Geschäft.

Quelloffene Software?

Bevor wir in Missverständnisse geraten, erst einmal eine Begriffsklärung. Quelloffene Software bedeutet nicht das gleiche wie Freie Software. Quelloffene Software ist prinzipiell erst einmal Software (das Produkt im folgenden), die ich (der Anbieter im folgenden) entwickle, und einem Anwender (der Kunde im folgenden) zur Verfügung stelle. Ich tue dies nicht in einem Maschinenformat (wie zum Beispiel als Kompilat für eine gewisse Plattform), sondern ich stelle dem Kunden die Quellen zur Verfügung. Ich gebe ihm nicht (notwendigerweise) das Recht, meine Produkt beliebig weiter verteilen zu dürfen, oder aber dieses zu verändern.

Freie Software demgegenüber (im englischen häufig als free as in libre bezeichnet) bedeutet, dass sobald ich als Anbieter einem Kunden das Produkt zur Verfügung gestellt habe, der Kunde meine Software frei in seinem Sinne einsetzen darf. Hierzu gibt es mehrere Lizenzen, wie zum Beispiel die GNU Public License (GPL), die eben verlangt, dass wenn jemand Änderungen an meinem Produkt vornimmt, diese Änderungen unter der selben Lizenz wie das Produkt zu vertreiben1 sind und das Produkt stets in Quellform verfügbar sein muß wenn es vertrieben wird, oder die BSD-artigen-Lizenzen, die verlangen, dass das Copyright auf meinem Code gewahrt bleibt und auch in jeglicher vertriebener Form enthalten ist, aber sonst das Produkt beliebig eingesetzt werden darf, also auch meine Quellen nicht weiter vertrieben werden müssen.

Es ist weiterhin ein Irrglauben, dass Freie Software das selbe bedeutet wie kostenlose Software. Freie Software bedeutet, dass ich als Kunde mit dem Empfang des Codes eines Produkts das Recht zum Weitervertreiben und Verändern dieser Software bekomme. Dass der Empfang des Codes als Kunde mit einem geldlichen Betrag verknüpft sein kann ist genauso selbstverständlich wie dass ich als Anbieter den Code den ich unter eine solche Lizenz gestellt habe nicht kostenlos vertreiben muß. So erlaubt zum Beispiel die GPL ganz ausdrücklich die Erhebung einer "Kopiergebühr" zur Bereitstellung der Kopie des Codes2, und die BSD-artigen Lizenzen dass jemand meinen Code verwenden darf um daraus kommerzielle Software zu erstellen, mich als Anbieter natürlich eingeschlossen.

Kostenlose Software wiederum ist alles andere als identisch mit freier Software, denn häufig habe ich bei einem Produkt als kostenloser Software keine der Rechte die mir freie Software einräumt.

Eine kleine Randbemerkung zum ersten: Microsoft hat erste Schritte in Richtung quelloffener Software getätigt, als sie das Shared-Source Programm ins Leben riefen. Nur ist dies noch nicht wirklich quelloffene Software, denn als Endanwender habe ich bisher keine Chance in dieses Programm aufgenommen zu werden. Sobald bei jeder Auslieferung der Software von Microsoft die Quellen mit dabei sind kann man auch bei ihnen von quelloffener Software reden, unabhängig von den restriktiven EULAs (End-User-License-Agreements) die damit verknüpft sein könnten/würden.

In welchem Rahmen bewegen wir uns?

Ich gehe im folgenden davon aus dass der Anbieter (ich, als Programmierer) Programme schreibt als Speziallösungen. Dies ist, bis auf einige wenige Ausnahmefälle, wenn wir uns als private Programmierer verstehen auch der Fall, denn wir schreiben keine Software die für den Massenkonsum angelegt ist (da es dafür bereits vorgefertigte Softwarepakete gibt mit denen wir nicht konkurrieren können), sondern eher für einzelne integrative oder aber spezielle Aufgabengebiete, in denen es auf die Business-Logik eines Unternehmens/einer Gruppe ankommt die eben in dieser Form nicht off the shelf verfügbar ist.

Wir können also davon ausgehen dass unser Kundenstamm relativ klein ist, das fertige Produkt einem sehr speziellen Zweck dient, und dass das Produkt nicht auf einem Heimanwender-PC Verwendung finden würde aufgrund der Aufgabenstellung. Des weiteren können wir davon ausgehen dass wir eingestellt wurden weil im Unternehmen für das wir das Produkt entwickeln/dem wir als Anbieter unser Produkt verkaufen nicht das notwendige Know-How vorhanden ist um es In-House zu entwickeln, oder aber dass es für das Unternehmen schlicht und ergreifend billiger ist ein fertiges, spezifisches Produkt zu kaufen als es selbst zu schreiben.

Wir haben es primär also erst einmal mit Firmenkunden zu tun, für die rechtlich eine vollständig andere Situation herrscht als für den Privatanwender, im besonderen auch was die Einhaltung/Erfüllung von Verträgen angeht.

Was ist ein Vertrag/eine Lizenz?

Ein Vertrag oder aber eine Lizenz regelt die Rechte und Pflichten die die jeweilige Partei im Bezug auf das Produkt hat. So kann zum Beispiel in einer Lizenz geregelt sein, dass ich als Kunde keine Rechte habe um das Produkt "rückwärts zu entwickeln" (es also zu dekompilieren), andererseits aber auch dass ich keine Rechte habe das Produkt weiter zu vertreiben. Genauso kann die Lizenz regeln dass ich als Anbieter haftbar gemacht werden kann für Ausfälle des Systems. Eine Lizenz ist rechtlich bindend34, wenn sie nicht eingehalten wird kann die jeweilige Partei eine Konventionalstrafe geltend machen die in der Lizenz oder dem Vertrag festgelegt ist und Schadensersatz fordern für den entstandenen Schaden durch die Nichteinhaltung.

Für weitere Informationen zu der Geschichte und dem Hintergrund von Verträgen siehe auch Wikipedia.

Wie sieht ein üblicher Vertrag zwischen Anbieter und Kunde in der Softwarebranche aus?

Ein üblicher Vertrag zwischen dem...

Links

Fußnoten

  1. Wichtig zu bemerken ist die Betonung auf vertreiben. Wenn ich ein GPL-Produkt nur lokal und für mich selbst einsetze kann ich mit dem Programm machen was ich will, niemand zwingt mich dazu (oder kann mich dazu zwingen) meine Veränderungen zu vertreiben und ich kann auch anderen Leuten das Recht entziehen dieses zu tun, wenn das Produkt eben nur "In-House" eingesetzt wird und nicht vertrieben wird. (1)

  2. Jemand der meinen Code bekommen hat darf ihn aber nach der GPL selbst frei weitervertreiben, kann also eine Kopiergebühr erheben, muß es aber nicht. (2)

  3. Ein Vertrag ist nur in soweit rechtlich bindend als dass er gegen keine herrschenden Gesetze verstößt. So ist zum Beispiel eine übertrieben Konventionalstrafe sittenwiedrig, und würde damit diese Klausel ungültig machen. (3)

  4. Normalerweise steht in jeder Lizenzvereinbarung oder jedem Vertrag eine Klausel dass durch die Ungültigkeit eines Teils des Vertrages der Rest des Vertrages weiterhin gültig bleibt; wenn dies nicht der Fall ist ist bei Ungültigkeit eines Teils des Vertrages der ganze Vertrag ungültig. Dies ist die sogenannte "salvatorische Klausel." (4)

Warum ist quelloffene Software nicht böse (last edited 2009-06-17 16:14:14 by localhost)