Microsoft ed IBM stavano sviluppando congiuntamente il sistema operativo OS/2 (Operating System 2) quale successore del DOS, con lo scopo di sfruttare pienamente i vantaggi della “modalità protetta” del processore Intel 80286, compresa la possibilità di usare fino a 16 megabyte di memoria. OS/2 1.0, rilasciato nel 1987, supportava la memoria virtuale su disco ed il multitasking, e permetteva di eseguire programmi DOS.
L’interfaccia grafica, chiamata Presentation Manager, non fu disponibile fino alla versione 1.1 di OS/2, rilasciata nel 1988. Benché considerato da alcuni superiore rispetto Windows, le API di OS/2 erano incompatibili con esso. Tra le altre cose, ad esempio, il Presentation Manager poneva l’origine dello schermo (le coordinate cartesiane 0, 0) nell’angolo in basso a sinistra, mentre Windows lo pone nell’angolo in alto a sinistra (come è prassi nei sistemi di coordinate usati in informatica). La versione 1.2, rilasciata nel 1989, ha introdotto un nuovo file system (chiamato HPFS) per rimpiazzare il file system FAT usato da DOS e da Windows.
Ma alla fine del 1989 la collaborazione finì e la Microsoft utilizzò le conoscenze acquisite per sviluppare l’interfaccia grafica “Presentation Manager” (PM) di OS/2 per svilupparne una propria: Microsoft Windows 3.0 (a destra), uscito nel 1990, fu la prima versione di Microsoft Windows di largo successo commerciale, vendendo 2 milioni di copie nei primi sei mesi. I miglioramenti dell’interfaccia grafica erano notevoli ed aveva anche delle capacità multitasking. Oltre a funzionalità migliorate date alle applicazioni native, Windows 3.0 permetteva all’utente di usare i vecchi programmi MS-DOS con un multitasking migliore rispetto a Windows/386, grazie all’introduzione della memoria virtuale ed ai device driver virtuali (VxD) caricabili dinamicamente. Questi miglioramenti resero i PC dei seri concorrenti dei Macintosh della Apple, ad un costo nettamente più basso.
Windows 3.0 poteva funzionare in modalità di memoria reale, standard e 386 avanzata, ed era compatibile con ogni processore Intel a partire dai vecchi 8086/8088 fino ai nuovi 80286 e 80386. Windows all’avvio determinava in automatico la modalità di esecuzione, che poteva comunque essere stabilita da linea di comando. Il limite di queste caratteristiche di retrocompatibilità era che le applicazioni dovevano essere compilate per funzionare a 16 bit, senza poter quindi usare le potenzialità dei 32 bit sui processori 80386.
Una versione multimediale, Windows 3.0 with Multimedia Extensions 1.0, fu rilasciata diversi mesi dopo. Questa era venduta insieme al primo kit multimediale composto da scheda sonora e lettore di CD-ROM, nello specifico si trattava della Sound Blaster Pro di Creative Labs, insieme al titolo multimediale Microsoft Bookshelf. Questa versione era la precorritrice delle caratteristiche multimediali della successiva versione 3.1.
Le sue caratteristiche tecniche, il costo ridotto e le minori richieste di prestazioni rispetto a soluzioni analoghe, insieme alla crescente supporto del mercato, resero Windows 3.0 un ampio successo, caratterizzato dalla vendita di 10 milioni di copie nei due anni che precedettero l’uscita di Windows 3.1. Windows 3.0 divenne la maggiore fonte di reddito per Microsoft, e guidò le scelte e i piani successivi dell’azienda.
Fino ai primi anni ‘90 Microsoft e IBM avevano cooperato nello sviluppo dei sistemi operativi, ed avevano accesso al codice sorgente sviluppato da entrambi. Microsoft aveva deciso di continuare lo sviluppo di Windows, mentre IBM desiderava proseguire solo con OS/2. Nel tentativo di risolvere questa tensione, le due aziende decisero che IBM avrebbe sviluppato OS/2 2.0 (in alto), che avrebbe dovuto prendere il posto di OS/2 1.3 e di Windows 3.0, mentre Microsoft avrebbe sviluppato un nuovo sistema operativo, OS/2 3.0, come successore di OS/2 2.0.
Tuttavia questo accordo presto di ruppe, e la relazione tra IBM e Microsoft terminò. IBM continuò a sviluppare OS/2, mentre Microsoft cambiò il nome del sistema operativo che stava iniziando a sviluppare da OS/2 3.0 ad un nome in codice, Chicago, che avrebbe poi visto la luce come Windows NT (a destra). Entrambi mantennero il diritto di usare tutte le tecnologie che erano state sviluppate fino ad allora; Chicago, tuttavia, fu scritto praticamente da zero e indipendentemente.
Dopo una versione 1.3 temporanea che risolveva molti dei problemi delle versioni precedenti, IBM rilasciò la versione 2.0 di OS/2 nel 1992. Questo fu un notevole passo avanti: vi era una nuova interfaccia grafica orientata agli oggetti, chiamata Workplace Shell, che includeva un desktop e che era considerata da molti la migliore caratteristica di OS/2. Alcuni dei suoi aspetti furono ripresi in seguito da Microsoft per Windows 95. La versione 2.0 aveva anche una API a 32 bit, un migliore multitasking, e la possibilità di utilizzare lo spazio di indirizzamento di 4 gigabyte offerto dai processori Intel 80386. In realtà internamente vi era ancora molto codice a 16 bit, che fra le altre cose richiedeva che i device driver fossero a 16 bit. Questa fu una delle ragioni per le quali si assistette ad una cronica mancanza di device driver aggiornati per OS/2. La versione 2.0 (in alto) poteva anche eseguire programmi DOS e Windows 3.0, grazie al fatto che IBM conservava il diritto di usare il codice sviluppato congiuntamente con Microsoft fino al momento della rottura.
A quel tempo, non era chiaro chi avrebbe vinto la cosiddetta “guerra del desktop”: OS/2 aveva qualità tecniche superiori e alle spalle un’azienda del calibro di IBM, Windows invece richiedeva computer meno potenti e godeva di una diffusione già abbastanza elevata.
Alla fine il PC incarnerà il ruolo di home computer a 8-bit e diventerà l’architettura dominante per i “Personal Computer”, specialmente nelle piccole imprese. Ciò non accadde da un giorno all’altro, dato che per molti anni i PC hanno combattuto contro altri home computer per aggiudicarsi il mercato dell’utenza casalinga. D’altro canto, nelle imprese i PC IBM ed i loro cloni divennero presto lo standard, sfidato solo dagli Apple Macintosh.
La Microsoft controllava ormai il mondo dei sistemi operativi per la famiglia dei microprocessori Intel, diventando nel tempo la più potente software house del mondo. Il duopolio Microsoft e Intel ha suggerito la coniazione del termine WinTel dall’unione di Windows e Intel. Questo duopolio controllava il 90% del mercato informatico mondiale nella fascia ufficio e privato, mentre per i server e la grafica ad alto livello (tipo IRIX della SGI) i vari Unix hanno sempre avuto buona diffusione, così come per l’editoria la Apple e i Macintosh erano i preferiti.
In risposta al rilascio di OS/2 2.0, Microsoft sviluppò Windows 3.1, che includeva diversi miglioramenti rispetto a Windows 3.0 (il più importante dei quali il supporto dei font scalabili True Type, sviluppati insieme ad Apple), ma che consisteva soprattutto in correzioni di bachi e nel supporto multimediale. Inoltre era stato rimosso il supporto per la “modalità reale”, e quindi poteva essere eseguito solo su processori 80286 o successivi. In seguito Microsoft rilasciò Windows 3.11, dapprima solo in versione “Windows for Workgroups” che includeva un deciso miglioramento nella gestione delle reti, che poteva essere eseguito solo in modalità “386 avanzata”, richiedendo pertanto almeno un processore 80386. Entrambe le versioni ebbero lo stesso notevole successo di vendita della versione 3.0. Nonostante Windows 3.x in definitiva non avesse molte caratteristiche di cui invece OS/2 disponeva (nomi di file lunghi, un desktop, la protezione del sistema da programmi malfunzionanti) Microsoft in breve dominò il mercato delle interfacce grafiche per PC. La Windows API divenne lo standard di fatto nello sviluppo di software commerciale.
Nel frattempo Microsoft continuava nello sviluppo di Windows NT, il nuovo sistema operativo a 32 bit. Windows NT 3.1 (il marketing di Microsoft voleva far apparire Windows NT come prodotto parallelo a Windows 3.1) arrivò in versione beta alla Professional Developers Conference di San Francisco nel luglio 1992. Microsoft annunciò alla conferenza anche i piani futuri, che includevano il successore di Windows 3.1, con nome in codice Chicago, e un successivo sistema operativo, con nome in codice Cairo, che avrebbe unificato in un unico sistema operativo Windows NT 3.1 e Chicago. In realtà Cairo non vide mai davvero la luce, e l’unificazione delle due linee di prodotto è avvenuta solo in Windows XP.
I due principali problemi di Windows NT erano in definitiva gli stessi di OS/2: richiedeva un hardware troppo potente per l’epoca, e disponeva di pochi device driver di terze parti a causa della difficoltà di programmare il suo complesso modello di astrazione dell’hardware. Le case produttrici di hardware erano riluttanti a sostenere i costi di sviluppo di questi device driver, anche perché Windows NT era un prodotto poco diffuso sul mercato. Gli utenti inoltre non erano molto interessati a migrare a Windows NT: era richiesto un PC troppo potente e l’interfaccia utente era la stessa di Windows 3.1 ed era inferiore a quella di OS/2. Si era quindi in una fase di stallo: per le stesse ragioni OS/2 e Windows NT non decollavano, e Windows 3.1 continuava a guadagnare quote di mercato.
Ad ogni modo, Windows NT aveva caratteristiche che lo rendevano perfetto per il mercato di server LAN (che nel 1993 stava conoscendo un rapido successo), grazie alle opzioni avanzati di networking di cui disponeva, e grazie all’efficienza del nuovo file system NTFS. La successiva versione 3.5, seguita a breve distanza dalla versione 3.51, segnarono l’inizio dell’ascesa di Microsoft in questo segmento di mercato, che negli anni seguenti avrebbe finito con il dominare a spese di Novell.
Una delle caratteristiche più avanzate introdotte con Windows NT fu la nuova API a 32 bit, pensata per sostituire la precedente API a 16 bit di Windows 3.1. Questa nuova API fu chiamata Win32, e la precedente prese il nome di Win16. L’API Win32 ebbe tre implementazioni: quella di Windows NT, una versione ridotta chiamata Win32s che poteva essere installata su Windows 3.1, e una per l’imminente Chicago. In questo modo Microsoft cercò di assicurarsi un ponte di compatibilità tra tutte le sue versioni di sistemi operativi, e questa fu una carta vincente.
Nel 1994 esce OS/2 3.0 (Warp in omaggio alla saga fantascientifica di Star Trek) capace di funzionare egregiamente anche con solo 4 MB di RAM. Questa nuova versione comprende una WPS molto migliorata e il supporto nativo al protocollo TCP/IP e ad internet. Inoltre insieme al sistema operativo viene distribuito un CD di applicazioni per OS/2, il Bonus Pack. Successivamente escono altre due versioni di OS/2 3.0 denominate Connect e Server, che integrano una serie di tool di rete IBM avvantaggiandosi della ottima stabilità raggiunta da OS/2 che ne fa una buona piattaforma per server di rete.
Nel 1996 esce l’ultima versione completa di OS/2, la Warp 4.0 (Merlin). Warp 4 sfoggia una nuova veste grafica, integra i tool di rete della precedente versione Connect e in più ha un client di rete universale, capace di connettersi a praticamente ogni tipo di rete e di protocollo esistente (la lista è molto vasta): possiede inoltre il supporto per la sincronizzazione dei file e la gestione remota dell’accesso che permette di collegarsi alla propria macchina da una qualsiasi stazione in rete. E’ sicuramente il miglior sistema operativo per PC, ma ormai il destino commerciale di OS/2 è segnato. Nel 1997 IBM decide di congelarne lo sviluppo.
In un comunicato datato 12 luglio 2005, IBM annuncia ufficialmente di voler terminare la commercializzazione ed il supporto per i suoi prodotti OS/2 Warp V4 e OS/2 Warp Server for eBusiness, fissando al 23 dicembre 2005 il loro ritiro dal mercato e al 31 dicembre 2006 la data ultima del supporto standard. Ai suoi clienti OS/2, IBM suggerisce di considerare GNU/Linux come sistema operativo alternativo.