Stefan Meretz (Mai 2000)

Geschichte Freier Software

Zusammenfassung    Download

Version 1.00, Letzte Änderung: 25.05.2000

Originalquelle: http://www.kritische-informatik.de/fshistl.htm

Ein OpenTheory-Projekt: http://www.opentheory.org/proj/fs-history

Copyright (c) 2000 Stefan Meretz. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.

Inhalt:

1. Zeittafel: Geschichte Freier Software

2. Glossar: Abkürzungen und Begriffe

3. Meta-Text: Versionen-Geschichte


Geschichte Freier Software

Die Geschichte Freier Software beginnt eigentlich erst 1984 mit der Gründung des GNU-Projektes. Vorher hat es keine freie Software gegeben, denn es gab auch keine unfreie Software. Es gab einfach nur Software, und die wurde kooperativ erstellt, sie war frei zugänglich, wurde ausgetauscht und diskutiert. Das änderte sich in dem Maße wie Software zur profitablen Ware wurde.

Die folgende Zeittafel stellt nur die Highlights der Vorgeschichte und Geschichte Freier Software stichwortartig dar. Eine Erläuterung der verwendeten Abkürzungen und Begriffe findet sich im Glossar im Anschluß an die Zeittafel. Hintergründe und Konsequenzen der skizzierten Entwicklung werden in den beiden Aufsätzen »Linux - Software-Guerilla oder mehr? Die Linux-Story als Beispiel für eine gesellschaftliche Alternative« (http://www.kritische-informatik.de/linuxsw.htm) und »GNU/Linux ist nichts wert - und das ist gut so!« (http://www.kritische-informatik.de/lxwert.htm) ausführlich beschrieben.

1. Zeittafel: Geschichte Freier Software

1957  

UdSSR: »Sputnik«

 
1958  

USA: Gründung der ARPA

 
1959      
1960

Joseph C. R. Licklider: »Man-Computer-Symbiosis«

1961  

Erste PDP-1 am MIT

 
1962

Licklider: Leiter des ITPO in der ARPA         PDP-6: erster Timesharing-Computer

1963

Die Kultur des »Hacking« entsteht

1964  

Erfindung von »BASIC«

 
1965

Gründung des ARC unter Doug Engelbart: »Mäuse« und andere geniale Entwicklungen

1966  

Erster ARPAnet-Plan

 
1967

PDP-10: DIE »Hackermaschine«

1968

»Maus«, »Fenster« und »Textverarbeitung« werden öffentlich präsentiert

1969

Ken Thompson: UNIX

Dennis Ritchie: »C«

ARPAnet mit 4 Hosts

 

Jonathan B. Postel erfindet »RFC«     Apollo-11 Computer-Bug

1970

1.1.1970: The Epoch - Beginn der Unix-Zeitrechnung

1971

Ray Romlinson: E-Mailing im Netz         FTP (RFC 172)

ARPAnet: 23 Hosts

1972

Ray Tomlinson: @-Zeichen

Telnet (RFC 318)

Computer-to-Computer-Chat

1973

Bob Metcalfe entwirft Ethernet für »lokale Netze«

ARPAnet: 35 Hosts

1974

Vint Cerf & Bob Kahn: TCP

Erstes BSD-UNIX für eine PDP-11 erscheint

1975

Erste Mailingliste

Erster PC wird vermarktet

Richard Stallman: Emacs

1976

Mike Lesk (AT&T) entwickelt UUCP

1977

Festschreibung der Mail-Spezifikation (RFC 733)     Donald E. Knuth beginnt TeX-Projekt

1978

Aufteilung von TCP in TCP und IP

BSD-UNIX 2.11

1979

Usenet entsteht (per UUCP)

Eric Allman entwickelt Sendmail-Vorläufer     BSD-UNIX 3

 

Kevin MacKenzie: Emoticons :-)     Richard Bartle und Roy trubshaw: erster MUD

1980

ARPAnet »stürzt ab« durch einen versehentlich in Umlauf gebrachten Virus     BSD-UNIX 4

1981

ARPA finanziert Integration von TCP/IP in BSD-UNIX

BSD-UNIX 4.1

1982

AT&T verliert Anti-trust-Verfahren: die »Baby-Bells« entstehen

SMTP-Spezifikation

1983

