Geschichte der Softwareprogrammierung: „Freie Software für Freiheit und Gerechtigkeit“

Es ist eine oft zitierte Tatsache, dass wissenschaftliche Entwicklungen weit häufiger von den Weltanschauungen und persönlichen Vorlieben der Wissenschaftler abhängen, als dies der Anspruch der Exaktheit, den Akademiker oft für sich beanspruchen, zulassen sollte. Ein Beispiel ist Richard M. Stallmans GNU-Projekt, das mit der Absicht gegründet wurde das Betriebssystem UNIX zu ersetzen. Als Stallman dieses Projekt 1983 ins Leben rief, tat er dies nicht um bessere Software zu schreiben als UNIX sie bot, sondern um seinen Vorstellungen von Freiheit und Gerechtigkeit Ausdruck zu verleihen.*

Um ein Verständnis der Verhältnisse zu bekommen, die Stallman zu seinen Vorstellungen und Idealen brachten, gebe ich in diesem Beitrag einen Überblick über wichtige Ereignisse der Geschichte der Softwareprogrammierung und erläutere hierbei die grundlegenden Ideen und Konzepte von freier Software.[1] Die Geschichte kann in zwei Teilen dargestellt werden. Der erste Teil schließt die Entwicklung bis zur Entstehung der ersten Betriebssysteme und die 1950er und 60er Jahre ein. Im zweiten Teil rücken die Zustände, die zur Entwicklung des GNU-Systems führten, also etwa die 1970er und die frühen 1980er Jahre, in den Mittelpunkt. Er beschäftigt sich hauptsächlich mit der Entwicklung des UNIX-Systems und dessen BSD-Variante, die er bis zu ihrer endgültigen Lösung von der Universität im Jahr 1995 verfolgt.

Daneben werden in dem Beitrag erste Schritte in Richtung der so genannten „intellectual property“ (Geistiges Eigentum[2] ) dargestellt. Gemeint sind dabei erste Versuche, Entwicklern von Software Rechte an ihren Produkten zu sichern, wie dies für Texte, Bilder oder Musikstücke seit längerem möglich war. Dazu richte ich den Blick insbesondere auf die entsprechende Diskussion in den Communications of the ACM[3] .

Softwaregeschichte der 1950er und 60er Jahre

Eine Geschichte der Softwareentwicklung zu schreiben ist allein deshalb ein Problem, weil dabei die Entscheidung getroffen werden muss, ab wann von Software gesprochen werden kann. Paul E. Ceruzzi datiert den Begriff auf die Zeit um das Jahr 1959[4] , allerdings ohne dafür eine bestimmte Quelle anzugeben.

In den 1950er Jahren begannen Computerhersteller mit ihren Produkten auch Software auszuliefern, die zu diesem Zeitpunkt noch Zugabe zum eigentlichen Produkt – der „Hardware“[5] – war. In den 1980er und 90er Jahren dann – mit der weiteren Verbreitung der Personal Computer (PC) – wurde Software dann zu einer eigenständigen Produktklasse, die unabhängig vom Kauf des eigentlichen Rechners vertrieben wurde.[6]

Ceruzzi sieht den Beginn der Softwareprogrammierung im Jahr 1944.[7] In diesem Jahr wurde am Computation Lab der Harvard Universität der Mark I[8] vorgestellt, ein elektro-mechanischer Rechner, der mathematische Anweisungen von Lochkarten lesen und verarbeiten konnte. Howard Hathaway Aiken, der die Maschine entwickelt hatte, wurde Grace Murray Hopper an die Seite gestellt, um die Rechenanweisungen auf die Lochkarten zu bringen und so den Mark I zu programmieren. Während Aiken also für die Maschine zuständig war, oblag es der Mathematikerin Hopper[9] die Recheninstruktionen zu erstellen.[10] Mit dieser Einteilung waren zum ersten Mal die Bereiche der „Hardware“ und der „Software“ erkennbar in zwei Produktionsbereiche getrennt.

Während die ersten Aufgaben, mit denen sich Hopper beschäftigte, noch Umsetzungen vergleichsweise einfacher Rechnungen waren, stellte sie bald fest, dass für viele größere Berechnungen bestimmte Nebenrechnungen immer wieder verwendet wurden. Es schien also sinnvoll, diese gesondert zur Verfügung zu stellen, um so überall dort, wo es nötig war, auf sie zugreifen zu können. Auf diese Art und Weise wären die Nebenrechnungen nur einmal zu programmieren bzw. in die Karten zu stanzen gewesen, was viel Zeit erspart hätte. Der Mark I hatte aber noch keine Möglichkeit die, später als Subroutinen bezeichneten, Nebenrechnungen extra zu speichern.[11]

Der Mark III, ein Nachfolger des Mark I, hatte dann die Fähigkeit elektro-magnetische Speichermedien einzulesen, so dass aus dieser Quelle auch Subroutinen zur Verfügung gestellt werden konnten. Für den Mark III hatte Aiken auch ein Zusatzgerät entwickelt, mit dem es möglich war, Anweisungen in der normalen mathematischen Form zu notieren. Diese „Tastatur“ wandelte die mathematische Notation in eine für den Computer verarbeitbare Form um. So standen die Anweisungen in zwei Formen zur Verfügung: In der mathematischen Notierung – die von der den Rechner programmierenden Person gelesen werden konnte – und in der binären Form, die vom Mark III verarbeitet werden konnte.

