24 Juni 2006

Die Invasion hat begonnen, wir müssen was tun

Das Linux Windows technisch in vielen Bereichen weit überlegen ist, dass habe ich ja jetzt mehrfach beschrieben. Aber trotz allem gibt es einige wenige, aber entscheidende Punkte, die die Windows-Welt davon abhält Linux zumindest mal zu probieren. In meinem Beitrag Teufelskreis habe ich ja schon einiges darüber geschrieben.

Sobal Vista auf dem Markt ist und damit DRM und Trusted Computing der Standard wird (was sich ja glücklicherweise durch Microsofts eigene Unfähigkeit verzögert hat), werden die Leute "wach" werden, dann könnte es allerdings schon zu spät sein! Microsoft will uns mit Vista die Administrationsrechte unserer Hardware entziehen! Wir sollen dann bedingungslos akzeptieren, wovon Microsoft denkt, das es gut für uns ist. Ich würde und werde mir das niemals vorgeben lassen und spätestens bei Vista wäre bei mir entgültig Schluß mit Windows gewesen. Ich bin davon überzeugt, das viele, sobald sie "wach" geworden sind auch dieser Meinung sein werden. Sobald dieser Tag gekommen ist, werden sie nach einer Alternative schreien und wir als Linux-Community haben dann die Gelegenheit ihnen eine Alternative zu bieten, die Windows in allen Bereichen überlegen ist. Bis es aber soweit ist muss Linux noch um einige Features erweitert werden!

Das größte Manko für die meißten sind die Spiele. Hier benötigen wir eine Schnittstelle, die in der Lage ist Direct-X ohne große Emulationsverluste unter Linux darzustellen. Damit wäre es für Spieleentwickler sehr leicht Spiele zu entwickeln, die sowohl unter Windows, als auch unter Linux laufen und Linux-Anwender könnten ohne Probleme Windows-Spiele einfach unter Linux spielen. Ein, leider kostenflichtiges, Programm vermag dies heute schon eingeschränkt zu leisten: cedega

Das nächste große Manko ist die Hardware-Unterstützung. Es wäre schön, wenn es für den Linux-Kernel eine Schnittstelle gäbe, die mit Windows-Treibern zurecht käme. Dann könnten viele Produkte unter Linux verwendet werden, die bisher nur unter Windows liefen und die Hersteller bräuchten sich nicht darum zu kümmern. Das beste Beispiel sind hierfür die Canon-Drucker der neueren Generation (Pixma). Für den NTFS-write-Support ist sowas, soweit ich weiß, schonmal gemacht worden (allerdings mit schlechter Performance)

Der Windows-User von heute erwartet für jedes Problem, was er lösen will eine grafische Oberfläche. Mittlerweile gibt es für Linux sehr viele grafische Frontends zu Kommandozeilen-Programmen, die sich wirklich sehen lassen können, aber in einigen Bereichen muss noch einiges passieren! Bestes Beispiel ist das DVD-Authoring. Das beste Programm, was mir jetzt spontan einfällt (und was ich auch benutze) ist Q-DVD-Author. Es ist zwar sehr gut, aber es kann mit Windows-Software, mit der man eigene DVDs erstellen kann, nicht mithalten.

Linux braucht einen DVD-Player, der eine offizielle Lizenz zum Abspielen hat, damit sich nicht jeder, der unter Linux DVDs guckt strafbar macht. Es müsste sich hierfür irgendein Hersteller finden, der seinen Windows-DVD-Player unter Linux anbietet (in diesem Fall kostenpflichtig).

Zu guter letzt muss Wine bzw. Crossover-Office noch um einiges verbessert werden, damit auch exotische Software problemlos emuliert werden kann.

