Freie Software bedeutet komplette Verständlichkeit

By Wolfgang Keller
Originally written 2019-10-31
Last modified 2019-10-31

Die Free Software Foundation (FSF) definiert, dass ein Programm Freie Software ist, wenn Nutzer eines Programms über vier von ihnen als wesentlich gesehene Freiheiten verfügen (Quelle: What is free software? - GNU Project - Free Software Foundation [visited 2019-10-25T22:31:43Z]):

bzw. in der offiziellen deutschen Übersetzung (Quelle: Freie Software. Was ist das? - GNU-Projekt - Free Software Foundation [visited 2019-10-25T22:21:46Z]):

Wie man in diesen vier Punkten/Freiheiten sieht, argumentiert die FSF, dass Zugriff auf den Quellcode eine Vorbedingung für Freiheit 1 und 3 sei. Als Begründung hierfür findet man im Abschnitt „The freedom to study the source code and make changes“ des bereits oben verlinkten Textes What is free software? - GNU Project - Free Software Foundation [visited 2019-10-25T22:31:43Z]:

„In order for freedoms 1 and 3 (the freedom to make changes and the freedom to publish the changed versions) to be meaningful, you need to have access to the source code of the program. Therefore, accessibility of source code is a necessary condition for free software. Obfuscated ‘source code’ is not real source code and does not count as source code.“

bzw. in der offiziellen Übersetzung Freie Software. Was ist das? - GNU-Projekt - Free Software Foundation [visited 2019-10-25T22:21:46Z] im Abschnitt „Die Freiheit, den Quellcode zu untersuchen und Änderungen vorzunehmen“:

„Damit Freiheit 1 und 3 (die Freiheiten, Änderungen vorzunehmen und geänderte Versionen zu veröffentlichen) sinnvoll sind, müssen Nutzer Zugang zum Quellcode des Programms haben. Daher ist die Zugänglichkeit des Quellcodes eine notwendige Bedingung für Freie Software. Verschleierter ‚Quellcode‘ ist nicht wirklich Quellcode und zählt nicht als solcher.“.

Dies bedeutet aber insbesondere, dass die Verfügbarkeit des Quellcodes (lediglich) ein Mittel zum Zweck ist, um sicherzustellen, dass Freiheiten 1 und 3 vom Nutzer tatsächlich wahrgenommen können. Mit anderen Worten: Der Zugang zum Quellcode stellt in der Freie-Software-Definition der FSF keinen Selbstzweck dar.

Eine mindestens ebenso wichtige Bedingung, damit Freiheiten 1 und 3 wahrgenommen werden können, ist aber, dass die Architektur der Software derart einfach ist (beispielsweise im Sinne von Quellcode-Umfang oder inhärenter Komplexität), dass man als Mensch überhaupt in der Lage ist, sie wirklich komplett zu verstehen (denn sonst kann man diese Freiheiten trivialerweise ebenfalls nicht wahrnehmen). Diese Bedingung wird durch äußerst viele Projekte, die zur Freien Software gezählt werden (inklusive sogar des von der FSF selbst geförderten GNU-Projekts, welches zusammen mit dem Linux-Kernel das freie Betriebssystem GNU/Linux bildet) verletzt!

Schlimmer noch: Innerhalb der Freie-Software-Bewegung existiert nach meiner Beobachtung nicht einmal ein Bewusstsein dafür, dass ein derart umfangreiches Quellcode-Volumen und eine solch inhärente Softwarekomplexität die Wahrnehmung der Freiheiten 1 und 3 quasi unmöglich machen.

Man kann nun die berechtigte Frage stellen, wie viel Komplexität in der Verständlichkeit und Einfachheit bei „noch akzeptabel“ ist, dass ein Stück Software die Definition der FSF für freie Software bzw. die vier Freiheiten erfüllt. Ich gestehe ein, dass es hierauf wohl keine „objektiv wahre“ Antwort gibt. Daher kann ich nur mitteilen, was meine persönliche Sicht zu diesem Thema ist: Ich denke, dass es möglich sein sollte (und dies sollten sich Fans freier Software zum Ziel setzen), dass ein intelligenter Mensch, der sich ein paar Jahre lang in Vollzeit damit beschäftigt, in der Lage sein sollte/muss, wirklich jede einzelne Codezeile bzw. jedes einzelne Byte, die/das auf einem Computer ausgeführt wird, komplett zu verstehen.

Um dem Leser eine zusammenfassende Take-Home-Message des Artikels zu geben:

Freie Software bedeutet mehr als nur Verfügbarkeit des Quellcodes. Von mindestens ebenso großer Wichtigkeit zur Sicherstellung von Freiheiten 1 und 3 ist, dass es für einen intelligenten Menschen möglich sein muss, den Quellcode der (freien) Software in seiner Gesamtheit zu verstehen (Freiheit 1), sodass das Verständnis hoch genug ist, dass es für ihn möglich ist, auch tatsächlich Verbesserungen vorzunehmen (Freiheit 3).