Der Idealfall sieht für mich doch so aus: Man hat verschiedene Desktop-
OS (sagen wir mal Linux, MacOS und Windows), die man alle mit ein und dem selben
GUI versorgen kann. Und man hat verschiedene Mobile
OS (z.B. Android, Maemo, iOS und Windows RT), für die hat man ein Mobile
GUI.
Dein 'Idealfall' ist das schlimmste, was man seinen Usern zumuten kann.
Als Mac-User will ich, das meine Anwendung die Features von
OS X 'richtig' adaptiert, so wie ich es von allen Anwendungen auf meinem Mac auch gewohnt bin.
Als Windows-User will ich, da meine Anwendung die Features von Windows richtig adaptiert, so wie ich es von den anderen Anwendungen auf meinem Windows-System auch gewohnt bin.
Von Linux kann ich hier jetzt nicht reden, weil ich das nicht einsetze.
Aber aus dem Grund baut z.B. Atlassian auch grad SourceTree für Windows als native Windows-Anwendung (damit meine ich jetzt .NET 4.5 und WPF) für Windows richtig neu, und portiert nicht einfach nur die Mac-Anwendung 1:1. Untendrunter wird natürlich viel Code unter der Haube geshared werden.
Der Idealfall sieht also so aus:
Die Logik steckt in einem Teil der Anwendung, die man über die Plattformen hinweg teilen kann. Das
GUI ist im Idealfall aber auf jede Plattform extra zugeschnitten und optimiert und nutzt die jeweiligen Features des
OS so, dass sich der User dort heimisch fühlt.
Deswegen ist das one-size-fits-it-all (und damit FM) der falscheste Ansatz, den man sich überhaupt vorstellen kann. Viel besser wäre eine
API, die es ermöglicht die nativen Elemente des jeweiligen
OS direkt anzusprechen, selber zu Kapseln und somit jede Plattform so zu verwenden, wie sie vorgesehen war.