AT&T vermarktet UNIX System V als closed source

BSD-UNIX 4.2

1984

DNS wird eingeführt

Paul Vixie schreibt BIND

Sun entwickelt NFS

 

Erste registrierte Dömane: symbolics.com     Richard Stallman gründet das GNU-Projekt

1985

GNU-Emacs

Gründung der Free Software Foundation (FSF)

1986

Internet-Standards: Bildung der IETF         NNTP

BSD-UNIX 4.3

1987

Andrew Tanenbaum: MINIX

Larry Wall veröffentlicht Perl 1.000

1988

John Ousterhout: Tcl     Perl 2.000     Der erste »Internet-Wurm«     Jarkko Oikarinen: IRC

1989  

Perl 3.000

 
1990  

Guido van Rossum: Python

 
1991

Linus Torvalds: Linux 0.01

Paul Lindner and Mark P. McCahill: Gopher

 

Tim Berners-Lee: WWW     Perl 4.000

Philip Zimmerman: PGP

1992

Freies Betriebssystem: GNU-Tools + Linux-Kernel = GNU/Linux

LaTeX 2.09

 

Linux 0.99

Jean Armour Polly erfindet den Begriff "Internet-surfen"

1993

NCSA: »Mosaic« - Internet-Browser     Andrew Tridgell: Samba     FreeBSD 1.0

1994

Linux 1.0     erster Internet-Bankraub         NetBSD 1.0     LaTeX 2e

1995

Linux 1.2     Apache 1.0     PHP     Perl 5.001     NetBSD 1.1     GIMP 0.5     Java

1996

Linux 2.0     GNU/Hurd Test-Version         NetBSD 1.2     GIMP 0.6     FreeBSD 2.0

1997

Eric S. Raymond: »The Cathedral and the Bazaar«

OpenBSD 2.1

 

Tcl/Tk 8.0

Code fork: GCC und EGCS

BIND 8

1998

Netscape veröffentlicht Mozilla-Code     Spaltung: »Free Software« & »Open Source Software«

 

Beginn der Kommerzwelle: Firmen beginnen, ihre Produkte auf freie Systeme zu übertragen

 

GNOME 0.25     KDE 1.0     JPython 1.0     GIMP 1.0     »Halloween«     OpenBSD 2.3

1999

Linux 2.2     GNOME 1.0     KDE 1.1     Samba 2.0     NetBSD 1.4     FreeBSD 3.4

 

»Wiedervereinigung« von GCC und EGCS zu GCC*

2000

Linux 2.4     PHP4     KDE 2.0     FreeBSD 4.0     Apache 2.0     BIND 9

 

2. Glossar: Abkürzungen und Begriffe

Apache: von »A Patchy Server« (etwa: »ein geflickter Server«); bekanntester freier Web-Server.

Applikation: Anwendungs-Programm (z.B. Web-Browser).

ARC: Augmentation Research Center am Stanford Research Institute; unter Doug Engelbart in den 60ern viele, erst wesentlich später realisierte Erfindungen und Konzepte: E-Mailing, Mailinglisten, Textverarbeitung, Maus als Eingabegerät, Fenstertechnik, vernetzte Hypertexte.

ARPA: Advanced Research Projects Agency; Koordinierungstelle zur Forschungsförderung beim DoD (Department of Defense) der USA.

ARPAnet: Vorläufer des Internets, gefördert durch die ARPA, realisiert durch die Firma Bolt Beranek and Newman (BNN) in Kooperation mit Universitäten.

BASIC: Beginner's All-purpose Symbolic Instruction Code; einfache Programmiersprache.

Beta-Version: im Teststadium befindliche Software, die noch instabil sein kann.

Binär-Code: maschinenausführbares Programm, für Menschen nicht »lesbar«.

BIND: Berkeley Internet Name Daemon; Service, mit dem Namen des DNS in IP-Adressen (und vice versa) umgesetzt werden.

BSD: Berkeley Software Distribution; UNIX-Paket der Universität von Berkeley. Zunächst kommerziell vertrieben, später Aufspaltung in mehrere freie Varianten (FreeBSD, NetBSD, OpenBSD) unter einer eigenen Lizenz, die die Reprivatisierung erlaubt.

Bug: wörtlich »Wanze«; Fehler im Computer-Programm.

