# Abbraccia, estendi ed estingui

"Abbraccia, estendi ed estingui" (in inglese EEE, Embrace, Extend and Extinguish) è un'espressione che il Dipartimento di giustizia degli Stati Uniti d'America ha accertato essere stata usata all'interno della Microsoft Corporation, negli anni novanta, per descrivere la propria strategia volta all'ingresso nei mercati di prodotti basati su standard internazionali riconosciuti, tramite l'introduzione di caratteristiche proprietarie non conformi agli standard, e il successivo utilizzo di tali difformità allo scopo di svantaggiare la concorrenza.
L'espressione è citata più volte dai testimoni Paul Maritz, dirigente Microsoft, e Steven McGeady, dirigente Intel, nel corso del processo per l'azione civile numero 98-1232, tenutosi tra il 18 ottobre 1998 e il 26 giugno 1999 nel Distretto di Columbia.
La stessa espressione è stata ripresa in seguito dalla stampa internazionale, ad esempio dal quotidiano The Economist.

## Microsoft, Internet e gli altri standard

La strategia di Microsoft nei confronti di Internet e altri standard è stata descritta come EEE da coloro che sostengono che l'azienda eserciti pratiche sleali e lesive della concorrenza.
La strategia EEE consiste nelle seguenti fasi:
* Abbraccia: L'azienda annuncia pubblicamente che intende aderire a uno standard. Assegna a un dipendente, o a dei dipendenti, il compito di lavorare con organizzazioni che si occupano di standardizzazioni, come il World Wide Web Consortium (W3C) o l'Internet Engineering Task Force (IETF).
* Estendi: ci si muove in conformità allo standard, almeno in parte, ma si inizia ad aggiungere, ai propri prodotti, delle estensioni proprietarie dello standard. Si afferma che si sta solo cercando di aggiungere valore per i propri clienti e che sono proprio questi ultimi a volere queste caratteristiche.
* Estingui: con vari mezzi si spingono gli utenti a usare questi propri standard "estesi" - per esempio con i propri prodotti server o con strumenti di sviluppo - incrementando così l'uso delle estensioni proprietarie al punto che i concorrenti che non seguono quella versione dello standard non possono competere. In questo modo, il prodotto proprietario dell'azienda diventa, nei fatti, l'unico standard che conti in termini pratici (standard de facto) e gli permette di influenzare il mercato tramite il controllo che è in grado di esercitare su questo standard "esteso".
Chi stigmatizza e denuncia l'esistenza di strategie EEE nella linea di condotta di Microsoft lo fa sulla base di prove come gli Halloween Documents, una serie di memorandum confidenziali di Microsoft, sfuggiti al controllo interno e divenuti di dominio pubblico, riguardanti le strategie aziendali da adottare nei confronti di Linux e del software open source.

## Esempi

Esempi di aree in cui si è ipotizzata la messa in atto di strategie "abbraccia, estendi ed estingui":
* Softmodem
* HTML, CSS, DOM
* Kerberos
* Altair BASIC
* Reti SMB
* Controllo indiretto dell'architettura PC IBM compatibile
* Media Transfer Protocol
* C++
* OpenGL
* JavaScript
* Java (in relazione al quale l'EEE è qualche volta chiamato "Java pollution").
* La app Sunrise Calendar, acquistata per "migliorare l'esperienza di Outlook" e ora disabilitata e rimossa dagli store (archiviato dall'url originale il 1º giugno 2016)..
La presunta efficacia dell'EEE risiederebbe nel cosiddetto effetto rete: l'idea che il valore di un prodotto per un potenziale cliente aumenti con l'aumentare del numero di utenti che già lo usano. Nella prima edizione di The Road Ahead, Bill Gates spiega in dettaglio i suoi piani per usare l'effetto rete a vantaggio di Microsoft.

### Java pollution

L'esempio è stato l'oggetto di una ben nota causa legale tra Microsoft e Sun Microsystems.
L'espressione "abbraccia, estendi ed estingui" dovrebbe essere riservata alla particolare strategia descritta sopra. Perciò, riguardo alla questione Java contro .NET, non si tratta specificamente di EEE perché .NET è venduto sotto il marchio Microsoft, anche se il linguaggio J# è stato introdotto in .NET come esca per attirare i programmatori Java verso il framework .NET. Alcuni osservatori sospettano che Microsoft intenda usare l'EEE con il linguaggio C#, ottenendo prima un gran numero di utenti per la versione ECMA standard del linguaggio - che è stato intenzionalmente progettato come successore del popolare C - per poi aggiungere estensioni proprietarie e rimuovere il supporto per la versione basata sullo standard. Ma al momento Microsoft non ha ancora cambiato rotta, sebbene questi sospetti possano essere fondati.

### C++

Un altro esempio è il linguaggio C++. Prima Microsoft provò a estenderlo come Managed C++ in Visual C++.NET, anche se questo tentativo incontrò molta resistenza visto che le estensioni managed erano male implementate ed esteticamente poco attraenti. Vista la scarsa accoglienza, Microsoft fece un secondo tentativo nell'estendere il C++, questa volta chiamandolo C++/CLI. Rimane da vedere se queste nuove estensioni guadagneranno grande approvazione. L'altro problema con l'implementazione Microsoft del C++ è la rimozione di molte delle indicazioni di errore e degli avvertimenti (error e warning), originariamente precisi, che appaiono in altri compilatori più fedeli agli standard come l'open source GCC. L'omissione di questi errori spesso causa strani problemi di portabilità e l'impossibilità di compilare quando si tenta di eseguire il porting del codice C++, persino se non contiene codice specifico Microsoft.

## Limitazioni intrinseche all'efficacia dell'EEE

La strategia "abbraccia, estendi ed estingui" di Microsoft sembra aver offerto un vantaggio limitato. Ha afflitto l'HTML, soprattutto a causa delle alterazioni nel Document Object Model in Internet Explorer. Un limite intrinseco a questa strategia è dovuto al fatto che, in genere, le estensioni incompatibili spingono i clienti a fare marcia indietro, soprattutto quando queste estensioni hanno utilità limitata.