Mit der Möglichkeit elektro-magnetische Speichermedien zu lesen ergab sich also ein Weg Subroutinen immer wieder zu verwenden. Hopper arbeitete nun an einem Programm, das in der Lage war, Subroutinen von einem Band einzulesen und zusammenzustellen. Dieses Programm nannte sie „Compiler“.[12] In den Jahren 1952-53 entwickelte Hopper mehrere Versionen dieses Compilerprogrammes für den von John Mauchly gebauten UNIVAC-Rechner. Die dritte Version dieser Programme, die Hopper A-2 – die erste Version hieß A-0 – nannte, wurde mit den UNIVAC-Rechnern an Kunden ausgeliefert.[13] Wie bereits erwähnt, gehörten Computerprogramme lange zum Lieferumfang der Rechner und mussten nicht wie heute extra erstanden werden.[14]

Die den Compilern zu Grunde liegende Idee war es, ein Programm zu erstellen, das wie eine Fabrik im Ford’schen Sinne funktionierte. Wie ein Auto am Fließband (englisch: assembly line) sollte ein Compiler „automatisch“ ein Programm aus vorgegebenen Programmteilen zusammenstellen (to assemble). Aus Weiterentwicklungen der Compiler entstanden später die ersten Computersprachen, die unter der Bezeichnung „Assembler“ bekannt wurden.

Assembler sind recht einfache Sprachen, bei denen jede Anweisung direkt in die ihnen entsprechende Binärzahl umgewandelt wird. Zusätzlich können so genannte Macros angewandt werden, wobei ein Macro jeweils mehrere Anweisungen zusammenfasst. Zu den grundlegenden Aufgaben von in Assembler geschriebenen Programmen gehört es zum Beispiel, jedem laufenden Prozess jederzeit genügend Speicherplatz zur Verfügung zu stellen.

Firmen, die Computer herstellten, lieferten zwar mit ihren Maschinen passende Software aus, oft waren es aber die Benutzer, die für ihre Rechner die Programme schrieben. Für diese Benutzer war es beim Wechsel von einer Rechnergeneration zur nächsten immer ein Problem, die vorhandene Software an die neuen Gegebenheiten anzupassen. Aus diesem Grund trat im Jahr 1955 eine Gruppe von Nutzern des IBM 704 zusammen, deren Ziel es war, Software vom Vorgänger 701 auf den 704 zu übertragen.[15]

SHARE[16] , wie sich diese Gemeinschaft nannte, bestand aus Mitarbeitern verschiedener Firmen aus der Gegend um Los Angeles. Obwohl diese Firmen zum Teil miteinander in Konkurrenz standen, scheint der Vorteil, der sich daraus ergab Erfahrungen und Wissen miteinander zu teilen, wichtiger gewesen zu sein, als die Konkurrenz der Firmen untereinander. Während IBM – wie andere große Computerfirmen – an so genannten höheren Programmiersprachen (high-level languages) arbeitete, entwickelte die stetig wachsende SHARE-Gruppe im Laufe der Zeit eine recht umfassende Bibliothek an Routinen für den IBM 704, was in der Folge dazu führte, dass sich dieser Rechnertyp relativ schnell verbreitete.[17] Bald war SHARE wichtiger für die Unterstützung des 704 als der IBM-eigene Support. Hier zeichnete sich zum ersten Mal jene Art von Kooperation ab, die Richard Stallman etwa 30 Jahre später mit der Gründung des GNU-Projektes am Leben erhalten wollte.

Zu den oben erwähnten höheren Programmiersprachen zählten vor allem FORTRAN[18] und COBOL[19] . FORTRAN wurde 1957 von IBM für den 704 vorgestellt und wird bis heute in immer wieder veränderter Form verwendet. Zu den Vorteilen, die FORTRAN mit sich brachte, gehörte, dass beim Programmieren nicht – wie bei Assembler-Sprachen – die Struktur des Computers im Vordergrund stand, sondern die Lösung des gestellten Problems. Ein Compiler, im modernen Sinne des Wortes[20] , übernahm dann die Übertragung in die maschinen-lesbare Form.

Die andere wichtige Sprache, COBOL, die etwa zur selben Zeit entstand, verdankt ihre weite Verbreitung vor allem den Bestrebungen des U.S. Department of Defense (DoD), das 1959 ein Komitee damit beauftragte, Spezifikationen für eine Programmiersprache zum Einsatz in Wirtschaftsunternehmen zusammenzustellen. Das Department of Defense sollte von da an die weitere Entwicklung im Bereich der Softwareentwicklung durch verschiedene Vorgaben dieser Art beeinflussen und damit Quasi-Standards produzieren, deren Einhaltung für Unternehmen wichtig war, die ihre Produkte an staatliche Stellen vertreiben wollten.

Ein wichtiges Merkmal von COBOL war, dass sein Aufbau dem der englischen Sprache glich. Dadurch sollte der Umgang mit Computern vor allem für Geschäftsleute leichter werden. Zusätzlich sollte erreicht werden, dass Programme, die mit COBOL geschrieben waren, keiner weiteren Dokumentation bedurften. Ein großes Problem beim Schreiben von Computerprogrammen ist es jedoch bis heute, dass sie nicht selbsterklärend sind. Es muss also zu jedem Programm eine Dokumentation erstellt werden, die dessen einzelne Routinen erklärt. Ohne eine solche Dokumentation ist es im Nachhinein schwer oder gar unmöglich, das Programm zu verändern. Aber auch COBOL löst dieses Problem nicht. Es ist zwar grundsätzlich möglich, ein selbsterklärendes Programm in COBOL zu schreiben, dies ist aber nicht zwingend.[21] Wie FORTRAN ist auch COBOL heute noch in Gebrauch. Allerdings würden die meisten Programmierer weder FORTRAN noch COBOL als die Programmiersprache nennen, die sie hauptsächlich benutzen.