C: Programmiersprache, die zusammen mit UNIX entwickelt wurde.

Client: Rechner, der bereitgestellte Dienste eines Servers nutzt.

Code fork: Aufspaltung des Programm-Codes in zwei verschiedene Entwicklungsrichtungen aufgrund der Spaltung des Projekts. Code fork passieren selten, ein Beispiel ist die zeitweise trennung der C-Compilerentwicklung in GCC und EGCS.

Compiler: Übersetzer; ein Programm, das den Quell-Text eines Programms in Binär-Code überführt.

Copyleft: Bezeichnung der Lizensierungsform der GNU GPL, die die klassischen Ziele des Copyright umkehrt, denn statt des Ausschlusses von Nutzern juristisch abzusichern wird das Ausschliessen rechtlich ausgeschlossen.

Daemon: Hintergrundprozess, der auf einem Server läuft, und Dienste permanent zur Verfügung stellt.

DNS: Domain Name System; Definition eines hierarchischen Namenssystems für Internet-Domänen.

Domäne/Domain: Bereich im hierarchischen DNS.

Editor: Programm zur Erfassung und Speicherung von Texten, z.B. von Programm-Code.

EGCS: Experimental GCC Compiler Suite; Abspaltung von der GCC-Entwicklung.

Emacs: Universal-Editor, der mit extrem vielen Zusatzfunktionen ausgestattet werden kann. Kommt ursprünglich aus der UNIX-Welt, ist inzwischen aber für die meisten Betriebssysteme verfügbar.

E-Mail: Electronic Mail; elektronische Post im Internet.

Emoticons: Ausdruck von Gefühlen mit Hilfe von Kürzeln und "Smileys" :-)

Ethernet: Transport-Protokoll für LANs (Local Area Networks).

FreeBSD: freies BSD-Unix.

FSF: Free Software Foundation; 1985 von Richard Stallman u.a. gegründete Organisation zur Unterstützung der GNU-Projekte zur Entwicklung freier Software.

FTP: File Transfer Protocol; ermöglicht das Kopieren von Dateien im Internet.

GCC: GNU C-Compiler; bekanntester freier C-Compiler. Nach der »Wiedervereinigung« mit EGCS bedeutet GCC nun GNU Compiler Collection.

GIMP: GNU Image Manipulation Program; universelles Bildverarbeitungsprogramm mit Plug-In-Konzept.

GNOME: GNU's Network Object Model Environment; neben KDE die zweite freie, grafische Benutzeroberfläche für Unix-Systeme.

GNU: Rekursive Bezeichnung für GNU Is Not Unix; Projekt der FSF zur Schaffung eines freien Betriebssystems. Die GNU-Tools sind Teil des freien Betriebssystems GNU/Linux.

GNU GPL: GNU General Public License, kurz GPL; die bekannteste und weitestgehende freie Softwarelizenz. Die GPL erlaubt die Nutzung, Veränderung und Verbreitung der Software und verbietet den Ausschluß von der Nutzung z.B. durch Reprivatisierung von ihr abgeleiteter Software.

Gopher: Protokoll für den Zugriff auf verteilte hierarchische Datei-Systeme im Internet, entwickelt an der Universität von Minnesota. Gopher wurde in der Bedeutung durch HTTP und das darauf basierende grafische WWW abgelöst.

Hacking: bezeichnet eine spezifische Programmierkultur, die mit dem Aufkommen der Time-sharing Computer entstand und die sich durch offene und verteilte Kooperation der Hacker auszeichnet. Heute wird in der medialen Öffentlichkeit der Begriff des Hackens mit elektronischem Vandalismus identifiziert. Hacker selbst bezeichnen diese Form als "cracken": "hackers build things, crackers break them." Vgl. Raymond, E.S. (1999).

Halloween, Feiertag in den USA; der Tag gab den Dokumenten der Fa. Microsoft, in denen sie Bedeutung freier Software untersucht, ihren Namen.

Host: zentraler Computer, an dem über viele Terminals parallel gearbeitet werden kann. Hier: Computer, der über eine IP-Adresse identifizierbar ist.

HTTP: Hypertext transfer Protocol; Protokoll zur Übertragung von Internet-Dokumenten (Web-Seiten).

