dat zij [sic] makelijk [sic] voor ons zijn en voor de developers hoeven hun [sic] niet zo veel moeite te doen om hun app/game naar elke besturings systeem te porten ik denk dat het wel mogelijk is,
dat zij [sic] wel net zo iets als wine hq zijn alleen dan werkt alles goed,
dus allemaal dezelfde mapen [sic] voor alle systemen [sic] zodat dat niet meer verschild [sic] want nu verschild [sic] dat heel erg van elkaar.
Laten we even eens een keertje de obstakels bekijken.
Ten eerste moeten we rekening houden met de basiscalls van het besturingssysteem. Bestand openen, sluiten, lezen, schrijven, nieuw proces aanmaken, nieuwe thread, socket openen, etc. Enfin, heel simpele dingen nog (geen gui). Hiervoor bestaat er een standaard die vertelt welke functies een besturingssysteem moet aanbieden: POSIX. POSIX vertelt welke (C) functies een systeem moet leveren en hoe deze moeten werken voor alles wat hiervoor staat. POSIX zegt ook heel wat andere dingen, zoals welke mappen en commandline-programma's standaard aanwezig moten zijn. Helaas is er één groot systeem dat niet aan deze POSIX-standaard voldoet, drie keer raden welk?
Voor 3D graphics en geluid is er ook een standaard: OpenGL en OpenAL. Raad nu eens welk systeem slecht OpenGL en OpenAL ondersteunt en waarvan de fabrikant zijn eigen propretaire oplossing promoot?
Ten derde is er de grafische omgeving. Hier is geen standaard voor, ook al onder meer omdat de manier waarop GUIs werken ongelofelijk verschilt tussen operating systems of zelfs verschillende desktopomgevingen op Linux (ik denk nu aan Gnome vs. KDE).
Te veel standardiseren is niet goed: het beperkt de innovatie. Als iedereen zich letterlijk moet houden aan een standaard, zonder uitbreidingsruimte, is er geen mogelijkheid tot alternatieven die misschien beter kunnen zijn. Ook is men vaak erg traag met het vernieuwen van standaarden zodat men vaak achter loopt. Het gevolg is dat makers van besturingssystemen toch hun eigen gang beginnen gaan, en ontwikkelaars aanmoedigen hun eigen, nieuwe, betere functies te gebruiken in plaats van de standaardfuncties.
Nu zijn hier oplossingen voor, zoals Java, wat eigenlijk een verpakking is rond het systeem waar het op draait, met het nadeel natuurlijk dat het trager gaat gaan (slecht voor games!) en er niet uitziet alsof het echt voor het systeem zelf is geschreven. Qt is soortgelijk, maar dan in C++, maar moet wel nog gebouwd worden op het systeem waar het gebruikt moet worden (maar dan zonder aanpassingen).
Dus de conclusie is: het is tegenwoordig vrij makkelijk om software te schrijven die overal op werkt, de enige reden waarom men dat niet zou willen doen is onwetendheid of onwil.
- SeySayux