Mit der Entwicklung leistungsfähigerer Computer wurden an diese immer komplexere Aufgaben übergeben. Aus diesem Grund konnte ein einfacher Benutzer bald nicht mehr alle Verwaltungsaufgaben lösen, die während des Gebrauchs des Computers nötig wurden. Deshalb entwickelten Firmen und Benutzergruppen immer mehr kleinere und größere Programme, die solche Aufgaben während des Betriebes übernahmen. Diese Programme, die zunehmend auch untereinander Daten austauschten und im Hintergrund ihre Tätigkeiten verrichteten, sind allgemein unter der Bezeichnung „Systemsoftware“ bekannt. Solche „Systeme“ kamen in der Mitte der 1950er Jahre auf und sind heute Basis für den Gebrauch von Computern.[22]

Die Veränderungen in der Namensgebung dieser in Umfang und Einsatzmöglichkeiten stetig wachsenden Softwaregruppen verdeutlicht ihre zunehmende Bedeutung: Erste Systeme wurden noch als „monitor“ bezeichnet, da ihre Aufgabe vornehmlich darin bestand, während des Betriebes den Verlauf der Rechnungen zu kontrollieren. Diese Aufgaben wuchsen und so hießen die Systeme dann „supervising system“, wobei hier der Gedanke des Systems als Gruppe interagierender Programme schon im Namen steckt. Später erst bekamen diese Systeme die Bezeichnung „operating system“ (OS) oder Betriebssystem. Heute ist es kaum denkbar, einen Computer einzusetzen, ohne dass dabei ein Betriebssystem im Hintergrund läuft.

Frühe Diskussionen um die rechtlichen Sicherungsmöglichkeiten von Software

Ein sehr wichtiger Aspekt in der Diskussion um Freie Software ist der rechtliche Schutz, der den freien Status sichert. Dabei werden Konzepte benutzt, die ihren Ursprung in den 1960er Jahren haben. Nachdem in den 1950er und frühen 1960er Jahren entwickelte Software als notwendiger Zusatz zu den eigentlichen Computern gesehen wurde, stellten die Herstellerfirmen im Laufe der Zeit fest, dass sich aus entsprechend weit verbreiteter Software ein Wettbewerbsvorteil ergab, den es zu sichern galt. In den Communications of the ACM wurden in den 1960er Jahren Konzepte diskutiert, mit denen eine solche rechtliche Sicherung erwirkt werden könnte.

Angeregt wurden die Beiträge in den Communications unter anderem von der Diskussion um eine Veränderung des Copyrights in den USA. Dabei ging es um eine Neufassung des Copyright-Gesetzes, die sowohl den Schutz von Software, als auch die Behandlung digitalisierter Texte und Musikaufnahmen klären sollte. Auffällig ist, dass schon zu dieser Zeit viele der heute noch aktuellen Argumente für und wider das so genannte „Geistige Eigentum“[23] gebraucht wurden. Zur Diskussion standen dabei neben dem Copyright-Schutz[24] von Software auch der Schutz durch Patente und (in einem Fall)[25] durch Trade Marks (Warenzeichen).

Das Copyright, das Recht zu bestimmen wer unter welchen Umständen Kopien eines Textes herstellen und vertreiben darf, sollte „den Fortschritt in der Wissenschaft und den nützlichen Künsten [...] fördern“.[26] Hier setzte – und setzt auch heute – die Kritik am Copyright selbst an. Das Copyright-Gesetz sehen viele als hinderlich an, weil in Bildung und Wissenschaft sehr viel Geld aufgewendet werden muss, um Bücher zu kaufen, Tonaufnahmen einzusetzen und öffentliche Aufführungen zu veranstalten.[27] Um diese Behinderung der Ausbildungsmöglichkeiten zu vermeiden, gibt es in der Copyright-Gesetzgebung die Regelung des „fair use“, das bestimmte Formen des Gebrauchs (bei Tonaufnahmen beispielsweise das Herstellen von Kopien für den eigenen Gebrauch) vom Copyright ausnimmt.

Auf den Computer bezogen gibt es zwei Punkte, die seit den 1960er Jahren im Gespräch sind: Zum einen sollte der neue Entwurf des Copyright-Gesetzes nun auch auf Software anwendbar sein und so Entwicklern von Software die Möglichkeit geben, ihre Arbeit bzw. deren Vermarktung zu sichern. Zum anderen ging es schon in dieser Diskussion um die digitale Repräsentation von Texten und Tonaufnahmen. Im letzten Fall war die Befürchtung wohl, dass durch die Umwandlung der Texte und Aufnahmen das auf sie angewandte Recht unterlaufen würde.

Reed C. Lawlor setzte 1964 noch die Kosten, die z.B. der kompletter Ausdruck eines digitalisierten Werkes verursachen würde, als Argument gegen das Übertragen des Copyright auf Kopien im Computer ein: „There is little danger that computers will be used for printing copies of a copyrighted book for sale. It would be too expensive“[28] . Deshalb glaubte er auch nicht, dass es sinnvoll sei, das Copyright auf digitale Repräsentationen von Copyright-geschützten Werken auszuweiten.

Bei der Übertragung von Copyright-Regelungen auf Computerprogramme sah Lawlor die verschiedenen Formen (also Source- und Binärcode) als Problem. Er schlug zur Lösung des Problems vor, neu geschriebene Programme in gedruckter Form zu veröffentlichen.[29] Da das Copyright jeden gedruckten Text schützt, stünde so auch das neu veröffentlichte Programm sofort unter Copyright-Schutz. Bei dieser Überlegung ging Lawlor offensichtlich noch davon aus, dass der Sourcecode auf jeden Fall mitveröffentlicht würde. Obwohl heute die meisten proprietären Programme gar nicht mehr als Texte zu erhalten sind, gilt für sie seit der Gesetzesänderung trotzdem der Copyright-Schutz.[30]

