Kapitel 3. Freie Software, Entstehung, Organsiation, Hilfen, Support, Dokumentationen

Wie entsteht Linux und freie/opensource Software, wie sind die Entwickler organisiert, wo gibt es Support, Hilfen, Dokumentationen? Dies ist Bestandteil der folgenden Kapitel. Linux ist sehr Modular geordnet. Es gibt für alles und jedes Problem eine Adresse im Internet, bei welcher man Hilfen, Support, Dokumentationen und Ansprechpartner findet. Linux ist als Betriebsystem sehr modular aufgebaut, und entsprechend diesem Aufbau sind die Kapitel geordnet, beginnend mit dem Linux Kernel und den GNU UNIX Toolkits und der GNU C - Library.

3.1. Linux Kernel und GNU UNIX - Tools

Die meiste Software für Linux ist, ebenso, wie der Kernel selber in der Programmiersprache C geschrieben. Die Basis des Betriebssystems Linux ist der Kernel, zu finde unter Kernel.org, auf welchem die GNU UNIX - Tools, Libraries aufsetzen. Diese finden sich auf den Homepages GNU.org. Sie bilden die Basis jeder Linux - Distribution. Wegen der hohen Komplexität und Verzahnung des Kernels mit diesen Libraries bedarf es einer strengen Organisation. Es gibt nur wenige C - Programmierer, die genügend Hintergrundwissen haben, wie der Linux - Kernel als Ganzes funktioniert. Diese Leute findet man unter Beiträge der Kernel - Programmierer. Für den Linux - Kernel gibt es immer einen Haupt-Maintainer (Betreuer), der unter den Programmierern gewählt wird, und der die Patches, Erweiterungen und Verbesserungen in die jeweilige, neue Kernel - Version integriert. Kernel, wie 2.5 sind aufgrund ihrer ungeraden Versionsnummer als instabil erklärt, Kernel - Versionen mit gerade Nummern, wie z.B. 2.6 sind sog. stabile Kernel. Version 2.6.3 gehört ebenfalls zu den stabilen Versionsnummern. Abweichend von den offiziellen Kernel - Versionen, die sich auf Kernel.org befinden, kocht jeder Linux Distributor sein eigenes Süppchen. So werden vereinzelt Patches eingespielt, die besondere Features beinhalten, oder welche die Kompatibilität zu kommerzieller Software, vor allem zu Datenbank - Server, Cluster, ... bewahren. Diese finden dann hauptsächlich in den zertifizierten Distributionen Einzug, siehe z.B. Redhat Enterprise Server, Abschnitt 4.2.2.

Die GNU UNIX - Tools, zu finden unter gnu.org sind portable Programme, die sogar auf Windows, HP-UX, Solaris, AIX, SGI, ... portiert wurden:

Da jeder Hersteller eines Betriebssystems - Kernels seine eigenen Schnittstellen zwischen UNIX - Toolkits und Kernel geschaffen hat, bedarf es einer Middleware, einer Schnittstelle. Für Linux finden sich diese unter www.kernel.org. Die Koordination für Linux Kernel - Patches, Diskussionen kann man unter KernelTrap.org nachvollziehen, wer möchte darf mitmachen! Die beste Dokumentation zum Linux Kernel findet sich beim Entpacken des Quellcodes unter /usr/src/linux/Documents/ und unter LinuxHQ.com. Bei vielen Distributionen gibt es weitere Dokumentation unter /usr/share/. Die Dokumentationen zu den GNU UNIX Toolkits finden sich in den sog. MAN - Pages. Das Kommando man ls gibt z.B. das Handbuch zu dem GNU UNIX Tookit ls aus. Wer Werkzeuge z.B. für "network" unter Linux sucht, braucht einfach nur apropos network eintippen, und schon wird eine List aller GNU UNIX Toolkits angezeigt, die etwas mit "network" zu tun haben:
[stepken@localhost share]$ apropos network
X                    (7x)  - a portable, network-transparent window system
dhclient-script      (8)  - DHCP client network configuration script
display-tele         (7)  - Forwards the display over a network
ethereal             (1)  - Interactively browse network traffic 
ggiteleserver        (7)  - Forwards the display over a network
ifcfg                (5)  - Configuration file for network interfaces
ifconfig             (8)  - configure a network interface
ifdown               (8)  - Stops a network interface
ifport               (8)  - select the transceiver type for a network
interface
ifup                 (8)  - Starts a network interface
ifuser               (8)  - identify destinations routed to a particular
network interface
libpng               (3)  - Portable Network Graphics (PNG) Reference
Library 1.2.5
libpng [libpngpf]    (3)  - Portable Network Graphics (PNG) Reference
Library 1.2.5 (private functions)
nameif               (8)  - name network interfaces based on MAC addresses
netreport            (1)  - request notification of network interface changes
netstat              (8)  - Print network connections, routing tables, interface statistics 
nmap                 (1)  - Network exploration tool and security scanner
perlfaq9             (1)  - Networking ($Revision: 1.9 $, $Date: 2002/04/07 18:46:13 $)
ping                 (8)  - send ICMP ECHO_REQUEST to network hosts
ping6 [ping]         (8)  - send ICMP ECHO_REQUEST to network hosts
png [png3]           (5)  - Portable Network Graphics (PNG) format
pngtopnm             (1)  - convert a Portable Network Graphics file into a portable anymap
pnmtopng             (1)  - convert a portable anymap into a Portable Network Graphics file
pppoe-sniff          (8)  - examine network for non-standard PPPoE frames
rdisc                (8)  - network router discovery daemon
routed               (8)  - network routing daemon
sane-net             (5)  - SANE network backend
saned                (1)  - SANE network daemon
slattach             (8)  - attach a network interface to a serial line
socket               (n)  - Open a TCP network connection
tethereal            (1)  - Dump and analyze network traffic
tracepath            (8)  - traces path to a network host discovering MTU along this path
tracepath6 [tracepath] (8)  - traces path to a network host discovering MTU along this path
traceroute           (8)  - print the route packets take to network host
usernetctl           (8)  - allow a user to manipulate a network interface if permitted
zcip                 (8)  - zero configure network interface
Die Ziffern hinter den Kommandos geben, ähnlich dem Brockhaus - Lexikon, die Bände an, zu finden unter /usr/share/man/:

Kein anderes UNIX Betriebssystem besitzt eine ähnlich vollständige Dokumentation für UNIX - Tools und Anwendungs - Software. Die Handbücher vom alten AT&T UNIX waren ca. 5 Meter lang. Es macht keinen Sinn, überhaupt irgendwelche UNIX Kommando's in Handbüchern abzudrucken - der Baukasten von UNIX Toolkits, die sich alle untereinander kombinieren lassen, füllt viele zigtausend Seiten. Wer eine Datei oder ein Programm auf der Festplatte sucht, kann sich mit locate ... helfen.

Die Entwicklung keines anderen Betriebsystems ist ähnlich offen und transparent, wie die von Linux. Hier haben Zeitungen, Journale offenen Zugang zu Informationen und haben daher sehr viel neues zu berichten. Die war z.B. ein Kardinalfehler von NOVELL und DIGITAL. Diese Server liefen jahrelang, der Administrator war schon lange in Pension oder entlassen, das Admin - Passwort vergessen und die Kisten liefen ununterbrochen. Riesige Industriezweige basieren auch heute noch auf DIGITAL UNIXen, die riesige Anlagen steuern, und wo niemand mehr weiß, was diese eigentlich genau tun. Bei Windows NT sieht dieses anders aus - Microsoft hat sogar ein perfektes Betriebssystem ohne Fehler - Xenix - es steckt unbemerkt in den Siemens HiCom/HiPath Anlagen. Wie Bill Gates bereits bemerkt hat, verkauft sich ein Betriebsystem oder eine Software nicht deswegen, weil sie perfekt ist, sondern nur deswegen, weil sie dauernd neue Features anbietet. Mängel, Unzulänglichkeiten und Fehler dienen nur dazu, daß der Hersteller im Gespräch bleibt. Irgendwo rüber muß sich Mensch ja dauernd aufregen können, irgendwo her muß die emotionale Bindung ja kommen. Linux kann, ohne wie Novell oder Digital unter zu gehen, beide Ziele erreichen - perfekt laufen, und trotzdem immer im Rampenlicht der Medien zu stehen - über neue Features, an deren Implementierung inzwischen über 300.000 Menschen weltweit aktiv durch eigene Software - Entwicklung, Beiträge, Patches, Dokumentationen beigetragen haben. Microsoft ist gegen diese Masse an (zumeist) Programmierern eine kleine Klitsche.