Freitag, 9. Februar 2007

linux

Open Source und die Philosophie von Linux

Wenn neue Benutzer Linux kennenlernen, haben sie oft falsche Vorstellungen und Erwartungen. Linux ist ein einzigartiges Betriebssystem, und es ist wichtig, daß Sie seine Philosophie und sein Design verstehen, damit Sie damit effektiv arbeiten können. Im Mittelpunkt der Philosophie von Linux steht ein Konzept, das heutzutage Open Source Software genannt wird.

Open Source ist ein Begriff für Software, deren Quellcode, also die interne Funktionsbeschreibung, für jeden zum freien Herunterladen, Verändern und Weiterverteilen bereitsteht. Software, die von der im letzten Abschnitt beschriebenen GNU GPL lizensiert wird, fällt in diese Kategorie, und natürlich auch eine Reihe anderer Software, die ähnliche, wenn auch nicht identische Lizenzen verwendet. Beispielsweise kann auch Software, die frei verändert werden darf, aber nicht die strengen Anforderungen an die Weitergabe hat wie die GPL, als Open Source Software angesehen werden.

Das sogenannte »Open Source-Entwicklungsmodell« ist ein Phänomen, das von der Free Software Foundation begonnen wurde und mit Linux populär wurde. Es handelt sich dabei um eine völlig andersartige Weise, Software zu produzieren, bei der jeder Aspekt der Entwicklung, der Fehlersuche, des Testens und Untersuchens jedem Interessierten offensteht. Anstatt sich auf ein einzelnes Unternehmen für die Entwicklung und Verwaltung einer Software zu verlassen, kann sich der Code bei Open Source frei und offen in einer Gemeinschaft von Entwicklern und Anwendern weiterentwickeln, die gute Software schaffen wollen und denen es nicht nur um den Profit geht.

O'Reilly & Associates hat ein Buch namens Open Sources veröffentlicht, das eine gute Einführung in dieses Entwicklungsmodell darstellt. Es handelt sich dabei um eine Sammlung von Essays über den Open Source-Prozeß, die von führenden Entwicklern (darunter Linus Torvalds und Richard Stallman) geschrieben und von Chris DiBona, Sam Ockman und Mark Stone herausgegeben wurden.

Open Source hat sich in der letzten Zeit starker Beachtung durch die Medien erfreut, und manche nennen dieses Phänomen die »nächste Welle« in der Softwareentwicklung, die die alten Verfahren hinwegfegen wird. Ob das wirklich passiert, bleibt abzuwarten, aber es hat schon einige ermutigende Ereignisse gegeben, die das nicht so ganz unwahrscheinlich machen. Beispielsweise hat die Netscape Corporation den Code für ihren Webbrowser für ein Open Source-Projekt namens Mozilla freigegeben, und auch Firmen wie Sun Microsystems, IBM und Apple haben Pläne angekündigt, bestimmte Produkte als Open Source zu veröffentlichen - in der Hoffnung, daß diese Produkte in einem von der Gemeinde vorangetriebenen Prozeß wachsen und gedeihen.

In kommerziellen Unix-Softwarehäusern unterliegt die gesamte Entwicklung eines Systems einer rigorosen Politik, die Qualitätskontrollen, Quellcode- und Versionskontrollen, Dokumentation und das Aufspüren und Beheben von Fehlern umfaßt. Die Entwickler dürfen nicht nach Lust und Laune Programmteile hinzufügen oder wichtige Passagen des Codes ändern. Alle Änderungen erfolgen als Reaktion auf einen Fehlerbericht und werden in einem System zur Überwachung des Quellcodes erfaßt, damit sie gegebenenfalls rückgängig gemacht werden können. Jeder Entwickler bekommt einen Teil oder Teile des Quellcodes zugewiesen, und nur dieser Entwickler darf diese Teile des Codes ändern.

Intern führt die Qualitätssicherung strenge Testverfahren mit jeder neuen Version des Betriebssystems durch (sogenannte »Regressionstests«) und meldet die gefundenen Fehler. Es liegt in der Verantwortung der Entwickler, die beobachteten Fehler zu beheben. Ein kompliziertes System statistischer Analysen wird eingesetzt, um sicherzustellen, daß ein bestimmter Prozentsatz der Fehler vor der Freigabe der nächsten Version behoben wird und daß das Betriebssystem insgesamt bestimmte Kriterien für eine neue Version erfüllt.