Als nächstes stellte sich die Frage, ob das Copyright auf den Gebrauch eines Programms im Computer ausdehnbar sei. Lawlor sah diesen Schutz, unter dem Copyright, wie es in den 1960er Jahren bestand, nicht gegeben, weil das Programm zum Gebrauch in eine andere Form überführt werden müsse. In dieser Form (als Binärcode) sei es kein Text im eigentlichen Sinne und fiele also auch nicht mehr unter diesen Schutz. Die Besitzer von Copyright-geschützten Programmen könnten also deren Gebrauch nicht verhindern. Deshalb waren für Lawlor Patente die einzige Lösung für dieses Problem.[31]

In derselben Ausgabe der Communications befasste sich Morton C. Jacobs genau dieser Frage der Patentierbarkeit von Computerprogrammen. Das Patentsystem soll für gegenständliche Erfindungen das regeln, was im geistigen Bereich das Copyright regelt. Patente werden vergeben, um Erfindern das Veröffentlichen ihrer Erfindungen schmackhafter zu machen und sie zu neuen Erfindungen zu ermutigen. Wie beim Copyright fand auch beim Patentrecht in den 1960er Jahren eine Diskussion über dessen Übertragbarkeit auf Software statt. Da Computerprogramme keine Maschinen oder Werkzeuge sind, fielen sie für Jacobs eigentlich nicht in den Bereich des Patentrechts. Dazu gab Jacobs als Beispiel mathematische Rechenschritte an, die ebenfalls nicht patentierbar waren. Im Gegensatz zu Werkzeugen oder Maschinen, die auf diese mathematischen Rechnungen zurückgingen.[32]

Ohne im Detail nachvollziehen zu wollen, wie Jacobs zu dem Schluss kam, dass Computerprogramme durchaus patentierbar seien, sollen hier einige seiner Überlegungen angerissen werden: Zum einen kam Jacobs zu der Unterscheidung von Daten (data) und den eigentlichen Programmen. Während die Daten sich für jeden Rechenvorgang ändern können, müssen die Rechenwege eines patentierbaren Programmes immer die gleichen sein. Als Menge von Daten verstanden, könnte ein Programm natürlich nicht patentiert werden. Jacobs brauchte also ein anderes Verständnis von Programmen. Er führte dazu Computer an, die nur für einen bestimmten Zweck gebaut werden. Diese nannte er „special purpose“-Computer. Solche Computer konnten als Maschinen durchaus patentiert werden. Es lag also nahe, Programme, die auf „general purpose“-Computern liefen und dort die gleichen Funktionen erfüllten, ebenfalls patentieren zu können.[33] Jacobs legte also die Programme als auswechselbare Werkzeuge der Maschine Computer aus, um sie in den Bereich des Patentschutzes zu bringen.

Diese beiden Beispiele, Lawlor und Jacobs, zeigen auf, wie schwierig der Begriff Software schon in den 1960er Jahren zu erfassen war. Die unterschiedlichen Zustände, die Software haben kann – Sourcecode, Binärcode, und als Binärcode einmal als Daten und einmal als Rechenanweisungen – führten zu verschiedenen Rechtsmitteln, die eingesetzt wurden um Software zu schützen. Keines dieser Rechtsmittel wurde aber eigens für Software geschaffen und so passt auch keines wirklich. Heute wird Software sowohl unter den Schutz des Copyrights gestellt als auch (zumindest zum Teil) patentiert. Meist gehört zu einem Programm jedoch eine Lizenz, die seinen Gebrauch regelt und die Besitzrechte garantiert. Zusätzlich werden viele Programme als Firmengeheimnisse (trade secrets) behandelt. Dies bedeutet vor allem, dass Kunden beim Kauf eines Software-Paketes nur die maschinen-lesbaren Dateien, nicht aber den dazugehörigen Sourcecode erhalten.

Von der Öffnung des Softwaremarktes zu proprietärer Software

War es 1944 die Arbeit Hoppers, die zu einer Trennung von Hard- und Software in zwei voneinander unabhängige Produktionsschritte führte, so sollte 1969 der Druck der US-Regulierungsbehörden endgültig auch zu zwei voneinander getrennten Produkten führen. Im Dezember 1968 kündigte IBM an, dass es ab dem nächsten Jahr seine Softwareprodukte unabhängig von seiner Hardware verkaufen werde. Dies geschah, um den Softwaremarkt, den IBM durch seine Vorherrschaft auf dem Computersektor bereits innehatte, für andere Softwarehersteller zu öffnen. Mit dieser Entscheidung wurde der Weg geebnet für Firmen, die ausschließlich Software herstellten und verkauften. Ein neuer Markt entstand, der im Laufe der Zeit den eigentlichen Computermarkt an Kapitalkraft bei weitem übersteigen sollte. Natürlich ging mit dieser Entwicklung auch die weitere rechtliche Absicherung von Software als Geistiges Eigentum einher.

Etwa zur selben Zeit begannen Ken Thomson und Dennis Ritchie mit der Entwicklung eines Betriebssystems, das später zum UNIX operating system[34] werden sollte. Dieses System, das in den Bell Telephone Laboratories entstand, war ursprünglich nur für den internen Gebrauch der Laboratories gedacht, fand später aber wesentlich weitere Verbreitung.

