26.2.2009

OpenDoc, PowerPC, NeXT, Cocoa - Apple und kein Ende (2)

Cocoa ist letztlich die Portierung des NeXT-Betriebssystems aus der Mitte der 90er Jahre auf den Macintosh. Der NeXT betrat damals komplettes Neuland und spielte technologisch ganz weit vorne: das GUI[1] ist objektorientiert und basiert auf einem Modell-View-Controller-Konzept, wie es sich heute in sehr ähnlicher Form in zahlreichen Frameworks durchgesetzt und bewährt hat. Dabei ist es in Objectiv-C implementiert - einer Variante von C++, die NeXT eigens entwickelt hatte, die aber heute fremdartig und merkwürdig wirkt.

Die zugrunde liegende Idee ist eigentlich bestechend, basiert sie doch auf „Late-Binding” der Klassenhierarchien, und nicht auf statischem Linken, wie in C++. Dadurch wird es möglich, noch zur Laufzeit Klassen nachzuladen, die von jenen des Betriebssystems abgeleitet werden (Stichworte: „Inheritance” und „Polymorphismus”, wenn man zu dem Thema googeln möchte). Das machte in einer Zeit beschränkter Ressourcen großen Sinn, ist aber heute letztlich überflüssig und verlangt viel Aufwand, um ein Problem zu lösen, das sich längst wohlgefällig aufgelöst hat.

Auf dieses System also setzt Apple für die Zukunft - und völlig unsinnig ist das natürlich gar nicht, hat man doch über mehr als zehn Jahre mit der Carbon-API all jenen Entwicklern eine Brücke gebaut, die ihre für OS9 geschrieben Applikationen einfach nur neu linken mußten, um auch unter OSX zu laufen[2]. Trotzdem ist es natürlich ein gewisser Schock, wenn man vor solche Entscheidungen gestellt wird und irgendwie reagieren muß. Noch ärgerlicher wird es, wenn man feststellt, daß man selbst die Konzepte hinter dem eigenen Framework gehörig durchschütteln muß, um weiterhin eine gemeinsame Basis für Mac wie PC zur Verfügung zu haben. Richtig sauer wird man dann, wenn die Anpassung monatelang Ressourcen bindet[3], die dringend an anderer Stelle benötigt würden, weil sich Probleme ergeben, mit denen man nicht gerechnet hatte - vor allem aber, weil wieder und wieder Bugs auftauchen, von denen man sich Jahre zuvor endlich befreit hatte, und die jetzt auf beiden Platformen wieder zuschlagen: die falschen Fenster bekommen den Keyboard-Focus, Doppelklick funktioniert in bestimmten Situationen nicht, Menu-Items werden ausgegraut, obwohl sie verfügbar sein müßten, etc. pp. - die ganze Liga von Problemen halt, die in den 90ern immer wieder auftauchten und eigentlich seit Jahren endlich Geschichte waren.

Von einer extrem nervigen Phase des Bugfixing abgesehen, hat mir eine Geschichte dann den Rest gegeben, die eigentlich nur ein schmales, trotzdem in der Konsequenz für die User mehr als ärgerliches Problem bedeutet: für bestimmte Fonts ist der Fontmanager von Cocoa nicht in der Lage, kursive oder fette Schrift darzustellen, was unter Carbon kein Problem war. - Das bedeutet, daß die Fonts in den Noten von alten Projekten anders[4] dargestellt werden als in Cubase 4.x - und das fällt natürlich auf uns (in diesem Fall sogar ganz konkret auf mich selbst) zurück. Dabei ist das aber ganz klar ein Cocoa-Problem, für das es von unserer Seite keine Lösung gibt - dennoch muß man (ich, gelegentlich) das den Usern erst einmal überzeugend erklären.

  1. [1] Ähnliches gilt wohl auch für andere Schichten - aber ich bin da kein Experte.
  2. [2] So lautet zumindest die Theorie.
  3. [3] Ich habe mit dieser ganzen Portierungsarie - glücklicherweise! - nichts zu tun gehabt, kenne das Gewühle aber aus vergangen Jahren nur allzu gut.
  4. [4] Ein wenig anders zwar nur - aber für die notorisch perfektionistisch eingestellten Notisten ist das schon eine Katastrophe, bedeutet es doch, daß sie Seite für Seite all ihrer Partituren akribisch auf Fehler durchsuchen müssen - bitte: das ist keineswegs ironisch/spöttisch gemeint, sondern benennt ein ernstes Problem.

(Kommentarfunktion z.Zt. deaktiviert.)