Takže - asi jsem to měl zdůraznit, zpětná kompatibilita nebyla řešena kvůli DOSu, ale na DOSu postavených Windows (řady 3.0-3.1, 9x a ME). Aplikací pro ně bylo už v té době spousta, a to byl zásadní problém. Virtualizovat real mode DOS je víceméně legrace, s chráněným režimem je to horší, ale pořád je to řešitelné enaculapsed režimy nebo extendery. Problém nastal u DOS-based Windows, které měly tehdy částečně nekompatibilní Win-API (vůči verzi NT 3.5) při slučování rodin (NT a 9x).
V Linuxu JE ABI i API (minimálně jaderné ABI - jak by bez něj systém fungoval? A o API... ehm... Taková prasárna, že by vše běželo přes náhodná IOCTL snad Linux není, ne? ). Ale obojí se mění snad s každým minorem jádra, a proto pro Linux nikdo nepíše komplexní komerční aplikace. Pak ať ale uživatelé OSS netvrdí, že za malé rozšíření mohou komerční společnosti nepodporující tvorbu SW a ovladačů. Je to problém právě zdvořile přehlédnutého bordelu a nestability (ve smyslu podpory non-OSS software). A zodpovědnost za nefunkčnost má přebírat tvůrce closed source, když to není on, kdo způsobuje nekompatibilitu? Proč? Odevzdá funkční věc, a to, že se pak někdo rozhodne něco změnit, už není jeho starost. Být na místě ATI, udělal bych to samé. Kdyby se WDM měnilo co měsíc, také by se na tvorbu ovladačů kdekdo brzy vykašlal.
Ano, existuje statické linkování, ale to bohužel u komplexních programů dvakrát nejde (kdo někdy spolupracoval na aplikaci s více jak 100 000 řádky kódu musí souhlasit. A balíčky... Sledovat jejich změny napříč distribucemi, balíčkovacími systémy, nehledě na uživatelské zásahy, je naprosto nemožné. U většiny aplikací by to skončilo jako analogie DLL-hell, package-hell, na zvládnutí čehož Linux dnes nemá mechanismy. A tím mechanismem by bylo právě kvalitní, dlouhodobě stabilní a fungující API. Windows ho poskytují a dávají tak rozumnou základnu pro veškerý closed-software, Linux ne, je open, ale open i zůstane.
A nemluvil jsem o chybách v knihovnách, ale o zpětné kompatibilitě těchto knihoven, právě kvůli které na Windows UAC vzniklo. MS měl možnost silně omezit účet Administrator a ořezat API o nestandardní funkce z dob 9x, ale jelikož by tím odřízl právě 90% dnes fungujícího komerčně nasazovaného software, udělat to prostě nemůže. Linux si to dovolit může, ale také na to dojíždí právě neexistencí ovladačů pro některý hardware (podmínkou by bylo stálé ABI a Driver-API), closed source, proprietálního, komerčního, ale spoustou firem používajícího software (Adobe, CADy, účetnictví atd.), ale třeba i her (kde by chtělo navíc dohnat zaostalost OpenGL, které už přes rok nestíhá kopírovat vývoj nových GPU). Došlo to dokonce tak daleko, že si firmy jako RH vytváří a podporují vlastní API pro své distribuce, což o něčem svědčí.
A jen aby bylo jasno - proti Linuxu nic nemám, je to dobrý systém, dokonce mě částečně živí, ale je to právě neochota a omezený pohled komunity, jež mu brání v rozšíření (pokud se člověk zrovna neživí psaním v OOO nebo nevyvíjí Java applety, má často smůlu). Stačí překonat snahu být ve všem až zbytečně "open", a za pár let po Microsoftu neštěkne ani pes.