Die erste UNIX-Version, die ab 1969 entstand, war noch in einer Assembler-Sprache geschrieben und für einen PDP-7-Rechner der Digital Equipment Corporation (DEC) gedacht. Als sie UNIX wenig später auf einer PDP-11 einsetzen wollten, entwickelten Thomson, Ritchie und deren Kollegen eine eigene Programmiersprache für ihr System. Diese Sprache, die lediglich einen Buchstaben („B“) als Namen hatte, wurde 1973 zu der Grundform der Sprache „C“, die heute zu den meistgenutzten Programmiersprachen gehört. Einer der großen Vorteile von C gegenüber vielen älteren Programmiersprachen ist, dass C beim Programmieren zwar Prozeduren zulässt, wie sie bei Assembler-Sprachen noch üblich waren (also z.B. das Ansteuern einzelner Speicherplätze für bestimmte Ergebnisse von Operationen), diese aber nicht zwingend vorsieht. C eignet sich also sowohl für systemnahe (low level) als auch für problemnahe (high level) Programmierung. So entstanden parallel eines der in der Folgezeit wichtigsten Betriebssysteme und eine der einflussreichsten Programmiersprachen.

Es waren vor allem zwei Eigenschaften, die UNIX bald so beliebt werden ließen: Zum einen gehörte es zu den ersten Betriebssystemen, die „time sharing“ erlaubten. In diesem Zusammenhang bedeutet time sharing, dass mehrere Benutzer gleichzeitig an einem Computer arbeiten können, ohne dass (im Idealfall) ein Benutzer von der Arbeit eines anderen gestört wird. Wie früher einzelnen Prozessen, konnte nun verschiedenen Benutzern Rechenzeit eingeräumt werden.[35] Für die Computernutzer war das Arbeiten an einem time sharing-Computer fast wie das Arbeiten an einem PC.[36] Mit dem Computer[37] verbunden waren (und sind auch heute oft noch) eine Reihe so genannter Terminals, an denen je eine Person arbeitete. Diese Terminals – Eingabegeräte (Tastatur und gegebenenfalls Maus) und Bildschirm – konnten in unterschiedlichen Räumen stehen, so dass weder der eigentliche Computer, noch andere an ihm Arbeitende vom eigenen Arbeitsplatz aus zu sehen waren. So hatte wirklich jede Person das Gefühl an einem eigenen Gerät zu arbeiten.

Die zweite Eigenschaft, die wenig später wichtig werden sollte, war die verhältnismäßig leichte Portierbarkeit des Systems. Wie im Zusammenhang mit der SHARE-Gruppe besprochen, war eines der größten Probleme beim Wechsel von einem Rechnertypen zu einem anderen das Übertragen der Software. Diesen Vorgang bezeichnet man auch als Portieren. Wie weiter unten noch beschrieben wird, sind Unix-Systeme so aufgebaut, dass nur ein relativ kleiner Teil an einen neuen Rechner angepasst werden muss, der Rest kann ohne größere Veränderungen einfach übernommen werden.

UNIX wurde, wie gesagt, bald auch außerhalb der Bell Labs bekannt. Da AT&T, zu dem die Bell Labs gehörten, im Geschäftsbereich Telekommunikation ein Quasi-Monopol hatte, war es der Firma untersagt, in anderen Bereichen tätig zu werden – auch hier waren die Regulierungsbehörden ausschlaggebend für diese Einschränkung. An Universitäten wurde sowohl das System als auch der Sourcecode für relativ geringe Summen abgegeben. So konnten Studierende nicht nur an Rechnern mit UNIX arbeiten, sondern es auch ihren Bedürfnissen bzw. den Erfordernissen ihrer jeweiligen Arbeitsplätze anpassen.

Unix-Systeme sind modular aufgebaut, das heißt, sie bestehen eigentlich aus vielen kleineren Programmen und sind keine einheitlichen Systeme wie viele andere Betriebssysteme. Für einzelne Funktionen, die das Betriebssystem übernehmen soll, kann jederzeit ein neues zusätzliches Programm geschrieben oder ein vorhandenes Teilprogramm den Wünschen angepasst werden, ohne dass das ganze System verändert werden muss. So kann das System beispielsweise an einen neuen Rechnertypus angepasst werden, indem einfach der Kernel – der Teil, der unter anderem Hardware und Software miteinander interagieren lässt – verändert wird.

Der Vorteil, der für AT&T daraus entstand, seine Sourcen mit dem Programm zu verteilen, bestand darin, dass sich bald eine Tauschgemeinschaft über die ganze USA ausbreitete. Wenn zum Beispiel irgendwo ein neuer Druckertyp angeschlossen wurde, konnte bald auch an jedem weiteren UNIX-Rechner ein solcher Drucker angeschlossen werden, ohne dass AT&T erst neue Treiber auf den Markt bringen musste.

An der Universität Berkeley (Kalifornien) entstand aus den dort geschriebenen Programmen eine berühmte Distribution[38] , die unter dem Namen Berkeley Systems Distribution (BSD) bekannt wurde. Während UNIX selbst mit einer Lizenz vertrieben wurde, die alle Rechte an dem System bei AT&T beließ – wie dies heute bei den meisten Computerprogrammen immer noch der Fall ist – wurde die BSD-Distribution nur mit einer Notiz versehen, die den Anwendern alle Rechte offenließ. Einzige Einschränkung war, dass eventuelle Nachfolgeprodukte einen Hinweis darauf enthalten mussten, dass sie auf BSD fußten. Außerdem durfte für solche Produkte nicht mit dem Namen der Distribution oder dem Verweis auf die Universität von Berkeley geworben werden.[39]

An der Kombination von UNIX und BSD lassen sich nun einige Phänomene zeigen, die häufiger im Zusammenhang mit Programmen, die an einer Universität entstanden waren und mit Programmen, an denen Benutzer mitgewirkt hatten, auftraten: Das erste Phänomen ist die Abwanderung von Studenten in die Industrie, wobei diese Studenten Produkte, die im universitären Zusammenhang entstanden waren, mitnahmen und mit ihnen Firmen gründeten bzw. in Firmen neu einstiegen. Im Fall von BSD war dies Bill Joy von SUN Microsystems.

