- Lucy: "Ha! You got your shoes on the wrong feet again!"
Linus: "I don't have time to worry about the non-essentials! These are my shoes and these are my feet.. Shoes are on feet... That's all I care about!" - -- Peanuts by Charles M. Schulz, 6. März 1957
Normalerweise pflege ich im Bereich "Computer" eher einen konservativen Ansatz: nichts einsetzen, was sich nicht schon wenigstens woanders bewährt hat. Wenn ich programmiere achte ich im Allgemeinen auf eine breite Einsetzbarkeit meiner digitalen Ergüsse. Die meisten meiner Programme laufen auf vielen Betriebssystemen. Um dieses Ziel zu erreichen setze ich das
Qt-Framework ein, welches das Schreiben von Multiplattform-Applikationen sehr stark erleichtert.
Mich überzeugt ein Programm erst dann, wenn man nicht erst noch einen Tag oder länger einen Rechner installieren muss, nur um überhaupt mit dem Programmieren anfangen zu können. Genauso will ich aber auch, dass man für meine Programme auch nicht viel machen muss, um sie laufen zu lassen. Deshalb habe ich mir mal einen gebrauchen Mac Mini gekauft, damit ich meine Programme bereits installationsfertig auch für diese Plattform anbieten kann. Für Windows gibt es sowieso mehr als genug Möglichkeiten, seine Software benutzerfreundlich auszuliefern. Das Standard-Installationsformat für Unix-Derivate die nichts mit Linux zu tun haben, ist sowieso der Quellcode.
Bleibt noch Linux. Da wird es kompliziert. Da gibt es zum Beispiel verschiedene Paketverwaltungen, was aber nicht wirklich ein Problem darstellt, da es dafür Konvertierungsprogramme gibt. Problematischer wird es zum Beispiel bei der verwendeten Codebasis, da möchte ich mal wieder auf das eingangs erwähnte Qt zurück kommen. Das wird kontinuierlich weiterentwickelt, bleibt aber dabei innerhalb der Version 4.x abwärtskompatibel, so läuft ein Programm, welches nur Funktionen von 4.3 verwendet auch unter 4.4 und 4.5. Andersherum geht das natürlich nicht.
Im Moment ist die Linux-Distribution Debian der gemeinsame Nenner, den ich mir rausgesucht habe. Debian hat den Ruf extrem stabil zu sein, was unter anderem daran liegt, dass relativ Programmpakete relativ früh eingefroren werden. Eingefroren bedeutet, dass nur noch Fehlerkorrekturen einfließen, aber nicht mehr auf neuere Versionen gegangen wird. So kann man quasi sagen: wenn ein Programm unter Debian funktioniert, sollte es auch auf den meisten anderen Linux-Distributionen funktionieren.
Das wird nur dann ein Problem, wenn man auf einmal neuere Features verwenden möchte. Ich habe nun gerade in Qt 4.6 etwas gefunden, was ich gerne einsetzen möchte: die integrierte
Statemachine-API. Nun stellt sich die Frage, wie ich nun den anstehenden Spagat bewerkstelligen soll: einerseits möchte ich gerne, dass mein Programm noch unter Debian läuft, andererseits soll es aber auch einige der Funktionen von Qt 4.6 verwenden. Ein Backport der Funktionen als eine Zusatzbibliothek lässt sich mit einem vertretbaren Aufwand nicht realisieren, wie ein Versuch meinerseits gezeigt hat. Es wurden neue Events für die Statemachine eingefügt, die ältere Qt-Versionen nicht kennen.
Nun überlege ich, wie ich das Problem mit der "zu neuen" Qt-Version lösen soll. Unter Windows und Mac OS X liefere ich die benötigten Qt Bibliotheken sowieso mit meinen Applikationen aus, so dass dort das Problem nicht auftritt. Nur fällt mir keine "geschickte" Lösung für dieses Problem unter Linux ein. Im Moment tendiere ich dazu, als Übergangslösung unter /usr/lib/<programmname> einfach die von mir benötigten Qt-Bibliotheken zu installieren, bis die Linux-Distributionen mit Qt 4.6 nachgezogen haben. Nicht der schönste Ansatz, aber wohl derjenige, der am Besten funktionieren wird, wenn ein statisches Linken nicht möglich ist.
Kommentare