Closed Source
aus Wikipedia, der freien Enzyklopädie
Der Begriff Closed Source bezeichnet ein Paradigma für die Geschlossenheit von Quelltexten einer Software.
Im Gegensatz zu Open Source wird bei Closed-Source-Software der Quellcode nicht preisgegeben. Das heißt, der Programmcode wird vor der Herausgabe kompiliert und so zu einem lauffähigen Programm übersetzt. Damit soll ein Einblick Dritter in den Quellcode möglichst erschwert werden, damit Algorithmen und Datenstrukturen geheim bleiben.
Viele Softwarefirmen schreiben ein Computerprogramm und geben es dann als Closed Source heraus. Diese meist kommerzielle Software wird anschließend vom Hersteller gepflegt, wobei Verbesserungen und Veränderungen als binärer Patch bereitgestellt werden. Der Versuch Dritter, die Binärdateien zu interpretieren und durch Veränderungen nützliche Ergebnisse zu erzielen, wird als Reverse Engineering bezeichnet. Dies kann aus verschiedenen Gründen geschehen; häufig werden auf diesem Wege Kopierschutzverfahren ausgehebelt, Programmfehler behoben, einzelne Programmtexte geändert oder Beschränkungen entfernt. International werden diese Maßnahmen gesetzlich meist je nach Intention unterschiedlich behandelt, wobei eine Verbreitung derart veränderter Versionen schon aus urheberrechtlichen Gründen in der Regel unzulässig ist.
Dem Reverse Engineering stellen sich aber auch technische Gründe entgegen:
- Handelt es sich um eine übliche kompilierte Applikation, so liegt dem Nutzer ein maschinenlesbarer Binärcode vor, der lediglich einfache Rechenoperationen enthält und noch dazu systematisch ohne Rücksicht auf die Lesbarkeit hin geschwindigkeitsoptimiert wurde.
- Kommentare im Quelltext gelten als unverzichtbar für die langfristige Wartung einer Applikation. Bei kompilierten Anwendungen fehlen diese in fast allen Fällen vollständig.
- Auch Variablennamen wie t_size oder month_day werden meist in platzsparende Symbole übersetzt, die keinen semantischen Wert haben.
- Darüber hinaus werden insbesondere bei interpretierten Sprachen, aber auch bei kompilierten Sprachen Werkzeuge eingesetzt, um den Code zusätzlich zu verschleiern. Bei interpretierten Applikationen, die im Quelltext vorliegen müssen, werden vor der Auslieferung Kommentare entfernt, Variablen umbenannt usw.; bei kompilierten Applikationen werden unsinnige Anweisungen eingefügt, Anweisungen vermischt etc.
Unter Betriebssystemen wie Windows sind fast ausschließlich Closed-Source-Anwendungen erhältlich, wohingegen bei Linux sowohl beim Kernel des Systems als bei den meisten dazugehörigen Standardapplikationen die Möglichkeit besteht, den Quellcode beliebig zu verändern und selbst zu kompilieren. Auch das Recht der Weitergabe bei Linux ist unbeschränkt, man spricht deshalb von freier Software oder Open-Source-Software.
Es ranken sich zahlreiche Diskussionen um die Vor- und Nachteile quelloffener und -geschlossener Software, wobei wirtschaftliche, gesellschaftliche und sicherheitstechnische Aspekte im Vordergrund stehen.
Allerdings ist es einleuchtend, dass bei Closed Source nur der Applikationsentwickler die praktikable Möglichkeit hat, das Programm zu verändern, was den Kunden in eine auch als vendor lock-in bekannte Abhängigkeit zwingt.
Zuletzt sollte erwähnt werden, dass es eine Anzahl von Softwareentwickler gibt, die ausschließlich in Assembler oder in reiner Maschinensprache auch umfangreiche Softwarepakete herstellen. Für diese Experten (die auch im Reverse Engineering eingesetzt werden könnten) gibt es keine Closed Sourcen. Sie können mit den entsprechenden Hilfsmitteln Binärcode sehr leicht durchschauen, verstehen, verändern oder bestimmte Programmsequenzen isolieren und diese in andere Programme implementieren. Weiterhin sollte noch besonders hervorgehoben werden, dass diese Experten oft besonders schwierige Aufgaben lösen können. Manche Probleme lassen sich sogar nur mit einem Assembler- oder Maschinencode lösen. Beispiel: Software zur Datenerfassung und Online-Darstellung in Echtzeit mit hoher Zuverlässigkeit.
Siehe auch: proprietäre Software