[Folug]Perche' temere Microsoft .NET

webmaster@freeant.net webmaster@freeant.net
Fri, 31 Aug 2001 11:00:50 +0200


Qualche giorno fa, MiLUG ha pubblicato sul suo sito questo articolo; mi 
piacerebbe sapere cosa ne pensate.

Ciao
FreeANT :)


Perché temere Microsoft .NET
di Alceste Scalas <mailto:tjoadHATES_SPAMMING@gmx.it>
Una panoramica su .NET e su ciò che vi sta dietro.

Apparso il 28/08/2001 .

Introduzione
Questo articolo, pur nei suoi limiti, vuole essere un aiuto per comprendere 
cosa sia il sistema .NET di cui si parla in questo periodo, come funzioni, e 
perche` esso possa diventare una seria minaccia per il Software Libero e 
l'Open Source. E vuole anche illustrare come .NET, se sottovalutato, possa 
diventare un serio pericolo anche per la privacy e la riservatezza dei suoi 
utilizzatori (ovvero di milioni di persone, se i piani della Microsoft si 
avvereranno). 
Non si tratta, insomma, di una guida a .NET, ma della semplice condivisione 
delle (limitate) conoscenze di chi scrive. Per questo, tutte le segnalazioni, 
correzioni, critiche o commenti su questo articolo sono ben accetti, ed anzi 
incoraggiati, all'indirizzo <tjoad @ gmx . it> 
<mailto:tjoadHATES_SPAMMING@gmx.it>. 
Tutti i link utili si trovano alla fine dell'articolo. 

Sarebbe bello se...
La diffusione dell'Internet, si sa, e` inarrestabile. La quantita` di servizi 
che essa offre e` enorme. E l'utente richiede di poter utilizzare questi 
servizi nella maniera piu` semplice, diretta, veloce ed interattiva. 
E qui iniziano i problemi. Accontentare gli utenti significa, per le aziende, 
integrare servizi logicamente distinti nei modi piu` disparati. Nella 
gestione del sito di un albergo, per esempio, si potrebbe attirare molta piu` 
clientela rendendo piu` semplice la trafila della prenotazione della stanza, 
dell'acquisto del biglietto aereo, dello spostamento dall'aeroporto... 
Sarebbe bello se l'utente, una volta entrato nel sito dell'hotel, potesse 
scegliere un periodo di permanenza, e, in base ad esso, potesse consultare 
una lista dei voli disponibili per l'andata ed il ritorno, acquistando il 
biglietto. Sarebbe poi una bella idea se egli potesse accedere ad una lista 
di attrattive presenti nella zona, e potesse, per esempio, prenotare una cena 
nell'esclusivissimo ristorante francese. Tutto questo, senza muoversi 
(apparentemente) dal sito dell'albergo, e con tutte gli acquisti riuniti in 
un solo "carrello della spesa". 
Questo sarebbe teoricamente fattibile --- ma gli amministratori che 
gestiscono il sito dell'hotel sarebbero costretti a creare un sistema di 
e-commerce complicatissimo, sicuramente pieno di errori e, soprattutto, non 
mantenibile: qualunque cambiamento nei servizi offerti da terzi (per esempio, 
una variazione nel sistema di prenotazione dei voli della compagnia aerea) 
causerebbe un malfunzionamento nel sito dell'hotel. E l'aggiunta di un nuovo 
servizio (per esempio, l'acquisto dei biglietti dello stadio) potrebbe essere 
ingarbugliata --- e fatale. 
Sarebbe bello, invece, se esistesse un protocollo tramite il quale diversi 
siti si comunichino dinamicamente quali servizi sono offerti e quali sono 
richiesti. Se tutti quanti utilizzassero questo protocollo, gli 
amministratori del sito dell'hotel non avrebbero la necessita` di modificare 
spesso la sua struttura di e-commerce, dato che l'interazione con servizi 
esterni (dall'aeroporto ai biglietti dello stadio) sarebbe uniforme, e 
l'aggiunta di nuove opzioni non sarebbe complicata. 

Entra in scena .NET
Questo sistema di interazione tra diversi servizi offerti dalla rete e` 
interessante, e indiscutibilmente utile (sia per le aziende che per gli 
utenti). La Microsoft, ovviamente, non e` rimasta insensibile a questo 
bisogno, ed ha offerto la sua risposta: .NET. Per analizzare questa 
strategia, la divideremo in diversi livelli: un livello di protocollo, un 
livello applicativo, ed un livello di mercato. 

Il protocollo
La base del sistema si trova in un protocollo che, come detto poco sopra, 
permette a diversi host nella rete di comunicarsi quali servizi sono 
disponibili (o richiesti). 
Tale protocollo si chiama SOAP (Simple Object Access Protocol), ed e` basato 
sullo standard XML. Tramite il suo utilizzo, la compagnia aerea puo` 
comunicare all'albergo cosa venga offerto (i voli), e cosa caratterizzi 
l'oggetto offerto (l'orario di partenza, quello di arrivo, i posti liberi, il 
prezzo del biglietto, etc.). A questo punto l'albergo puo` dare all'utente 
una rappresentazione dell'oggetto (p. es. una lista ordinata per il campo 
"orario di partenza"), e comunicare al server della compagnia aerea il tipo 
di interazione richiesta (p. es. la selezione del volo XYZ, e l'acquisto del 
biglietto). 