Insgesamt ist es ein sehr kompliziertes Verfahren, das die kommerziellen Unix-Entwickler anwenden, um ihren Code zu pflegen und zu verbessern - und das mit Recht. Die Firma braucht quantitative Sicherheit, daß die nächste Version des Betriebssystems freigegeben werden kann; daher die statistischen Analysen der Systemleistungen. Es ist eine große Aufgabe, ein kommerzielles Unix-Betriebssystem zu entwickeln; oft groß genug, um Hunderte (wenn nicht Tausende) von Programmierern, Testern, Dokumentaristen sowie Personal für die Verwaltung zu beschäftigen. Natürlich sind keine zwei kommerziellen Unix-Hersteller gleich, aber Sie haben einen allgemeinen Eindruck bekommen.

Bei Linux können Sie alles über organisierte Entwicklung, Systeme zur Quellcodeüberwachung, strukturierte Fehlerberichte und statistische Analysen vergessen. Linux ist ein Betriebssystem für Hacker Fußnoten 1 - und wird es wahrscheinlich immer bleiben.

Linux entstand in erster Linie im Internet als eine gemeinsame Anstrengung von Freiwilligen aus der ganzen Welt. Es gibt keine einzelne Instanz, die für die Entwicklung des Systems verantwortlich ist. Im wesentlichen kommunizieren die »Linuxer« über verschiedene Mailing-Listen und Webseiten miteinander. Dabei haben sich einige Konventionen herausgebildet: Zum Beispiel sollte jeder, der seinen Code in den »offiziellen« Kernel aufgenommen haben möchte, ihn an Linus Torvalds mailen. Linus wird den Code testen und in den Kernel einbinden (solange der Code keinen Schaden anrichtet und nicht gegen die Linux-Philosophie verstößt, ist es sehr wahrscheinlich, daß er aufgenommen wird).

Das System selbst ist so entworfen worden, daß Ergänzungen und neue Features jederzeit eingebunden werden können. Obwohl in der letzten Zeit die Zahl der Ergänzungen und kritischen Änderungen abgenommen hat, kann man sagen, daß etwa alle paar Wochen eine neue Version des Kernels freigegeben wird (manchmal auch häufiger). Das ist natürlich nur über den Daumen gepeilt; tatsächlich hängt das davon ab, wie viele Fehler behoben werden mußten, wieviel Feedback von den Benutzern kam, die Vorabversionen des Codes testen, und davon, wieviel Schlaf Linus diese Woche bekommen hat.

Geben Sie sich damit zufrieden, daß noch nicht jeder Fehler behoben ist und daß nicht alle Probleme zwischen zwei Versionen gelöst werden. Solange das System keine kritischen oder immer wieder auftauchenden Fehler zeigt, wird es als »stabil« betrachtet; außerdem gibt es ja neue Versionen. Die treibende Kraft hinter der Entwicklung von Linux ist nicht das Bemühen, perfekten und fehlerfreien Code zu produzieren; die treibende Kraft ist der Gedanke, ein freies Unix zu entwickeln. Linux ist ein System für Entwickler - mehr als für sonst jemanden.

Icon

Anhang A


Jeder, der neue Features oder Anwendungen in das System einbinden möchte, wird die Programme zunächst als »Alpha«-Code verbreiten - das ist eine Version zum Testen für jene mutigen und unerschrockenen Benutzer, die den ersten Code von Fehlern befreien möchten. Weil die Linuxer sich meist im Internet treffen, wird die Alpha-Software in der Regel auf einen oder mehrere der Linux-Webserver geladen (siehe Anhang A, Linux-Informationsquellen,), und es wird eine Nachricht an eine der Linux-Newsgruppen im Usenet geschickt, die erklärt, wie der Code bezogen und getestet werden kann. Benutzer, die die Alpha-Software herunterladen und testen, können dann ihre Ergebnisse, Korrekturen und Fragen an den Autor mailen.

Nachdem anfängliche Probleme im Alpha-Code behoben wurden, bekommt das Programm den »Beta«-Status, der als stabil, aber noch nicht komplett angesehen wird (das heißt, das Programm funktioniert, aber es sind möglicherweise noch nicht alle Features vorhanden). Ansonsten geht das Programm sofort in den »endgültigen« Status über, in dem die Software als komplett und fehlerfrei betrachtet wird. Wenn Code für den Kernel einmal komplett ist, kann der Entwickler Linus bitten, ihn in den Standard-Kernel aufzunehmen oder ihn als Option zum Kernel anzubieten.

Denken Sie daran, daß dies Konventionen sind, keine Regeln. Einige Leute vertrauen so sehr auf ihre Software, daß sie keine Alpha- oder Testversionen herausgeben. Jeder Entwickler muß selbst entscheiden, wie er dies handhaben möchte.