Hurd: Name des GNU-Kernels, der bisher nur als Beta-Version freigegeben wurde.

IETF: Internet Engineering Task Force; informelle Organisation zur Festlegung von Internet-Standards. Wichtigste Dokumente sind die RFCs. IETF-Motto: »Rough consensus and running code«

IMAP: Internet Message Access Protocol; Protokoll, das die Verwaltung von E-Mails auf einem Server erlaubt.

Internet-Wurm: Ein sich selbst vervielfältigendes Programm, das sich im Internet ausbreitet kann und ggf. auf den befallenen Rechnern Schaden anrichtet. Ein aktuelles Beispiel ist der »I-LOVE-YOU«-Wurm.

Interpreter: Programm, das ein in einer Skript-Programmiersprache geschriebenes Programm in Binär-Code übersetzt und unmittelbar ausführt.

IP: Internet Protocol; bildet zusammen mit TCP das Basis-Protokoll der Internet-Kommunikation. Mit dem IP ist es möglich, verschiedene Netzarten zu integrieren.

IP-Adresse: Eindeutige numerische Bezeichung eines Gerätes (Computers) im Internet aus derzeit 4 Bytes (Beispiel: 192.168.1.1).

IRC: Internet Relay Chat; Internet Chat System, Online-Diskussionsforen.

ITPO: Information Processing Techniques Office der ARPA; vormals Behavior Sciences Office, ab 1962 geleitet vom Psychologen J. C. R. Licklider, der seine im Manifest »Man-Computer-Symbiosis« formulierten Ziele zur Nutzung von Computern für die Zusammenarbeit der Forschenden umsetzte. Unterstützte zunehmend Universitätsprojekte, so auch die Time-sharing Mini-Computer-Projekte des MIT.

Java: C-ähnliche Programmiersprache für Internet-Applikationen.

JPython: auf Java basierendes Python.

KDE: K Desktop Environment; freie, grafische Benutzungsoberfläche (Desktop-System) für Unix-Systeme.

Kernel: Zentrale Komponente im modularen Unix-Betriebssystem, das den Speicher verwaltet, die Prozesse organisiert und elementare Operationen zur Verfügung stellt.

LaTeX: siehe TeX.

Linux: freier Unix-Kernel, benannt nach Linus Torvalds, der 1991 auf Basis eines Minix-System die Entwicklung begann.

LGPL: GNU Lesser General Public License; enthält die gleichen Bestimmungen wie die GPL, beinhaltet jedoch die Erlaubnis, Programme und -Bibliotheken mit proprietärer Software zu nutzen.

Mailingliste: E-Mail-Kommunikation einer Gruppe; E-Mails an die Liste werden automatisch an alle Mitglieder der Gruppe verteilt.

MINIX: Mini-Unix; entwickelt von Andrew Tanenbaum zu Lehrzwecken, nach dem der Sourcecode des System-V-Unix von AT&T auch in Lehrveranstaltungen nicht mehr verwendet werden durfte. Minix wurde erst 2000 unter eine freie Lizenz gestellt (BSD).

MIT: Massachusetts Institute of Technology (USA).

Mozilla: Name des Netscape-Internet-Browsers.

MPL: Mozilla Public Licence; Teile des im April 1998 freigegebenen Netscape Communicator (Mozilla) unterliegen dieser Lizenz. Im Gegensatz zur NPL enthält sie aber keine Sonderrechte für Netscape.

MTA: Message Transport Agent; Programm, das für die transport von E-Mail im Internet sorgt.

MUD: Multi-User-Dungeons; Rollenspiel im Netz.

NCSA: National Center for Supercomputing Applications (USA).

NetBSD: freies BSD-Unix mit dem Fokus auf »Portabilität«.

NFS: Network File System; Netzwerk-Dateisystem.

NNTP: Network News Transfer Protocol; Protokoll, speziell entwickelt für die Beschleunigung des Newsgroup-Datentransfers im Usenet.

NPL: Netscape Public Licence; Teile des im April 1998 freigegebenen Netscape Communicator (Mozilla) unterliegen dieser Lizenz. Netscape sichert sich mit dieser Lizenz die Möglichkeit der Reprivatisierung.

OpenBSD: freies BSD-Unix mit dem Fokus auf »Sicherheit«