Joy hatte, unterstützt mit Geldern des Staates, an der Erweiterung der Möglichkeiten des UNIX-Systems gearbeitet. SUN, Anfang des Jahres 1982 von Vinod Khosla gegründet, hatte bereits eine erste Version seiner Workstations auf dem Markt, als Joy im Juni des Jahres in die Firma eintrat und BSD/UNIX mitbrachte. Workstations waren ebenfalls eine Universitätsentwicklung: SUN steht für „Stanford University Networked workstation“.

Sowohl die Workstations – eigenständige kleinere Rechner, ähnlich den späteren PCs, die in der Regel in einem Netzwerk (oft mit einem größeren Serverrechner) verbunden sind – als auch UNIX hatten den Austausch von Daten als eine grundlegende Designeigenschaft vorgegeben. Bei den Workstations war „networked“ bereits im Namen enthalten, aber auch die Programmierer von UNIX und BSD hatten das Arbeiten in Netzwerken bei der Entwicklung im Hinterkopf. So entstand bei SUN Microsystems aus zwei Forschungsprojekten von Universitäten eine Kombination, die der Firma lange eine wichtige Position auf dem Markt bescheren sollte. Trotz seiner Tätigkeit bei SUN beschäftigte sich Joy jedoch auch weiter mit dem BSD-Projekt an der Universität.

Ein zweiter Punkt, an dem die Entwicklungen um UNIX und BSD typisch für den ganzen Softwarebereich und, in diesem Fall, für große Teile der Wissenschaftsentwicklung in den USA waren, ist die Quasi-Standardisierung durch die Defense Advanced Research Projects Agency (DARPA).[40] Die DARPA war 1958 gegründet worden, um im Rahmen des „Kalten Krieges“ die wissenschaftlichen Entwicklungen in den Vereinigten Staaten voranzutreiben.[41] In diesem Zusammenhang wurde ab 1969 ein computergestütztes Netz zwischen unterschiedlichen wissenschaftlichen Organisationen in allen Teilen der Vereinigten Staaten etabliert. Das ARPANET, wie dieses Netz genannt wurde, ist einer der Vorläufer des Internets.

Sinn des ARPANETs war die Förderung des elektronischen Datenaustausches zwischen den angeschlossenen Organisationen. Da die unterschiedlichen Organisationen verschiedene Bedürfnisse hatten, war die Standardisierung der Hardware innerhalb des Netzes nicht möglich. Um aber den Austausch von Dateien auf den unterschiedlichen Architekturen[42] zu ermöglichen, wurde 1979 entschieden, auf allen angeschlossenen Rechnern BSD/UNIX als Betriebssystem einzusetzen. Diese Entscheidung fiel zum einen wegen der bereits angesprochenen verhältnismäßig leichten Portierbarkeit von UNIX und zum anderen wegen der weiten Verbreitung und des guten Rufes, den die dritte Zusammenstellung der Berkeley-Software bereits hatte.

Die Förderung durch die DARPA führte dazu, dass die Entwicklung der Berkeley-Distribution weit schneller voranging als die kommerzielle Version von AT&T. Besonders die Netzwerkqualitäten des Originals standen hinter denen der Universitätsversion weit zurück, denn die BSD-Entwickler hatten inzwischen Möglichkeiten geschaffen, mit denen nicht nur Dateien ausgetauscht werden konnten. Auf Rechnern, auf denen BSD lief, konnten sich Benutzer anmelden und arbeiten, die an anderen Rechnern des Netzes saßen. Der Rückstand führte dazu, dass 4.3BSD weit beliebter war als System V, die entsprechende AT&T-Variante. Obwohl dies so war, mussten Institutionen, die BSD auf ihren Maschinen laufen ließen, weiterhin für die originale UNIX-Lizenz bezahlen, die immer teurer geworden war. BSD, das auf UNIX fußte, enthielt zu diesem Zeitpunkt noch große Anteile der Bell Software. Mit Release 4.3 wurde der Wunsch immer größer eine eigenständige Variante zu haben, die nur unter der in Berkeley benutzten Lizenz zu erhalten war. Es entstand 4.3BSD-Tahoe, das 1988 wegen der besonderen Ausrichtung, die BSD durch die DARPA Förderung genommen hatte, als Networking Release 1 veröffentlicht wurde. Für diese Veröffentlichung galten zwar die üblichen Lizenz-Bedingungen aller Veröffentlichungen von Berkeley-Software, aber eine Ausgabe direkt von der Universität kostete trotzdem noch 1.000 $. Erstaunlich ist, dass mehrere hundert Bänder auf diese Art vertrieben wurden, obwohl die Software auch kostenfrei erhältlich war.

Parallel zu der nur unter der BSD-Lizenz vertriebenen Version[43] wurde auch an der Standardversion weitergearbeitet. Die zusätzlichen Programme, die hierbei entstanden, wurden bis 1991 wieder in die reine BSD-Veröffentlichung integriert, die dann unter dem Namen Networking Release 2 veröffentlicht wurde. Neben diesen beiden Versionen entstand in den 1990er Jahren noch eine Version, die nur für den Gebrauch auf der 386-Architektur gedacht war, die den inzwischen erhältlichen PCs zugrunde lag. Bill und Lynne Jolitz hatten sich dieser Aufgabe gewidmet, die jedoch bald so aufwändig war, dass eine Gruppe von Entwicklern gegründet wurde, um die als 386BSD begonnene Arbeit fortzuführen. Diese Gruppe nannte ihr Produkt NetBSD, weil die gemeinsame Arbeit hauptsächlich über das Internet koordiniert wird. Wenig später formte sich eine zweite Gruppe dieser Art, die ihre Arbeit mehr an technisch nicht besonders versierten Benutzern ausrichtete. Das Resultat wird unter dem Namen FreeBSD veröffentlicht. Als dritte Gemeinschaft löste sich die OpenBSD-Gruppe von NetBSD. Ziel von OpenBSD ist es, ihre Version möglichst sicher gegen unberechtigte Zugriffe zu machen.

