Читать книгу Praxishandbuch Open Source - Christian Galetzka - Страница 36

Оглавление

1. Welche Arten von Code gibt es?

79

 – FOSS Lizenzen enthalten teilweise unterschiedliche Anforderungen, je nachdem in welcher Form die Software an den Nutzer weitergegeben wird.

 – Zumindest muss zwischen menschenlesbarem Code (Source Code) und maschinenlesbarem Code (Object Code, Binaries, Executables) unterschieden werden.

 – Durch den Kompiliervorgang wird der Source Code zu Object Code/Binärcode/Executables umgewandelt.

80

Verschiedene FOSS Lizenzen machen unterschiedliche Vorgabe zur Nutzung der Software bzw. knüpfen andere Verpflichtungen an den Einsatz der Software, je nachdem, in welcher Form die Software an den Nutzer weitergegeben wird. Daher ist es wichtig, die unterschiedlichen Formen zu kennen, in denen der Code einer Software vorliegen kann und wie diese unterschiedlichen Formen von Code jeweils erzeugt werden können.

a) Source Code bzw. Quellcode

81

Source Code – häufig auch Quellcode oder Quelltext genannt – ist der für den Menschen lesbare, in einer der diversen Programmiersprachen verfasste Text eines Computerprogramms. Er beschreibt sowohl die jeweiligen Funktionen der Software als auch deren Aussehen bzw. die Darstellung des Programms bei der Ausführung. Bevor ein im Source Code vorliegendes Programm von einem Computer ausgeführt werden kann, muss der Source Code zunächst in eine für den Computer verständliche Form übersetzt werden. Dies geschieht z.B. mittels eines Compilers oder Interpreters, der entweder vorab den kompletten Source Code in Maschinensprache übersetzt oder dies erst zur Laufzeit des Programms tut.1 Im Source Code liegen neben den reinen Informationen, die für die Ausführung des Programms notwendig sind, in der Regel auch noch andere nützliche Informationen vor, wie beispielsweise Dokumentationen und Hinweise zur Anpassung des Code oder zur Fehlerbehebung. Die für die FOSS Bewertung relevantesten Informationen sind aber die häufig in den Headern der Dateien enthaltenen Angaben zur Lizenzierung der Software. Oft werden hier der jeweilige Text der FOSS Lizenz oder zumindest ein Verweis auf die Lizenz und auf den Ort, wo der Lizenztext zu finden ist, sowie Hinweise zum jeweiligen Rechtsinhaber der Software angegeben.

b) Object Code

82

Die nächste Stufe zwischen dem Source Code und der Maschinensprache ist der sog. Object Code oder auch Objektcode. Der Object Code ist ein Zwischenergebnis, das bei der Übersetzung des menschenlesbaren Code mittels eines Compilers entsteht. Er besteht bereits hauptsächlich aus Maschinencode und enthält neben dem bereits vorübersetzten Code des Programms andere verwendete Programmbibliotheken, die ebenfalls in das Programm eingefügt und mit diesem zum fertigen Programm verlinkt werden sollen. Das Format des Object Code hängt sowohl von der Programmiersprache, dem verwendeten Compiler als auch der Maschine ab, auf der das Programm ablaufen soll.2 Wichtig für die FOSS Beurteilung ist, dass der Object Code in der Regel keine verwertbaren bzw. für den Menschen lesbaren Informationen zur FOSS Lizenzierung mehr enthält. Die meisten FOSS Lizenzen stellen den Object Code daher mit dem Binärcode gleich und stellen in der Regel identische Anforderungen an die Weitergabe im Object oder im Binärcode.

c) Binärcode

83

Die Maschinensprache, oder auch der Binärcode bzw. Maschinencode, stellt die Code Form dar, die ein Computer benötigt, um ein Programm verarbeiten und ausführen zu können. In dieser Form des Code werden Informationen durch Sequenzen zweier unterschiedlicher Symbole dargestellt. Im Falle eines Computerprogramms besteht der Code nur noch aus Einsen und Nullen bzw. der Information wahr/falsch. Die kleinste Informationseinheit wird dabei als Bit bezeichnet und enthält genau diese eine Information: 1 oder 0 bzw. wahr oder falsch. Durch eine logische Verknüpfung solcher Bits lassen sich dann auch komplexe Informationen abbilden.3 Für den Menschen sind diese Bitfolgen kaum noch nachzuvollziehen. Bei reiner Betrachtung von Code in Binärform können dem Code also ohne weitere Zwischenschritte keine Informationen zu FOSS Lizenzierung und Rechtsinhabern mehr entnommen werden – sofern diese Informationen überhaupt noch im jeweiligen Code enthalten sind. Daher stellen einige FOSS Lizenzen besondere Anforderungen an die Mitlieferung von Lizenz- und Copyright Informationen für den Fall, dass die FOSS Komponente im Binärcode weitergegeben wird.

