Wo sollten Config-Daten liegen?
with tags PC Quählkot Softwareschrott Technik -Viele Systeme haben unterschiedliche Konzepte entwickelt, wo welches Programm seine Konfigurationsdaten ablegen sollte. In diesem Post will ich kurz einige verbreitete Möglichkeiten vergleichen und Vor- bzw. Nachteile der verschiedenen Möglichkeiten gegenüberstellen.
Das DOS-"System"
Das Problem mit MS-DOS und verwandten Systemen ist eigentlich dass sie kein System zur Ablage der Konfiguration hatten.
Die meisten Programme haben ihre Daten einfach in ihr eigenes Verzeichnis geworfen, Datentyp war auch jedem egal also war es teilweise ein recht großes Durcheinander.
Allerdings hatte man damit nicht halb so viele Probleme wie man auf den ersten Blick meinen sollte. Woher auch? Zu DOS-Zeiten hatte man Festplatten von maximal ein paar hundert MB Speichervolumen, viele Programme liefen sogar generell von ihrer eigenen Diskette (hatten also ihr eigenes Dateisystem auf dem so gut wie nichts anderes lag).
Die System-Konfiguration erstreckte sich ebenfalls auf einige wenige Dateien, von denen die meisten im Wurzelverzeichnis der Bootpartition lagen und verschiedene Nutzerprofile gab es schlicht nicht.
Es gab also kaum die Möglichkeit den Überblick zu verlieren.
Win1/2/3
Die ersten Versionen von Windows führten ein neues System ein. Soweit möglich sollte jedes Programm seine Config als INI-Datei ablegen.
Leider krankte das Ganze etwas an der nötigen Rückwärtskompatibilität. Eine Alternative war ja auch nicht gerade einfach möglich, Windows war nur ein grafischer Aufsatz auf DOS und DOS-Programme wurden täglich verwendet.
Weiterhin stellte es sich als problematisch heraus dass viele Programme ihre Daten im Systemverzeichnis ablegten. Ab ein paar hundert Dateien in einem Verzeichnis wird es halt schwer den Überblick zu bewahren. Dass dieses Verzeichnis das selbe war, in dem wichtige Systemdateien lagern machte die Situation auch nicht unbedingt besser.
Win95/98/ME
Nach dem ganzen Durcheinander mit vielen elendig langen, flachen INI-Dateien wollte Microsoft ein neues System einführen. Diesmal handelte es sich um eine zentrale Konfigurations-Datenbank in der jedes Programm seine Daten ablegen sollte.
Grundsätzlich war die Idee nicht ganz schlecht, richtig aufgebaut hätte es zu einem ziemlich schnellen System werden können, in dem alles an einer Stelle in einer gut geordneten Form liegt.
Aber: Microsoft failed again!
Die Struktur war ein reines Fiasko, viele Programme legten ihre Daten an mehreren Stellen ab, kryptische Reg-Keys machten das Ganze grauenvoll lesbar und überhaupt bildeten sich Zweige in denen hunderte Einstellungen einfach flach nebeneinander geworfen wurden.
Zusätzlich musste natürlich die gleiche Datei für alle Nutzer herhalten, zwar gab es eine primitive Rechteverwaltung aber wenn man z.B. die Daten eines Nutzers von einem anderem Rechner importieren wollte, konnte man sich höchstens über Im-/Exporte als ein INI-ähnliches Format etwas zurechtbasteln (.reg-Dateien).
Auch Backupmöglichkeiten waren etwas sehr rar bis praktisch nicht sinnvoll zu realisieren.
WinXP/2000/Vista
Nach bereits 2 Fehlschlägen bezüglich Konfigurationssystemen versuchte es Microsoft bei neueren Betriebssystemen nun mit dem eigentlich offensichtlichen: Benutzerspezifische Konfigurationsverzeichnisse in denen jedes Programm seine Daten als Unterverzichnis ablegen sollte
Leider hat auch hier Microsoft wieder eine eigentlich gute Idee durch eine miese Realisierung beeinträchtigt. So lassen sich die Konfig-Verzeichnisse schlecht bis überhaupt nicht von der Systempartition auf ein anderes Laufwerk verschieben und natürlich landen noch viele Daten in diesen Verzeichnissen die dort eigentlich überhaupt nichts zu suchen hätten wenn man das System bis zum Ende gedacht hätte.
Die Anwendungsunabhängigen Daten ("Eigene Dateien") des Benutzers hingegen lassen sich recht einfach verschieben, was sich Microsoft dabei gedacht hat werden wir wohl nie erfahren.
Natürlich hat auch hier Windows wieder mit vielen Altlasten zu kämpfen. So gibt es jetzt Programme die gerne auf die System.ini/Windows.ini (Windows 3.11) zugreifen wollen, andere schreiben auf die Registry und wieder andere wollen die Daten im dafür gedachten Verzeichniss unterbringen. Wirklich übersichtlich ist dies nicht. (Auch im Programmverzeichnis landen oft noch Konfigurationsdaten, dies ist zwar inzwischen selbst unter Windows verpöhnt und wird oft vie Rechteverteilung erschwert, generell verboten ist es dennoch nicht.)
USB-Stick-Software
Software die speziell für USB-Sticks und ähnliche Geräte zusammengestellt ("Stickware") wurde geht bereits heute auch unter Windows alternative Wege. Je nach Distribution reicht dies vom einfachen Ablegen der Konfiguration im Anwendungsverzeichnis bis zu einem gerätespezifischen Konfigurationsverzeichniss für sämmtliche Programme.
Ursprünglich eigentlich nur dafür gedacht einzelne Programme portabel zwischen mehreren PCs bewegen zu können, neigen diese Anwendungen in letzter Zeit dazu sich auch für den täglichen Gebrauch auf einem einzigem PC zu verbreiten.
Vorteile dieser Systeme liegen vor allem in der einfachen Portierbarkeit und den guten Backupfunktionen. Man muss schlicht nicht ewig suchen um ein Programm mit all seinen Einstellungen auf eine neue Windows-Installation zu übertragen. Man kopiert ein einziges Verzeichniss für den Nutzer und ist fertig.
Das einzige Problem dieses Systemes liegt wohl darin dass für jeden Nutzer jedes Programm meist als gesonderte Version vorliegt. Zentrale Aktualisierungen bzw. Versionsverwaltung macht dies nahezu unmöglich, auch wirkt es sich sicherlich nicht sonderlich positiv auf den Speicherverbrauch aus. (Was aber auch heutzutage nichtmehr so wichtig ist wie früher.)
Unix/Linux
Unix verwendet seit vielen Jahren bereits ein relativ ausgereiftes System für die Konfiguration. Grundsätzlich besteht es aus 2 Teilen, der Systemkonfiguration und den Nutzerspezifischen Daten.
Beides liegt in streng getrennten Verzeichnissen und nur als Administrator darf man etwas an Daten ändern die andere Nutzer betreffen könnten. Programme DÜRFEN rein grundsätzlich nicht ihre Daten ablegen wo sie gerade lustig sind, welche Verzeichnisse sie beschreiben dürfen hängt immer vom Nutzer ab.
Normalerweise bedeutet dass, dass man als root grundsätzliche Einstellungen vornehmen darf, als Normaler Nutzer jedoch nur persönliche Einstellungen in seinem privaten Homeverzeichnis ~/ ablegen darf.
Ausführbare Programme lagern ebenfalls in einem Verzeichniss auf das normale Nutzer keinesfalls Schreibrechte haben sollten.
Leider krankt auch dieses System heutzutage etwas daran dass zu seiner Entwicklung nicht vorhergesehen wurde welche Unmengen an Programmen heute auf normalen Rechnern parallel von einzellnen Nutzern verwendet werden.
So neigt auch die Ablage sämtlicher Konfigurationsdateien im Homeverzeichniss etwas zur unübersichtlichkeit. Dass diese Daten meist durch vorranstellen eines Punktes im Dateinamen versteckt werden lindert das Problem etwas, macht es aber nicht komplett wett.
Besser wäre es, hätte man eine (meinentwegen distributionsspezifische) KonfigurationsSTRUKTUR in einem speziellen Unterverzeichniss von ~/. Allerdings bewegen sich mehrere große Ansammlungen von Programmen langsam in diese Richtung (z.B. .gnome), was zumindest für die Zukunft auf Besserung hoffen lässt.
Schlussfolgerungen
Das letzte Wort bezüglich dieser Problematik ist sicher noch nicht gesprochen. Microsoft wird sicher noch einige Jahre nach einer sinnvollen Lösung suchen und dabei weiterhin ziemlich offensichtlich die lange bei UNIX bestehende und gut funktionierende Version ignorieren. (Frei nach: "Those who don't understand unix are doomed to reinvent it poorly.")
Durch "Stickware" und die damit zusammenhängende Verwendungsart von privaten Daten auf mobilen Datenträgern ist etwas frischer Wind in die ganze Sachlage gekommen, eventuell fällt ja auch auf dieser Basis noch irgendwann jemandem eine ultimative Lösung ein.
Auch unter Unix zeigen sich nach vielen Jahren die ersten Veränderungen. Wohin die Reise geht kann man aber auch dort noch sehr schwer abschätzen.
Wichtig für neue Entwürfe sollte meiner Meinung nach die Frage sein inwiefern sich der Überblick für den Nutzer erhalten lässt. Auch die Frage nach dem Format, in dem die Konfiguration schlussendlich abgelegt wird, ist sicherlich von zentraler Bedeutung. Dies werde ich aber in einem seperatem Post behandeln.
Ich bedanke mich also für eure Aufmerksamkeit.