Und was ist mit den Regressionstests und dem rigorosen Qualitätssicherungsprozeß? Dieser wurde durch das Konzept »veröffentliche früh und veröffentliche oft« (»release early and release often«) ersetzt. Die Anwender sind die Beta-Tester, weil sie die Software in einer Vielzahl von Umgebungen und anspruchsvollen realen Anwendungen ausprobieren, die kaum eine Qualitätssicherungsgruppe in einer Softwarefirma so bieten kann. Eines der herausragendsten Merkmale dieses Entwicklungs- und Freigabemodells besteht darin, daß Fehler (und Sicherheitslöcher) oftmals innerhalb von Stunden gefunden, gemeldet und behoben werden - und nicht in Tagen oder Wochen.

Vielleicht wundern Sie sich, daß eine solche unstrukturierte Arbeitsweise von Freiwilligen, die programmieren und debuggen, überhaupt Ergebnisse vorweisen konnte. Es hat sich aber gezeigt, daß daraus eines der effizientesten und engagiertesten Projekte geworden ist, die je gestartet wurden. Der komplette Linux-Kernel wurde von Grund auf neu geschrieben, ohne auf irgendeinen herstellereigenen Code zurückzugreifen. Freiwillige haben enorm viel Arbeit in die Portierung aller möglichen freien Software nach Linux gesteckt. Programmbibliotheken wurden geschrieben und portiert, Dateisysteme entwickelt, und für viele weitverbreitete Geräte wurden Treiber geschrieben.

Die Linux-Software wird im allgemeinen in Form von Distributionen ausgeliefert. Eine Distribution ist ein Set von vorbereiteter Software, die zusammen ein komplettes System bildet. Es würde den meisten Benutzern sehr schwerfallen, ein System von Grund auf einzurichten, indem sie mit dem Kernel beginnen, die Hilfsprogramme hinzufügen und dann die benötigte Software von Hand installieren. Statt dessen gibt es eine Reihe von Distributionen, die alles enthalten, was Sie für die Installation und den Betrieb eines kompletten Systems brauchen. Dabei gibt es keine Standarddistribution, sondern viele verschiedene, die alle ihre Stärken und Schwächen haben. In diesem Buch beschreiben wir, wie die Distributionen von Red Hat, SuSE und Debian installiert werden, aber Sie sollten hier auch genug lernen, um mit jeder anderen Distribution klarzukommen.

Obwohl die Linux-Software komplett ist, werden Sie doch gewisse Unix-Kenntnisse benötigen, um ein komplettes System zu installieren und zu betreiben. Keine der Linux-Distributionen ist völlig ohne Fehler, deshalb werden Sie nach der Installation kleinere Probleme von Hand lösen müssen.
Hinweise für Unix-Neulinge

Installation und Betrieb eines Linux-Systems erfordern nicht besonders viel an Unix-Kenntnissen. In der Tat haben viele Unix-Neulinge mit Erfolg ein Linux-System installiert. Es lohnt sich, diesen Vorgang kennenzulernen, aber es kann auch zu einer frustrierenden Erfahrung werden. Wenn Sie Glück haben, werden Sie auch ohne Unix-Wissen Ihr Linux-System installieren und damit arbeiten können. Sobald Sie allerdings die komplexeren Aufgaben beim Betrieb eines Linux-Systems angehen möchten - die Installation neuer Software, Neukompilierung des Kernels und ähnliches -, werden Sie auf jeden Fall einige Unix-Kenntnisse brauchen. (Beachten Sie aber auch, daß viele Linux-Distributionen genauso einfach zu installieren und konfigurieren sind wie Windows 98, und eindeutig einfacher als Windows NT.)

Icon

Kapitel 4
Kapitel 5


Glücklicherweise werden Sie bei der Arbeit mit Linux die notwendigen Unix-Kenntnisse erlangen, um solche Aufgaben zu bewältigen. Dieses Buch enthält einiges an Informationen, die Ihnen den Start erleichtern werden. Kapitel 4, Grundlegende Unix-Befehle und -Konzepte, vermittelt Unix-Grundlagen, und Kapitel 5, Grundlagen der Systemverwaltung, behandelt die Systemverwaltung unter Linux. Vielleicht möchten Sie diese Kapitel lesen, bevor Sie mit der Installation beginnen - die Informationen in diesen Abschnitten werden sich als nützlich erweisen, falls Sie auf Schwierigkeiten stoßen.