d) Executables

84

Eng mit dem Binärcode hängen die ausführbaren Dateien oder Executables zusammen. Dabei handelt es sich um Dateien, die als Computerprogramm ausgeführt werden können. Sie enthalten also den oben beschriebenen maschinenlesbaren Programmcode, der direkt oder durch eine Laufzeitumgebung – ein sog. runtime environment – ausgeführt werden kann. In einigen Fällen werden auch Dateien, die Bytecode oder Scripting Anweisungen enthalten, als ausführbare Dateien bezeichnet.4 Für dieses Buch sollen sich die Begriffe ausführbare Datei bzw. Executable einfach auf ausführbare Computerprogramme beziehen, die aufgrund ihrer Maschinenlesbarkeit keine für den menschlichen Betrachter verarbeitbaren Informationen zu FOSS Lizenzierung und Rechtsinhabern enthalten.

85

Backup: Erkennen von Code Formen anhand der Dateiendung

Anhand von Dateiendungen lässt sich bereits auf den ersten Blick erkennen, um welche Art von Code es sich bei einer Datei handelt. Mit dem Blick auf die Dateiendung kann man also direkt feststellen, ob es sich um Source Code oder um ausführbare Dateien handelt. Damit sehen Sie auch auf den ersten Blick, ob sich aus der jeweiligen Datei ggf. noch weitere Informationen für die FOSS Bewertung ziehen lassen (wie Angaben zu Copyrights und Lizenzierung in den Datei-Headern von Source Code Dateien) oder ob für die vorliegende Datei ggf. andere und/oder strengere Lizenzbedingungen gelten (für den Fall, dass die Lizenz unterschiedliche Vorgaben für die Weitergabe als ausführbare Datei macht).

Dateiendungen, die darauf hinweisen, dass es sich um Source Code handelt, sind beispielsweise .c, .h, .src oder .java. Hierbei handelt es sich jeweils um Textdateien, die Source Code oder Deklarationen zum Source Code enthalten. Auch bei Dateien, die auf .txt enden, handelt es sich um Textdateien. Solche im Code enthaltenen .txt Dateien enthalten häufig Informationen zur Lizenzierung, den Rechtsinhabern oder weitere hilfreiche Informationen zur Software (z.B. als LICENSE.txt, COPYING.txt oder README.txt).

Bei Dateiendungen wie .html oder .js handelt es sich zwar um Dateien, die von der Maschine direkt ausgeführt werden können, bei denen aber dennoch der Source Code direkt vorliegt und – z.B. mittels eines Texteditors – betrachtet werden kann. Da hier alle Informationen für den Betrachter lesbar vorhanden sind, können diese wie Source Code behandelt werden.

Hinsichtlich der ausführbaren Dateien und somit des Binärcodes dürfte die Dateiendung .exe wohl die bekannteste sein. Allerdings gibt es auch noch zahlreiche andere Dateiendungen, die auf Binärcode hindeuten, wie beispielsweise .dll oder .so, die auf Programmbibliotheken hindeuten, aber z.B. auch .msi, .bin oder .dat.

Bei der Endung .jar ist die Einordnung nicht immer auf den ersten Blick möglich. Denn hierbei kann es sich entweder um eine Java-Anwendungsdatei handeln, die durch Anklicken ausgeführt werden kann, oder aber um ein Java Archiv, das mehrere Java Dateien und auch andere Dateien enthalten kann. Diese Archive können dann mittels eines Packprogramm (wie WinZip, 7-Zip, o.ä.) geöffnet werden, um zu ermitteln, welche Art von Dateien sich darin befinden.

1 https://de.wikipedia.org/wiki/Quelltext. 2 https://en.wikipedia.org/wiki/Object_code. 3 https://de.wikipedia.org/wiki/Binärcode. 4 https://de.wikipedia.org/wiki/Ausführbare_Datei.

Praxishandbuch Open Source

Подняться наверх