Il livello applicativo
Questa parte dell'articolo sara` piuttosto pesante, e i suoi dettagli 
potrebbero essere utili solamente a chi voglia approfondire ulteriormente il 
discorso, e voglia avere almeno gli estremi di cio` che trovera` su siti piu` 
"specializzati". Per tutti gli altri, una lettura rapida e` piu` che 
sufficiente... 
Per poter utilizzare il protocollo SOAP in maniera semplice, ovviamente, e` 
necessario fornire ai programmatori una interfaccia (API --- Application 
Programming Interface). La API proposta da Microsoft si chiama essa stessa 
.NET, ed e` disponibile per diversi linguaggi di programmazione (C++, Visual 
Basic...). Essa si presenta come la libreria di classi standard Java, e, come 
quest'ultima, offre un vasto campo di utilizzi: dalla stampa di testo a video 
all'apertura di finestre, all'utilizzo di database, alla manipolazione 
numerica. Ed offre, appunto, anche la gestione del protocollo SOAP. 
Ma il disegno della Microsoft si spinge piu` avanti: la suddetta API si 
appoggia ad un ambiente run-time, chiamato CLR (Common Language Runtime 
environment). La API, insomma, funziona proprio come le librerie di classi in 
Java, che richiedono la presenza di una "macchina virtuale" per poter essere 
utilizzate. E quindi le stesse applicazioni che facciano uso di .NET devono 
poter essere eseguite all'interno di un ambiente virtuale (il CLR, appunto), 
qualunque sia il linguaggio di programmazione utilizzato per la loro 
creazione. 
Affinche` questo sia possibile, i sorgenti dei programmi che usano .NET (la 
libreria) non vengono compilati nel modo classico, ma vengono "tradotti" in 
un formato intermedio ed indipendente dal linguaggio di origine --- e 
quest'ultimo, al momento dell'esecuzione, viene interpretato all'interno del 
CLR. Il meccanismo e` esattamente lo stesso del bytecode in Java, che funge 
da formato intermedio, e viene eseguito all'interno della virtual machine 
Java. Il bytecode della Microsft si chiama MIL (Microsoft Intermediate 
Language). E, come detto sopra, la virtual machine che lo interpreta e` il 
CLR. 
MIL e` stato studiato in modo da poter supportare piu` o meno tutti i 
linguaggi di programmazione Object Oriented. Ma c'e` un linguaggio di 
programmazione nato appositamente per adattarsi alla perfezione al sistema 
MIL+CLR: il famigerato C# (che, nella sintassi, ricorda molto Java). La parte 
di CLR e di librerie .NET specifica per il supporto di questo linguaggio (che 
e` la punta di diamante nella visione di Microsoft .NET) si chiama CLI 
(Common Language Infrastructure). 
A questo punto, tutte le applicazioni che, attraverso MIL e CLR, possono 
accedere al sistema SOAP, possono comunicare tra loro, in modo dinamico e 
trasparente, ovunque si trovino (sul computer locale, come in un server 
remoto). 
Lo schema di seguito puo` forse aiutare a visualizzare la struttura del 
sistema .NET.

La strategia di mercato
E` ora interessante vedere come la Microsoft voglia sfruttare commercialmente 
questa architettura. 

Portabilita`
Uno dei vantaggi di Java e` la portabilita`: in presenza di una Virtual 
Machine Java, qualunque bytecode Java puo` girare su qualunque piattaforma. 
Lo stesso discorso si puo` applicare a .NET: in presenza del CLR, qualunque 
codice MIL puo` essere eseguito ovunque. E questi sono proprio i piani della 
Microsoft: estendere il piu` possibile il supporto per .NET. E, in questo 
modo, avere il controllo di una tecnologia diffusa capillarmente. Per questo 
la Microsoft sta rendendo pubbliche (almeno per adesso) le specifiche del 
sistema .NET, e sta cercando di far standardizzare il C# dalla ECMA e SOAP 
dal W3C: in modo che altri sviluppatori siano incoraggiati a creare dei 
programmi compatibili (almeno per un certo periodo), per diverse piattaforme. 

Contro la SUN
Nei precedenti paragrafi si possono notare una serie di analogie e 
riferimenti a Java. Questo non e` casuale: la Microsoft sta infatti cercando 
di non supportare piu` Java nelle prossime release dei suoi sistemi operativi 
(a partire da Windows XP). E, guarda caso, proprio ora inizia ad offrire un 
servizio molto simile ad esso (anche se il MIL, a differenza del bytecode 
Java, puo` derivare da diversi linguaggi di programmazione). Questo e` un 
ottimo modo per colpire l'acerrimo rivale SUN. 

Pay per use
La struttura di .NET permette a diversi host di scambiarsi dei servizi. Una 
delle idee che va per la maggiore e` quella di estendere le applicazioni (per 
esempio, Office XP) con servizi aggiuntivi offerti via .NET. Un word 
processor potrebbe per esempio offrire una serie di funzionalita` di base --- 
ma, connettendosi ad un server remoto via .NET, potrebbe importare altri 
oggetti (p. es. altri stili, formati, macro) in modo trasparente all'utente. 
Ovviamente, tali servizi aggiuntivi potrebbero essere a pagamento: l'utente 
compra un word processor minimale, e, in base alle necessita` del momento, 
paga l'utilizzo temporaneo di features aggiuntive (in puro stile pay-per-use, 
appunto). 

I dati personali
Molti dei servizi offerti da .NET prevederanno, ovviamente, l'autenticazione 
degli utenti (in modo che, per esempio, solo chi ha pagato una quota possa 
accedere all'oroscopo via .NET). L'idea della Microsoft e` quella di 
utilizzare i "Microsoft Passports", gia` oggi impiegati nei servizi di 
e-commerce dell'azienda di Redmond. Il Microsoft Passport contiene i dati 
personali dei proprietari, e fungera` da "carta d'identita`" su .NET. Tali 
passaporti sono immagazzinati in un database centralizzato (chiamato 
"Hailstorm"), che verra` interrogato da tutti i servizi di .NET in caso di 
necessita`. La Microsoft, con Hailstorm, diventa quindi il perno su cui ruota 
tutto il sistema di autenticazione di .NET, e da cui devono dipendere tutti 
(utenti ed aziende). E l'azienda gia` pensa di fissare una quota mensile per 
l'utilizzo di una parte delle potenzialita` del servizio. 

Le minacce
Oltre a rappresentare una sicura fonte di guadagno, .NET offre alla Microsoft 
la possibilita` di estendere a dismisura la sua influenza ed il suo controllo 
sull'Internet, e su chi la utilizza. 

Chi controlla il protocollo?
La Microsoft e` l'azienda che sviluppa il protocollo SOAP (nonche` CLR, MIL e 
C#). Anche se le specifiche vengono (per ora) rese pubbliche, e la tecnogia 
di .NET si basa su XML, nulla vieta all'azieda di Redmond di cambiare 
improvvisamente qualcosa senza informare nessuno. E, dato che la maggior 
parte del software che utilizzera` .NET sara` quasi sicuramente sotto il suo 
controllo, questo diventa un ottimo sistema per mettere in crisi, in un 
futuro, i software concorrenti che cercheranno di competere sullo stesso 
terreno (in particolare, sul fronte Software Libero/Open Source). Ed e` 
quindi un ottimo modo per legare a se` gli utenti e le aziende che, intanto, 
grazie alla diffusione del sistema saranno diventati dipendenti da .NET. 

I brevetti
La Microsoft ha la possibilita` di utilizzare l'arma dei brevetti sul 
software per colpire i rivali. E` infatti emersa la possibilita` che una 
parte della tecnologia di .NET sia stata brevettata. In questo caso, chiunque 
provi a creare un programma in grado di utilizzare delle specifiche "segrete" 
di .NET potrebbe essere perseguito penalmente. La Microsoft, inoltre, non e` 
tenuta a rivelare se e quali parti della sua tecnologia siano coperte da 
brevetti --- e, in questo modo, puo` attendere il momento propizio per 
utilizzare l'arma legale, in modo da causare piu` danno alle vittime (per 
esempio, dichiarando fuorilegge un programma costato molte fatiche ed 
investimenti). 

Questione di licenze
L'offensiva piu` forte contro il Free Software/Open Source si puo` vedere 
senza dubbio nella politica della Microsoft contro le licenze del software 
libero. In particolare, l'azienda ha fissato dei severi limiti riguardo le 
modalita` con cui dei sorgenti possono entrare in contatto con le strutture 
dell'azienda. Inutile dire che la licenza sul software piu` bersagliata e` la 
GNU General Public License (in pratica, il cardine di quasi tutto il Software 
Libero): essa e` definita "virale", ed inutilizzabile nei rapporti con la 
Microsoft stessa. Questa e` una specie di spada di Damocle: qualunque azienda 
voglia sviluppare del software con licenza GNU GPL per .NET, ed entri in 
qualche modo in contatto con la Microsoft (per esempio, per un consulto 
tecnico), dovra` fare i conti con la possibilita` che, per il minimo 
pretesto, la casa di Redmond (con i suoi legali) ponga dei veti all'utilizzo 
della GNU GPL stessa. Magari in favore di qualche altra licenza piu` 
permissiva (come la BSD License), che permetta alla Microsoft di sfruttare 
arbitrariamente il software prodotto. O, peggio, la Micosoft potrebbe 
costringere all'utilizzo della formula Shared Source. Questo e` solo il passo 
piu` recente di un lungo percorso di denigrazione della GNU GPL (che, 
evidentemente, preoccupa seriamente i vertici di Redmond, dato che il 
software da essa protetto inizia ad intaccare il monopolio Microsoft). 

La privacy
Questa e` sicuramente la minaccia piu` pericolosa. Con il controllo di 
Hailstorm e dei Passports, la Microsoft e` in grado di gestire (ed 
utilizzare) i dati personali di milioni di utenti. Ha la possibilita` di 
monitorare gli spostamenti e gli interessi di un enorme numero di persone 
(basta tenere la traccia dei siti che si rivolgono ad Hailstorm per ottenere 
i dati di un certo utente). In pratica, l'azienda ha la facolta` di 
utilizzare qualunque dato personale per qualunque scopo. 
A questo scenario si aggiunge il fatto che gli ultimi prodotti Microsoft 
(Windows XP, Office XP, etc.) richiedono una "attivazione" obbligatoria da 
parte dell'azienda (necessaria per il funzionamento stesso dei programmi). La 
Microsoft, infatti, ha inaugurato le sue nuove misure antipirateria. 
All'acquisto di un nuovo prodotto, sara` necessario seguire una certa 
procedura, che renda funzionante il software: 
appena installato, il programma effettuera` una scansione dell'hardware del 
PC ospite; 
i dati cosi` ottenuti verranno comunicati ai server Microsoft, durante 
l'attivazione del programma; 
dalla Microsoft verra` rispedita indietro una chiave abbinata alla 
configurazione hardware appena ricevuta, che sara` indispensabile per il 
funzionamento del software; 
a questo punto, e` possibile utilizzare il programma; 
se il software, in futuro, rilevera` una variazione della configurazione 
hardware incompatibile con la chiave, smettera` di funzionare, e richiedera` 
l'inserimento del CD originale. A questo punto la trafila ricomincera` dal 
punto 1. 
Insomma, vi sono forti sospetti sui pericoli per la privacy creati da questo 
sistema di "attivazione del software": anche il solo acquisto di un prodotto 
Microsoft potrebbe implicare la perdita del proprio anonimato sulla rete. 
L'effettiva esistenza di questo pericolo e` motivo di controversie, ma, 
conoscendo la condotta dell'azienda di Redmond, la cosa non sarebbe troppo 
sorprendente. E, in ogni caso, questa minaccia si sommerebbe, come gia` 
detto, il servizio di passaporti Microsoft, che sara` praticamente 
indispensabile per poter sfruttare tutti i servizi di .NET. E verra` 
utilizzato da milioni di persone, molte delle quali probabilmente 
inconsapevoli delle minacce alla propria privacy. 

La risposta del Software Libero
Sebbene .NET si profili come un grosso rischio, c'e` un aspetto positivo: 
tutte le tecnologie illustrate sono ancora in fase sperimentale. Vi e` ancora 
la possibilita`, specialmente per la comunita` Software Libero/Open Source, 
di rispondere in tempo con delle soluzioni che possano competere con .NET. 

Mono
Mono non e` altro che una implementazione libera della tecnologia .NET, 
offerta dalla Ximian. Essa dovrebbe offrire un compilatore C#, e l'ambiente 
di runtime CLR, in modo che tutti i software compilati in MIL possano essere 
eseguiti in un ambiente non proprietario. Per il resto, Mono non offre 
alternative alla struttura di autenticazione Microsoft (ovvero, ai Microsoft 
Passports ed a Hailstorm). E (forse per questo) la Microsoft ha dato la sua 
"benedizione" ed il suo supporto al progetto... Sollevando dei timori 
riguardo il rapporto tra Microsoft e licenza GNU GPL, a cui si e` accennato 
anche poco sopra. E per questo bastano le parole di Tony Goodhew, product 
manager MS: "il software di Mono dovrà essere compatibile con le politiche di 
licenza di Microsoft". 

.GNU
.GNU nasce dalle mailing list di FreeDevelopers, e, a differenza di Mono, 
punta ad offrire una alternativa completa alla tecnologia .NET (pur 
garantendo la compatibilita` con essa). In particolare, l'intento e` quello 
di offrire una struttura di autenticazione diversa da MS Passports + 
Hailstorm, basata sul decentramento del servizio e sulla garanzia di 
riservatezza per ogni utente (anche grazie alla crittografia). Il progetto e` 
sicuramente ambizioso, ma i vantaggi nel caso di un suo successo sarebbero 
tangibili per tutti: grazie alla possibilita` di non dover dipendere dalla 
Microsoft per la gestione dei propri dati personali, e grazie alla presenza 
di una tecnologia davvero "concorrente" (e non un semplice clone di .NET), 
che ostacoli la creazione di un monopolio anche in questo settore. 

Link utili
La Microsoft parla di .NET
<http://www.microsoft.com/net/default.asp> 
Domande e risposte (tecniche) su .NET, C# e SOAP
<http://www.devx.com/free/press/2000/vs-qalist.asp> 
<http://www.andymcm.com/dotnetfaq.htm> 
<http://www.andymcm.com/csharpfaq.htm> 
http://www.microsoft.com/mobile/developer/technica... 
<http://www.microsoft.com/mobile/developer/technicalarticles/msnet.asp> 
Microsoft vs. Sun
http://techupdate.zdnet.com/techupdate/stories/mai... 
<http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2797646,00.html> 
http://www.zdnet.com/zdnn/stories/news/0,4586,2790... 
<http://www.zdnet.com/zdnn/stories/news/0,4586,2790355,00.html?chkpt=zdhpnews01> 
http://www.javaworld.com/javaworld/jw-07-2001/jw-0... 
<http://www.javaworld.com/javaworld/jw-07-2001/jw-0718-idgns-xpjava.html> 
La Microsoft alla ricerca della standardizzazione
<http://msdn.microsoft.com/net/ecma/> 
<http://www.w3.org/TR/2000/NOTE-SOAP-20000508/> 
I brevetti su .NET
http://www.zdnet.com/zdnn/stories/news/0,4586,2801... 
<http://www.zdnet.com/zdnn/stories/news/0,4586,2801560,00.html?chkpt=zdnnp1tp02> 
La Microsoft contro le licenze del Software Libero
<http://www.linuxdevices.com/news/NS7434943705.html> 
<http://www.theregister.co.uk/content/4/19836.html> 
http://msdn.microsoft.com/downloads/default.asp?url... 
<http://msdn.microsoft.com/downloads/default.asp?url=/downloads/eula_mit.htm> 
La licenza GNU GPL
<http://www.gnu.org/copyleft/gpl.html> 
La licenza BSD
<http://www.opensource.org/licenses/bsd-license.html> 
Shared Source
<http://www.microsoft.com/presspass/features/2001/may01/05-03csm.asp> 
Hailstorm & Microsoft Passports
<http://news.cnet.com/news/0-1005-200-6676181.html> 
<http://www.wired.com/news/business/0,1367,42527,00.html> 
<http://www.thestandard.com/article/display/0,1151,22965,00.html> 
http://cbs.marketwatch.com/news/story.asp?print=1... 
<http://cbs.marketwatch.com/news/story.asp?print=1&guid={BAF153AC-EAF5-4449-8DC8-C837376B5912}&siteid=mktw> 
http://seattletimes.nwsource.com/cgi-bin/WebObjects ...  
<http://seattletimes.nwsource.com/cgi-bin/WebObjects/SeattleTimes.woa/wa/gotoArticle?zsection_id=268448455&text_only=0&slug=microsoft20&document_id=134275821>
<http://www.businessweek.com/bwdaily/dnflash/apr2001/nf20010412_657.htm> 
I dubbi sull'attivazione dei nuovi prodotti Microsoft
http://www.microsoft.com/windowsxp/home/evaluatio... 
<http://www.microsoft.com/windowsxp/home/evaluation/overviews/activation.asp> 
<http://ptech.wsj.com/archive/ptech-20010705.html> 
<http://news.cnet.com/news/0-1003-200-6536843.html> 
A proposito di Microsoft privacy & backdoors
<http://www.aaxnet.com/news/M010318.html> 
<http://www.junkbusters.com/ht/en/microsoft.html> 
Mono
<http://www.go-mono.com/> 
Ximian
<http://www.ximian.com/> 
La Microsoft supporta Mono...
<http://punto-informatico.it/pi.asp?i=36808> 
...ma c'e` da fidarsi?
<http://punto-informatico.it/p.asp?i=36770> 
.GNU
<http://dotgnu.org/> 
FreeDevelopers
<http://freedevelopers.net/> 

Copyright e autorizzazione:
This article is Copyright (C) 2001 Alceste Scalas. Permission is granted to 
copy, distribute and/or modify this article under the terms of the GNU Free 
Documentation License (GFDL), Version 1.1 or any later version published by 
the Free Software Foundation; with the invariant sections being ``Autore'', 
with no Front-Cover Texts, and no Back-Cover texts. A copy of the license can 
be found at <http://www.gnu.org/copyleft/fdl.html>. This article is 
distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. 

(Ultima modifica: 16/06/2001)  
(C) 2001 Milug