Neben diesen drei Gruppen, die das freie BSD-System weiterentwickeln, wurde 1992 eine Firma gegründet, die BSD vertreiben sollte. Diese Firma – Berkeley Software Design, Incorporated (BSDi) – trat direkt in Konkurrenz zu den Unix System Laboratories (USL), die inzwischen das originale UNIX vertrieben. In einer von USL angestrengten Klage ging es neben dem Gebrauch des Markennamens UNIX auch darum, dass BSD auf das ursprüngliche UNIX zurückging und, so die USL-Vertretung, folglich Teile des Originalcodes enthalten müsse. BSDi beantwortete die Klage damit, dass ihr Produkt auf die frei verfügbare Version von BSD zurückgriff, die Schuld folglich bei der Universität zu suchen sei.

Der folgende Rechtsstreit, der sich über die nächsten zwei Jahre hinzog, sollte allen BSD-Folgeprojekten schaden, indem er große Teile ihrer Gefolgschaft verunsicherte. Am Ende der Streitigkeiten mussten aus den etwa 18.000 Dateien des Networking Release 2 ganze drei entfernt werden. Zusätzlich enthält dieser Release etwa 70 weitere Dateien, auf denen noch ein USL-Copyright liegt.

Im Juni 1994 veröffentlichte Berkeley mit 4.4BSD die letzte Universitätsversion des Systems. Wie vorher gab es eine freie Version und eine, die weiterhin USL Lizenzen unterlag. Auf der freien, als 4.4BSD-Lite veröffentlichten Version basieren heute alle erhältlichen Versionen von BSD.[44] Im Juni 1995, nach der Veröffentlichung der 4.4BSD-Lite Release 2, die noch inzwischen gefundene Fehler der ersten Ausgabe korrigierte, wurde die Produktion des Systems in Berkeley endgültig eingestellt.[45]

 


[1] Zu intensiverer Lektüre dieser Geschichte empfiehlt sich Ceruzzi 2000, der diesem Teil der Arbeit als Hauptquelle zugrunde liegt.

[2] „Geistiges Eigentum“ wird, wo der Begriff in dieser Arbeit benutzt wird, als feststehender Ausdruck behandelt und deshalb groß geschrieben.

[3] Die 1947 gegründete Association for Computing Machinery (ACM) ist die älteste wissenschaftliche Organisation im Bereich Computer und Software. Die monatlich erscheinenden Communications of the ACM sind eine der am weitesten verbreiteten Veröffentlichungen in diesem Bereich.

[4] Ceruzzi 2000, S. 315 (Endnote 22)

[5] Auch dieser Begriff war natürlich noch nicht in Gebrauch.

[6] Vgl. Ceruzzi 2000, S. 9 ff.

[7]Ich werde auch für die Zeit vor 1959 von Software sprechen, weil sich kein anderer Begriff anbietet und es sich, im Rahmen der Entwicklung, eigentlich um etwa denselben Gegenstand handelt.

[8]Im Folgenden wird es zur Identifizierung nötig sein, einzelne Computer aufzuzählen. Ich möchte aber darauf verzichten, neben der Softwaregeschichte auch noch eine Computergeschichte anzureißen. Deshalb verzichte ich auf Details wie Namenserklärung oder Versionsfolge.

[9]In diesem Zusammenhang fällt auf, dass die Geschichte der Programmierung mit einer Frau beginnt. Heute, wie eigentlich in allen folgenden Perioden dieser Geschichte, sind und waren es vor allem Männer, die Programme für Computer schrieben und noch schreiben. Frauen sind in der Geschichte der Softwareentwicklung allgemein, aber auch der Freien Software im Besonderen, Ausnahmen.

[10] Ceruzzi 2000, S. 81f.

[11] Ceruzzi 2000, S. 82 f.

[12]Heute beschreibt der Begriff Compiler ein Programm, das einen in einer Programmiersprache geschrieben Text (Sourcecode) in einen maschinen-lesbaren Text (Binärcode) umwandelt.

[13] Ceruzzi 2000, S. 85 f.

[14]Natürlich sind auf den meisten Computern, die heute zu kaufen sind, auch schon Systeme und Programme installiert. Sie gehören aber eigentlich nicht zu den Rechnern, sondern werden zusätzlich mitberechnet.

[15]Vgl. Ceruzzi 2000, S. 87 f.

[16]SHARE stand für Society to Help Avoid Redundant Effort. Vgl. Ceruzzi 2000, S. 330

(Endnote 32)

[17]Ceruzzi 2000, S. 88]

[18]Für Formula Translation

[19]Für Common Business Oriented Language

[20]Also ein Programm, das aus Sourcecode binären Code „kompiliert“, nicht wie bei Hopper ein Programm, das aus unterschiedlichen Subroutinen ein Programm zusammenstellt.

[21]Ceruzzi 2000, S. 93

[22]Vgl. Ceruzzi 2000, S. 96