Open Source: Von der Open Source Initiative (OSI) eingeführter Marketingbegriff für Freie Software.

OSI: Open Source Initiative; 1997 von Eric Raymond und Bruce Perens gegründet. Bruce Perens hat sich inzwischen von der OSI wegen zu starker kommerzieller Ausrichtung wieder getrennt.

Patch: Computercode, mit dem ein Fehler in einem Programm beseitigt (»geflickt«) wird.

PC: Personal Computer; der "eigene Computer auf dem Schreibtisch" - im Unterschied zum Time-sharing Computer der Frühzeit, an dem viele Menschen gleichzeitig über Terminals arbeiten. Heute kann der PC auch ein Time-sharing-Computer sein (z.B. mit Linux).

PDP: Computerserie der Digital Equipment Corporation (DEC), Hersteller der ersten Time-sharing Mini-Computer (PDP-6).

Perl: Practical Extraction and Report Language; universelle Skript-Programmiersprache.

PGP: Pretty Good Privacy; Programm zur Verschlüsselung von Daten.

PHP: Rekursive Abkürzung für PHP Hypertext Preprocessor; eine in HTML eingebettete Programmiersprache zur dynamischen Generierung von Web-Seiten mit zahlreichen Schnittstellen zu Datenbanken.

Plug-In: »Einstöpseln« einer Software-Komponente, die einer vorhandenen Applikation neue Funktionen hinzufügt.

POP3: Post Office Protocol; Protokoll, das die Auslieferung von E-Mails festlegt. Die E-Mails werden dabei auf den Client-Rechner transferiert.

Portieren: Software auf ein technisch anderes Computer-System übertragen (entweder Anpassung von System-Software auf eine andere Hardware oder von Applikationen auf eine andere Betriebssystem-Software).

Protokoll: Vereinbarung über Syntax und Semantik der elektronischen Kommunikation.

Python: Programmiersprache, benannt nach Monty Python (engl. Komiker).

Quell-Code, Quell-Text: Text eines in einer höheren Programmiersprache geschriebenen Programms.

RFCs: Request for Comments; Dokumente zur Festschreibung offener Internet-Standards, die in der Regel bei treffen der IETF diskutiert und konsensuell festgelegt werden.

Samba: Unix-Service, der Windows-NT-Dienste bereitstellt, so dass sich der Unix-Server für Windows-Clients wie ein Windows-NT verhält.

Sendmail: bekanntester freier MTA.

Server: Rechner, der Services bereitstellt, die von Clients genutzt werden.

Skript-Programmiersprache: Programmiersprache, die von einem Interpreter ausgeführt wird.

SMTP: Simple Mail transfer Protocol; Protokoll, das die Versendung von E-Mails definiert.

Source-Code: Quell-Code, Quell-Text.

Tcl/Tk: Tool Command Language/Tool Kit; freie Skript-Programmiersprache zur Anwendungsentwicklung.

TCP: Transmission Control Protocol; bildet zusammen mit IP das Basis-Protokoll der Internet-Kommunikation.

Telnet: Protokoll, das das Fernsteuern eines Rechners im Internet ermöglicht.

TeX: Schriftsatz-System für Computer.

UNIX: Multitasking und Multiuser-Betriebssystem. Der Name stammt indirekt vom Vorläufersystem MULTICS (Multiplexed Information and Computing Service) ab, von dem es sich durch »Einfachheit« unterscheiden sollte, daher UNICS (Uniplexed Information and Computing Service), woraus schließlich UNIX wurde.

Usenet: Unix-User-Network; Netzwerk von Diskussionsforen, den Newsgroups. Ursprünglich auf Basis von UUCP betrieben, wurde es 1996 auf NNTP umgestellt.

UUCP: Unix-to-Unix-Copy Protocol; regelt den Dateitransfer zwischen Unix-Computersystemen, wird für Internetdienste wie Mailing, Dateitransfer, Fernsteuerung und Diskussionsforen verwendet, jedoch mit stark abnehmender Bedeutung, da für die jeweiligen Dienste spezielle und effektivere Protokolle entwickelt wurden.

WWW: World Wide Web; auf HTTP basierendes weltweites vernetztes Hypertext-System.

3. Meta-Text: Versionen-Geschichte

  • Version 1.00, 25.05.00: Erster öffentlicher Entwurf