Sobald diese Probleme, die ja leider nicht gerade klein sind, behoben werden können, ist Linux aber immer noch nicht reif um auf unerfahrene Benutzer losgelassen zu werden. Es müsste eine Distribution geben, die extra für solche Benutzer gemacht ist. Diese Distribution soll die Wahlfreiheit der Benutzer stark einschränken und ein einheitliches Desktop mit einem einheitlichen Look and Feel erzeugen. Die Distribution soll dem Ein- bzw. Umsteiger als Linux-Starthilfe dienen, in der er sich noch nicht so viel mit den Innereien des Betriebssystems auseinandersetzen muss, sondern, wie bei Windows, einfach drauf los arbeiten kann. Sobald der Nutzer sich gut genug zurecht findet, soll er die Möglichkeit haben seine eingeschränkte Distribution zu erweitern um die volle Stärke des "großen Bruders" zu nutzen. Als großer Bruder ist wahrscheinlich Debian am besten geeignet. Ich kann mich erinnern, dass Lothar vor geraumer Zeit eine Distribution vorgestellt hat, die vermutlich bereits sowas ähnliches leistet, ich weiss aber nicht mehr genau, welche das war.

Zu guter Letzt möchte ich noch sagen, dass jeder über die Gefahren von Trusted Computing nachdenken sollte. Wollt ihr Euch wirklich vorschreiben lassen, was gut für Euch ist und was nicht? Ich glaube es liegt in der menschlichen Natur an diesem Punkt zu rebellieren. Wenn Ihr soweit seid: Linux is waiting for you!

19 Juni 2006

Pakete verwalten

Ich habe schon sehr oft gelesen, dass Linux unter anderem deswegen nicht den Weg aufs Desktop findet, weil die Installation von neuer Software sehr kompliziert wäre. Auf den ersten Blick ist sie das auch, aber wenn man genauer hinsieht, verbirgt sich unter der "Kompliziertheit" ein genial ausgeklügeltes System, welches sicher stellt, dass bei der Installation von Programm A auch alle anderen Programme installliert werden, die für den Betrieb von A erforderlich sind.

Zunächst möchte ich aber auf die chaotischen Zustände von Windows eingehen. Ein Windows-System hat den Anspruch sehr benutzerfreudlich zu sein und eben den Benutzer nicht mit unnötigen System-Details zu belasten. Neben vielen Dingen, die ich früher schon beschrieben habe, gehört dazu auch die Möglichkeit Software "einfach so" zu installieren. So schön dies auf den ersten Blick auch ist, so furchtbar ist es, wenn man es sich genauer ansieht. Die Setup-Programme dürfen quasi machen, was sie wollen. Sie dürfen für alle Benutzer funktionieren, nur für den aktuellen Benutzer, oder aber nur für den Administrator. Letzteres ist natürlich sehr schlecht, wenn man die Software als eingeschränkter Benutzer verwenden möchte. Windows stellt zwar eine Funktion zur verfügung, die zumindest scheinbar in der Lage ist, installierte Programme zu entfernen. Es handelt sich hierbei aber lediglich um eine Darstellung von Programmen, die sich in die Registrierungsdatenbank eingetragen haben, mit einem Link auf das Programm, welches die Software weieder entfernen kann oder es ermöglicht zusätzliche Funktionen nachzuinstallieren. Die Programme können sich in diese Datenbank eintragen, müssen es aber nicht (wie es manche Windows-Updates zum Teil auch nicht machen). Möchte man nun ein spezielles Programm installieren, dann muss man zusätzlich wissen, welche anderen Programme erforderlich sind, damit es funktioniert.

Ein triviales Beispiel wäre ein Plugin für ein Programm, wobei das Programm nicht installiert ist. Gute Programme haben die Abhängigkeitsbehandlung in der Installationsroutine für das Plugin eingebaut. Es wird bei der Installation geprüft, ob die Software installiert ist, oder nicht. Wie das funktioniert, und welche Bedingungen erfüllt sein müssen um zu entscheiden, ob ein Programm installiert ist, oder nicht, ist nicht klar und auch nirgendwo einheitlich definiert. Schlecht programmierte Plugin-Installer scuhen entweder garnicht nach der benötigten Software oder finden sie nicht, obwohl sie installiert ist.

