Perché Microsoft non rende Windows compatibile con POSIX?

L'hanno fatto. Non importava a nessuno, così hanno smesso.

Windows NT 3.51 aveva un sottosistema POSIX che era completamente conforme a IEEE 1003.1-1990 e ISO IS9945:1-1990. Lo stesso per NT 4.0. Una terza parte (Softway Systems Inc.) prese in licenza il codice sorgente da Microsoft e produsse una serie di prodotti (OpenNT, che più tardi divenne Interix) che aggiunsero progressivamente il supporto per più standard POSIX; soprattutto, 1003.2-1992 (shell e utility) e alcuni sottoinsiemi conformi di 1003.4 (IPC). Aggiunsero anche il supporto ai Berkeley Sockets (nonostante il fatto che POSIX non li avesse standardizzati all'epoca).

Microsoft arrivò al punto di acquisire la tecnologia Softway Systems e integrarla nel suo prodotto Windows Services For Unix (SFU). Il sottosistema POSIX aggiornato fu inserito nel prodotto Windows per Windows 7 e Windows Server 2012R2.

Nessuno se ne preoccupò. Così in Windows 8.1, il sottosistema è uscito dal sistema operativo. Oggi, Windows 10 include il sottosistema Windows per Linux, che fornisce la compatibilità binaria per i programmi Linux. Microsoft non rivendica il supporto POSIX per il WSL, perché non interessa a nessuno; a loro interessa che il loro codice compilato per Linux funzioni.

(rivelazione completa: ero Chief Scientist alla Softway Systems e sono entrato in Microsoft quando hanno acquisito la tecnologia Interix.