[23]Geistiges Eigentum (intellectual property) ist der Versuch, geistige Produkte wie literarische (und wissenschaftliche) Texte und Musik, aber auch Software mit einem einzigen Begriff zu belegen. Dieser wird jedoch von Gegnern des rechtlichen Schutzes von Software abgelehnt, weil ihrer Meinung nach Texte, die eine bestimmte Meinung oder Geisteshaltung ausdrücken, nicht mit Software zu vergleichen sind, die den Versuch darstellt, ein bestimmtes Problem zu lösen, das sich beim Gebrauch eines Computers ergibt.

[24]Problematisch an dieser Diskussion ist heute, dass der Schutz durch das Copyright nicht wirklich mit dem entsprechenden Schutz in anderen Ländern vergleichbar ist. So gelten für das Urheberrecht in Deutschland ganz andere Voraussetzungen als für das amerikanische Copyright. Außerhalb der USA ist eine Lizenz, die auf der Copyright-Gesetzgebung beruht, also möglicherweise gar nicht gültig. Dieser Punkt ist gerade jetzt ein Problem für Freie Software, wo die Free Software Foundation weltweit Ableger gründet.

[25]Nämlich Galler, Mooers 1968. Da es sich hierbei vor allem um das Recht am Namen eines Produkts handelt, habe ich diese Diskussion nicht weiter ausgeführt. Galler weist Mooers dabei darauf hin, dass die einfache Umbenennung eines Derivates diese Maßnahme relativ leicht aushebelt.

[26]Siehe Lawlor 1964, S. 572

[27]Gemeint sind hier zum Beispiel Theateraufführungen an Schulen und Universitäten, bei denen Eintritt genommen werden soll.

[28] Lawlor 1964, S. 576

[29]Gedruckt, im Gegensatz zur bis dahin gängigen Praxis, den Text einfach als Textdatei mit der ausführbaren Datei mitzuliefern, was Lawlor wohl nicht als Veröffentlichung im Sinne der Copyright-Regelung verstand.

[30]Ausnahme sind Programme in der „Public Domain“, d.h. Programme, bei denen der Autor explizit auf jeglichen Schutz verzichtet.

[31] Lawlor 1964, S. 577

[32] Jacobs 1964, S. 583 f.

[33] Jacobs 1964, S. 583 f.

[34]Heute gibt es verschiedene Systeme, die alle unter dem Namen Unix zusammengefasst werden. Dabei scheint es Probleme mit der Benennung zu geben. Ich verwende Unix (bei anderen Autoren finden sich Varianten wie *nix, un*x oder auch unix) als Namen für ein beliebiges System dieser Art. Die Version in Großbuchstaben benutze ich für das Originalsystem bzw. das Nachfolgesystem, dessen Namensrecht heute bei der Firma Caldera liegt. Vgl. die Einträge „Unix“ und „UN*X“ in Raymond 2001.

[35]Wie dies genau geschieht und zur Geschichte des Begriffes, der auch vorher schon in Gebrauch war, siehe Ceruzzi 2000, S.154.

[36]PCs gab es natürlich zu diesem Zeitpunkt noch nicht, aber die Möglichkeiten von „time sharing“-Computern werden oft mit denen der späteren Personal Computer verglichen. Vgl. Ceruzzi 2000, S. 207.

[37]Dies waren so genannte „Main Frame Computer“ (oder einfach „Main Frames“) die noch ganze Räume füllten.

[38]Mit Distribution ist eine Sammlung von Programmen gemeint. GNU/Linux-Systeme werden heute auch als Distributionen vertrieben, dabei unterscheiden sich die einzelnen Distributionen dadurch, welche Programme neben dem Linux-Kernel und den GNU-Programmen noch eingebunden werden.

[39]Diese Notiz ist genau genommen eine der simpelsten Formen die Copyright-Gesetzgebung auf ein Programm anzuwenden. Heute wird diese Notiz, die ohne die Werbe-Klausel von einigen BSD-Nachfolgeprojekten benutzt wird, auch als „BSD Copyright Notice“ bezeichnet.

[40]Zur Standardentwicklung auf Betreiben der DARPA und zur späteren Freigabe von Standards siehe Newmann 1999.

[41]Bei ihrer Gründung hieß die DARPA noch ARPA (Advanced Research Projects Agency). Der Name wurde 1972 geändert. 1993 wurde das Defense im Namen auf Betreiben des damaligen Präsidenten, Bill Clinton, fallen gelassen, 1996 jedoch wieder hinzugefügt. Bis zur ersten Namensänderung unterstand die ARPA dem Department of Defense, danach war die DARPA direkt dem Office of the Secretary of Defense unterstellt. Vgl. DARPA 2001.

[42]Der technische Aufbau eines Computers wird auch als seine Architektur bezeichnet. Normalerweise wird bei der Bezeichnung einzelner Architekturen der Name des verwendeten Prozessors vorangestellt. Die 386-Architektur basiert z.B. auf dem 386-Prozessor der Firma Intel.

[43]Bei der anscheinend noch der Systemkernel des alten UNIX-Systems benutzt wurde.

[44]Das ist neben den drei freien und dem Produkt von BSDi auch der Darwin-Kernel, der dem MacOS X-System zugrunde liegt. Außer diesen und dem AT&T UNIX gibt es noch unix-ähnliche Betriebssysteme der Firmen DEC, IBM, HP und natürlich SUN. Insgesamt gibt es, wenn man Kirk Waingrow folgt, weit über 80 Varianten der beiden ursprünglichen Systeme. Vgl. Waingrow 1999.

[45]Genauere Einblicke in die hier beschrieben Vorgänge um UNIX und BSD gibt McKusick 1999.

 

 

*Dieser Text stammt aus der Magisterarbeit „Geschichte der Freien Software“ von Joachim Korb aus dem Jahr 2001. Das Originaldokument ist abrufbar unter: http://tal.cs.tu-berlin.de/korb/Magister/