Ganz anders sieht es hier bei Linux aus. Jede Distribution teilt die Software, die installiert werden kann, in mehr oder weniger große Pakete ein und benutzt einen sogenannten Paketverwalter, um die Abhängigkeiten der Pakete zueinander zu ermitteln. Möchte ich jetzt z.B. Gimp installieren, kommt es, auch wenn ich nur mit KDE arbeite, nicht ohne die Gnome-Kernbibliotheken und die GTK-Bibliotheken aus. Einem unerfahrenen Benutzer kann man aber nicht zumuten das zu wissen, und genau hier faltet der Paketverwalter einen Teil seiner Stärke aus. Er prüft, welche Pakete erforderlich sind, um Gimp laufen zu lassen, prüft, welche davon schon installiert sind (das merkt sich der Paketverwalter selbstverständlich auch immer) und installiert die fehlenden Pakete automatisch mit (sinnvollerweise bevor das eigentliche Paket installiert wird). Die meißten Paketverwalter sind auch in der Lage, bei der Deinstallation eines Pakets, alle Pakete die davon abhängig sind automatisch mit zu deinstallieren. Wenn ich jetzt z.B. die Gnome-Kernbibliotheken lösche und Gimp installiert habe, wird Gimp auch deinstalliert.
Der gängiste Paketverwalter ist RPM. Er wurde ursprünglich von Red-Hat benutzt und wird heutzutage auch von vielen anderen Distributionen verwendet. Der Paketmanager von Debian heißt "APT" und wird von allen Debian-basierenden Systemen verwendet (unter anderem Knoppix). Diese beiden Systeme beherrschen die von mir beschriebene Funktionsweise sehr vorbildlich.
Der Paket-Verwalter von Gentoo ("portage") setzt da aber noch einen drauf! Gentoo zeichnet sich durch seine enorme Anpassungsfähigkeit aus. Alle Programme werden aus den Quelltexten übersetzt und somit gibt es theoretisch die Möglichkeit Programmteile, die auf nicht erwünschten Programmen basieren, einfach weg zu lassen, und somit indirekten Einfluss auf die Abhängigkeiten auszuüben. Praktisch umgesetzt wird dies durch die sogenannte "USE-Variable". Hier kann der Benutzer (möglichst bei der Erstinstallation) genau angeben, welche Features die Programme haben sollen, und welche nicht. Möchte ich ein reines KDE-System haben, dann setzte ich in der Use-Variable einfach "USE=... -gnome +kde ..." und alle Pakete, die sowohl eine KDE, als auch eine Gnome-Unterstützung bieten, werden nur mit der KDE-Unterstützung kompiliert. Die resultierenden Programme (Binaries) werden so sehr viel kompakter als bei den "herkömmlichen" Distributionen. Kleinere Binaries bedeuten auch eine schnellere Ausführung, woher Gentoo übrigens seinen Namen hat (Gentoo = schnelle Pinguin-Art).

Einer der Hauptvorteile der Paketverwalter ist die Fähigkeit das System mit nur einem einzigen Befehl auf den neuesten Stand zu bringen (bei Gentoo braucht man zwei). Es wird für jedes Paket geprüft, ob ein Update verfügbar ist, und alle veralteten Programme werden automatisch aktualisiert. Eine solche Funktionalität sucht man bei Windows vergeblich und es wird sie auch nie dort geben (wenn man mal vom Windows-Update absieht, welches aber nur für Windows, aber nicht für die Anwendungsprogramme funktioniert)!

Alle Paketverwalter haben allerdings einen Nachteil wenn es um die Installation von Software geht, die nicht in der Datenbank der installierbaren Pakete steht. Aber bei allen gibt es die Möglichkeit die Datenbanken zu manipulieren und somit auch Software zu installieren, die nicht in der Distribution enthalten sind. Möchte man das nicht, kann man die Software auch "direkt" installieren, verliert aber damit die Vorteile der Paketverwaltung.