Niemand sollte erwarten, daß er oder sie über Nacht vom Unix-Neuling zu einem Unix-Systemverwalter wird. Keine Implementierung von Unix läuft ohne Probleme und ohne Wartung. Sie müssen auf die Wegstrecke vorbereitet sein, die vor Ihnen liegt. Falls Unix für Sie neu ist, könnten Sie sonst vom System ziemlich frustriert werden.
Hinweise für Unix-Gurus

Auch Leute mit jahrelanger Erfahrung in der Programmierung und Systemverwaltung unter Unix brauchen eventuell Hilfe, wenn sie Linux installieren wollen. Es gibt Aspekte des Systems, mit denen sich auch Unix-Freaks beschäftigen müssen, bevor sie richtig loslegen können. Linux ist nämlich kein kommerzielles Unix-System. Es versucht nicht, dieselben Standards einzuhalten, die Sie vielleicht von anderen Unix-Systemen her kennen, aber in gewissem Sinne definiert Linux die Unix-Welt neu, indem es ein besseres Preis-Leistungs-Verhältnis als die anderen Unix-Varianten bietet. Um es genauer zu sagen: Ein stabiles System ist ein wichtiger Gesichtspunkt bei der Entwicklung von Linux, aber es ist nicht der einzige Gesichtspunkt.

Wichtiger ist, vielleicht, die Funktionalität. In vielen Fällen wird neuer Code in den Kernel aufgenommen, obwohl er noch mit Fehlern behaftet ist und noch nicht alle Funktionen enthält. Man geht davon aus, daß es wichtiger ist, Programmcode zum Testen durch die Benutzer freizugeben, als mit der Freigabe zu warten, bis der Code »komplett« ist. In fast allen Open Source-Projekten gibt es eine Alpha-Version, bevor die Tests abgeschlossen sind. Dadurch hat die Open Source-Gemeinde insgesamt die Möglichkeit, mit dem Code zu arbeiten, ihn zu testen und weiterzuentwickeln, während diejenigen, denen der Alpha-Code schon »gut genug« ist, ihn bereits einsetzen können. Kommerzielle Unix-Hersteller geben ihre Software nur sehr selten (wenn überhaupt je) auf diese Art und Weise frei.

Falls Sie schon jahrelang ein Unix-Systemverwalter gewesen sind und alle kommerziellen Implementierungen von Unix kennengelernt haben, müssen Sie sich an Linux vielleicht erst gewöhnen. Etwa alle paar Monate erscheint ein neuer Kernel. Ständig wird neue Software freigegeben. Ihr System kann heute auf dem neuesten Stand sein, und schon morgen wird man es als veraltet betrachten.

Wie soll man angesichts dieser Dynamik in der Linux-Welt nicht den Anschluß verlieren? Meistens genügt es, wenn man Updates in kleinen Schritten vornimmt, indem man nur diejenigen Teile des Systems erneuert, die ein Update haben müssen. Wenn Sie beispielsweise nie mit Emacs arbeiten, gibt es kaum einen Grund, jede neue Version von Emacs auf Ihrem System zu installieren. Selbst wenn Sie ein passionierter Benutzer von Emacs sind, gibt es in der Regel keinen Grund für ein Update - es sei denn, Sie vermissen bestimmte Möglichkeiten, die in einer neuen Version enthalten sind. Es gibt kaum einen Grund, immer die neueste Version einer Software zu installieren.

Wir hoffen, daß Linux Ihre Erwartungen an ein »selbstgestricktes« Unix-System erfüllen oder sogar übertreffen kann. In seinem Herzen trägt Linux den Geist freier Software, den Geist von ständiger Entwicklung und stetem Wachstum. Linux-Benutzer legen mehr Wert auf Erweiterung als auf Stabilität, und das ist für viele Leute, insbesondere wenn sie aus der Welt des kommerziellen Unix stammen, schwer verständlich. Sie dürfen nicht erwarten, daß Linux perfekt ist; nichts in der Welt der freien Software ist das (in den anderen Welten allerdings auch nicht). Trotzdem glauben wir, daß Linux ebenso vollständig und nützlich ist wie jede andere Implementierung von Unix.
Fußnoten 1

Mit »Hacker« meinen wir einen Programmierer, der wie im Fieberwahn sein Ziel verfolgt; jemanden, der Spaß daran hat, Computer zu erforschen und ganz allgemein interessante Dinge mit ihnen anzustellen. Das deckt sich nicht mit dem allgemeinen Verständnis von »Hackern« als Leute, die mit Hilfe des Computers Schaden anrichten.

Keine Kommentare: