[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