Java, .NET et les logiciels libres 2.0

Fabrice Rossi http://apiacoa.org/

7 septembre 2006

R´esum´e 1 Introduction

Il y a bientˆotdeux ans, je pr´esentais dans [1] la situation l´egale tr`escomplexe des pla- teformes de ´eveloppement Java et .NET. Les logiciels libres construits `a partir Au del`ade leurs ressemblances techniques des plateformes Java et .NET ont de plus (machine virtuelle, compilation just in time, en plus de succ`es. De l’environnement de gestion automatique de la m´emoire, langage d´eveloppement Eclipse aux lecteurs de flux orient´eobjet inspir´edu ++, etc.), ces pla- RSSOwl et Blam, en passant par le moteur teformes ont aussi en commun d’avoir ´et´e de recherche locale Beagle et le client Bit- con¸cuespar des entreprises et d’avoir comme Torrent Azureus, on constate que de nom- impl´ementation de r´ef´erenceun logiciel pro- breux d´eveloppeurs se d´etournent des lan- pri´etaire. En fait, Java et .NET sont des gages plus classiques comme le C ou le C++. technologies partiellement ouvertes. Mˆemeen occultant l’important d´ebat tech- Les sp´ecifications de la plateforme nique, notamment sur la consommation en Java autorisent explicitement une ressources (temps cpu et m´emoire) des pla- impl´ementation open source1, mais teformes Java et .NET, on sait que choi- sous des conditions assez restrictives. sir une de ces technologies n’est pas sans L’impl´ementation de r´ef´erence distribu´ee cons´equence importante : Java et .NET ne par Sun contient des ´el´ements libres, mais sont que partiellement ouverts, ce qui peut est globalement un logiciel propri´etaire. poser des probl`emes de p´erennit´epour les La plateforme .NET est standardis´eepar logiciels libres d´evelopp´es en les utilisant. l’ECMA [3] et par l’ISO [4] (cf les stan- dards ECMA-334 [5] et ECMA-335 [6]). Se- Suite aux annonces importantes de l’ann´ee lon les r`egles de ces organismes (cf [7]), 2006 ( dans Fedora Core 5 et dans les standards qu’ils produisent peuvent ˆetre Gnome 2.16, le JDK de Sun bientˆotlibre), impl´ement´es par quiconque. Si les technolo- cet article fait le point sur la situation gies correspondantes sont prot´eg´eespar des l´egaledes plateformes Java et .NET et tente 1J’utilise dans cet article “logiciel open source” d’´evaluer leur compatibilit´eavec le logiciel comme synonyme de “logiciel libre”, en me r´ef´erant libre. `ala d´efinition de l’open source donn´eepar l’OSI [2]. brevets, ceux-ci doivent ˆetre licenci´es en des plate-formes, essentiellement en raison des termes “raisonnables et non disciminatoires” brevets couvrant ces derni`eres. (RAND pour Reasonable And Non Discri- Les ´el´ements pr´esent´es dans mon minatory).L’impl´ementation de r´ef´erencede pr´ec´edent article [1] m’amenaient `a in- .NET est un logiciel propri´etaire de Micro- sister sur les risques inh´erents aux deux soft. plateformes. Dans le cas de Java, je consta- De ce fait, et contrairement `ades langages tais qu’il ´etait th´eoriquement possible de con¸cusde fa¸con compl`etement ouverte et `a r´ealiser une impl´ementation open source l’impl´ementation de r´ef´erence libre (comme de la plateforme, mais en respectant des Python, ou Ruby, par exemple), ou `a conditions de conformit´eaux sp´ecifications des langages standardis´eset impl´ementables extrˆemement restrictives, ce qui pr´esentait sans restriction aucune (comme C, C++ un risque important : le d´eveloppement ou Ada), .NET et Java ne sont que par- ouvert des logiciels libres implique une tiellement ouverts, tant au niveau de la distribution de versions incompl`etes d’une conception (qui passe par des comit´es `a impl´ementation open source de Java, et l’acc`es restreint) que de l’impl´ementation. donc un non respect (au moins temporaire) Un d´eveloppeur de logiciels libres doit donc des conditions de conformit´e. se poser la question des risques qu’il prend Concernant .NET, j’´etais encore plus en utilisant ces plateformes (cf par exemple n´egatif, essentiellement en raison d’une de- le texte de Richard Stallman sur Java [8]). mande de brevet d´epos´eepar Microsoft et En effet, quand on d´eveloppe une applica- portant sur une grande partie de l’API de la tion Python, par exemple, on a la garantie plateforme. Une fois cette demande accept´ee, qu’on pourra toujours distribuer librement Microsoft aurait obtenu le contrˆoletotal des (au sens des logiciels libres) cette applica- impl´ementations de .NET et aurait pu se tion avec un environnement Python, ce qui contenter de proposer des licences RAND in- assure sa p´erennit´een tant que logiciel open compatibles avec une impl´ementation libre source. Une application C n’utilisant que des (quelles soient Royalty Free ou non). biblioth`equeslibres offre les mˆemes garan- Depuis d´ecembre 2004, la situation a ties. C’est le cas plus g´en´eralement de la ´evolu´e,tant au niveau des impl´ementations grande majorit´edes langages de programma- libres qui ont beaucoup progress´e, que du tion et des plateformes de d´eveloppement. point de vue l´egal.Le but du pr´esent ar- La situation d’une application d´evelopp´ee ticle est d’analyser la situation actuelle et en Java ou .NET est moins claire. Tout ses cons´equences pour l’utilisation des plate- d’abord, il n’existe aucune impl´ementation formes Java et .NET pour le d´eveloppement libre compl`etede ces plateformes2 : en uti- de logiciels libres. lisant certaines fonctionnalit´esavanc´ees de la plateforme, une application libre ne peut pas ˆetre ex´ecut´ee de fa¸con “libre”. De plus, 2 Logiciels libres et brevets et c’est bien plus grave, le caract`ere pro- Avant de s’int´eresser `aJava et .NET, il pri´etaire des technologies elles-mˆemes (et est int´eressant de rappeler quelques ´el´ements pas seulement de leurs impl´ementations de sur les brevets logiciels en g´en´eral.D’autres r´ef´erence) menace l’impl´ementation libre des aspects seront abord´eslors de l’analyse de 2d´ebutseptembre 2006. brevets portant sur .NET.

2 2.1 Brevets “sp´ecifiques” et par exemple, est couvert par des brevets “g´en´eraux” d´etenus par le Fraunhofer Institute et Thom- son Multimedia (cf [9, 10], ainsi que [11] Quand on d´eveloppe un logiciel, on pour des pr´ecisions). Il semble impossible de s’expose malheureusement au risque de d´evelopper autour de MP3 (lecteur ou enco- contrefa¸cond’une invention prot´eg´ee par un deur) sans mettre en œuvre les brevets (et brevet. Certaines syst`emes l´egaux,en par- donc sans obtenir une licence de Thomson), ticulier celui des Etats-Unis´ d’Am´erique, ce qui explique3 l’absence de support de ce autorisent en effet de breveter des algo- format sonore dans Fedora Core [12], par rithmes en consid´erant que ceux-ci sont exemple. r´ealis´es dans un programme au mˆeme titre Contrairement aux probl`emes pos´es par qu’une id´ee est r´ealis´ee dans un construction des brevets sp´ecifiques, ceux li´es`ades bre- mat´erielle brevet´ee. Ces brevets logiciels in- vets de la deuxi`eme cat´egorie(qu’on peut terdisent dans les faits d’impl´ementer l’al- qualifier que “brevets g´en´eraux”) sont tr`es gorithme prot´eg´e(ou une am´elioration de difficile d’anticiper . Ces brevets peuvent celui-ci), quel que soit le langage de pro- toucher n’importe quel logiciel libre, depuis grammation et la licence du logiciel. Le droit le “bas niveau” du noyau Linux et du compi- d’impl´ementation s’obtient sous la forme lateur gcc, jusqu’au “haut niveau” des appli- d’une licence d’impl´ementation, d´elivr´eepar cations utilisateurs classiques comme Ope- le propri´etairedu brevet. nOffice.org. Il est parfois possible de contour- Quand on impl´emente un standard, ou, ner de tels brevets, soit parce qu’ils couvrent plus g´en´eralement, quand on cherche `are- un ´el´ement qui n’est pas crucial `al’applica- produire les fonctionnalit´es d’un logiciel d´ej`a tion (par exemple la gestion, dans un logi- existant, il faut consid´erer deux types de bre- ciel comme Gimp, du format gif quand celui- vets : ci ´etaitencore brevet´epar Unisys) et qu’il 1. les brevets d´epos´es par les inventeurs du suffit donc de supprimer cet ´el´ement, soit standard (ou du logiciel mod`ele) et qui encore car il existe une fa¸con d’obtenir la visent explicitement `aprot´eger certains mˆeme forme de r´esultat sans pour autant aspects de celui-ci ; impl´ementer l’algorithme brevet´e. 2. les brevets d´epos´es par des tiers et Dans la suite de cet article, je m’int´eresse qui s’appliquent `al’impl´ementation en avant tout aux brevets de la premi`ere cours de d´eveloppement. cat´egorie, car ils posent des probl`emes Les brevets de la premi`erecat´egorie, qu’on sp´ecifiques aux plateformes que j’´etudie, peut consid´erer comme “sp´ecifiques”, sont puisqu’ils ont ´et´e con¸cus pour prot´eger g´en´eralement mis en avant par les inventeurs celles-ci et s’appliqueront donc `a des du standard ou du logiciel, ce qui permet impl´ementations libres de fa¸con quasi- d’´evaluer les risques de contrefa¸con avant automatique. Ils mettent en p´eril ces mˆeme de commencer le d´eveloppement. Le impl´ementations, et donc touchent indirecte- probl`emeavec ce type de brevets est qu’ils ment tout logiciel libre d´evelopp´epour une ont souvent ´et´ed´epos´es pour contrˆoler au 3 maximum les possibilit´esde concurrence et Pour ˆetre pr´ecis, les conditions de redistribution impos´eespar la licence qu’on peut obtenir de Thom- qu’il est donc parfois totalement impos- son sont incompatibles avec une impl´ementation sible de les contourner. Le standard MP3, open source, ce qui motive la d´ecision de Red Hat.

3 de ces plateformes. Je mentionnerai cepen- RAND peut parfaitement ne demander au- dant aussi des brevets g´en´eraux, car certains cune redevance. Le probl`eme est plutˆotli´e ont ´et´edivulgu´es. aux conditions de redistribution et de sous- licence (cf l’analyse de Seth Nickell [16] ou 2.2 Licence RAND encore celle de la fondation Apache [17], ainsi que les d´eclarations de Michele Herman, de Pour certains organismes de standardi- Microsoft, rapport´ees dans [18]). sation comme l’ISO et l’ECMA, une li- cence RAND est caract´eris´eepar des termes “raisonnables et non discriminatoires” (tra- 3 .NET et les brevets logi- duction de Reasonable And Non Discrimi- ciels natory). Ces organismes exigent de leurs membres que les brevets n´ecessaires `a 3.1 Rappels sur la plateforme l’impl´ementation d’un standard soient li- Rappelons tout d’abord que .NET est une cenci´esen termes RAND. plateforme partiellement standardis´ee. Le Il n’existe pas de d´efinition formelle des cœur de la technologie est la sp´ecification ap- termes RAND4, mais l’aspect important pel´ee Common Language Infrastructure qui semble ˆetre le caract`erenon discriminatoire : d´ecritune machine virtuelle d’assez haut ni- les termes de la licence doivent d´ependre veau. La CLI est enti`erement couverte par de l’utilisation du brevet et non pas de le standard ECMA-335 [6], qui sp´ecifieaussi l’utilisateur. La redevance `aacquitter doit des biblioth`equesde base, ainsi que des pro- aussi ˆetre“raisonnables”, c’est-`a-dire com- fils, c’est-`a-dire des jeux de biblioth`eques. patible avec une utilisation commerciale de L’autre ´el´ement important de .NET est son l’impl´ementation. A titre d’exemple, on peut langage de pr´edilection, le C# [19], qui est consulter les tarifs de Thomson pour le stan- enti`erement sp´ecifi´epar le standard ECMA- dard MP3 [14] : si les d´eveloppeurs de LAME 334 [5]. [15] devaient respecter les brevets de Thom- En tant que standard ISO et ECMA, ces son, ils auraient `apayer entre 2,5 et 5 US deux ´el´ements fondamentaux de la plate- $ par copie du logiciel (et ils devraient bien forme .NET sont donc impl´ementables libre- entendu changer leur licence, incompatible ment, sous r´eserve de l’obtention d’une li- avec celle des brevets MP3). cence (au pire RAND [7]) pour les ´eventuels Je ne reviendrais pas sur l’incompatibilit´e brevets couvrant les technologies mise en g´en´eraleentre les licences RAND pour les œuvre pour l’impl´ementation. brevets et les licences libres pour les logi- A ce cœur de plateforme s’ajoute de nom- ciels. J’ai longuement abord´ece point dans breux biblioth`eques d´evelopp´ees par Micro- mon pr´ec´edent article et je renvoie le lecteur soft, comme par exemple Windows.Forms `acelui-ci pour les d´etails(cf [1], en parti- qui permet de cr´eer des interfaces gra- culier la section 4.4). Notons que ce n’est phiques ou encore ADO.NET qui regroupe pas uniquement l’aspect financier qui pose des API d’acc`es `a des bases de donn´ees. probl`eme dans le RAND, car une licence Ces biblioth`eques, qui repr´esentent l’essen- 4La Free Software Foundation propose de rem- tiel de .NET5, ne sont pas standardis´ees par placer RAND par un acronyme plus explicite, UFO, pour Uniform Fee Only, c’est-`a-direlicence `arede- 5La version 1.0 de .NET contenait environ 3 800 vance uniforme [13]. classes dont seulement 350 ´etaient standardis´ees [18].

4 l’ECMA et ne sont donc pas couvertes par But Microsoft (and our co- sa politique de brevets [7]. sponsors, Intel and Hewlett- Packard) went further and have 3.2 Des brevets sur .NET ? agreed that our patents essential to implementing C# and CLI will De prime abord, il semble difficile de sa- be available on a ”royalty-free and voir si les inventeurs de .NET (Microsoft otherwise RAND” basis for this en majorit´e, mais aussi Hewlett-Packard et purpose8. Intel) poss`edent des brevets sp´ecifiques qui Miller pr´ecise la nature des licences qui se- couvrent des ´el´ements cruciaux de la par- ront accord´ees pour les brevets essentiels, tie standardis´ee de la plateforme, car les mais n’indique pas s’il existe de tels brevets. d´eclarations des int´eress´essont relativement En juillet 2004, Miguel de Icaza, leader vagues. du projet Mono [22], impl´ementation libre Lors du CeBIT, en mars 2002, Steve Ball- de .NET financ´ee par Novell, indiquait dans mer (PDG de Microsoft), interrog´eau sujet un entretien donn´e`aMartin Lamonica [23] d’un soutien ´eventuel aux impl´ementations Well, at this point, we don’t know alternatives de .NET comme Mono, of any patent infringement that r´epondait [20] Mono has (committed)9. “Wir haben so viele Millionen in De Icaza confirmait ici ce qu’il avait d´ej`ain- .NET gesteckt, wir haben so viele diqu´elors de la rencontre des d´eveloppeurs Patente auf .NET, die wir pflegen Mono de mars 2004, `a savoir que Novell wollen6.” avait r´ealis´een 2004 une ´etude d’ant´eriorit´e Dans un entretien accord´e`aDavid Berlind pour d´eterminersi leur impl´ementation de en 2002 [18], Michele Herman, responsable .NET mettait en œuvre des algorithmes bre- de la “propri´et´eintellectuelle” chez Micro- vet´es [24] et avait conclu `a l’absence de soft, pr´ecisait contrefa¸con. En recoupant les d´eclarations des em- we believe we have a patent or one ploy´es de Microsoft et les affirmations de pending that’s essential to imple- De Icaza, on pourrait croire que Microsoft 7 menting the specification . ne poss`edefinalement qu’une demande de En 2002, Microsoft annon¸cait donc brevet concernant directement .NET (ou au poss´eder au plus un brevet indispen- moins la partie standardis´ee de la plate- sable `al’impl´ementation des deux standards forme). Comme nous allons le voir dans la ECMA. Un des inventeurs de .NET, Jim suite de l’article, cette vision idyllique est Miller, ´etait tout aussi ´evasif en f´evrier malheureusement d´ementie par les faits. 2003 sur une liste de diffusion concernant la 8“Mais Microsoft (et nos autres sponsors, In- plateforme [21] tel et Hewlett-Packaed) sont all´esplus loin et ont donn´eleur accord pour que nos brevets essentiels `a 6“Nous avons investis tant de millions dans .NET l’impl´ementation de C# et de la CLI soit licenci´e et nous avons obtenus tant de brevets sur .NET, que selon des termes “sans redevance ainsi que RAND” nous voulons les faire fructifier.” pour cet but [l’impl´ementationdes standards].” 7“nous pensons avoir un brevet ou une de- 9“Et bien pour l’instant, nous n’avons pas mande de brevet essentiel `al’impl´ementation de la connaissance d’une contrefa¸con de brevet que Mono sp´ecification.” pourrait commettre.”

5 3.2.1 Une demande de brevet sur brevet am´ericain ne couvre que les revendi- l’API de .NET cations (les claims) et pas la partie descrip- tive. Pour comprendre la port´ee de la de- Une demande de brevet [25] portant sur mande de brevet de Microsoft, il faut donc l’API de .NET a ´et´efaite en f´evrier 2002 et analyser les 41 revendications de celle-ci. Or, rendue publique un an plus tard, en f´evrier la premi`ererevendication est la suivante 2003. Elle a beaucoup attir´el’attention de la presse en ligne [26, 27] et plus g´en´eralement “A software architecture for a dis- des personnes s’int´eressant `a.NET. C’est tributed computing system compri- elle qui a d’ailleurs d´eclench´eela fameuse sing : d´eclaration de Jim Miller sur les licences [...] (cit´eeplus haut). a common language runtime Cette demande est caract´eristique des layer that can translate Web ap- d´erives du syst`eme de brevets am´ericains, plications written in different lan- puisqu’elle porte sur une API, c’est-`a-dire guages into an intermediate lan- sur une liste de sp´ecifications de types abs- guage supported by the common 11 traits et de fonctions ! Le r´esum´ede la de- runtime layer .” mande est ´edifiant Cette revendication couvre donc toute archi- “An application program interface tecture logicielle qui passe par un langage (API) provides a set of functions interm´ediaire pour son ex´ecution, `acondi- for application developers who build tion que le syst`eme supporte plusieurs lan- Web applications on a network gages et qu’il soit destin´e`ala production platform, such as Microsoft Corpo- d’applications Web distribu´ees. Les autres ration’s .NETTM platform10.” revendications d´ecrivent de fa¸con de plus en plus d´etaill´eeles API annex´ees `ala de- En d’autres termes, la demande de brevets mande. Les descriptions restent cependant pr´etend prot´eger une liste de fonctions pour tr`es vagues et donc tr`es g´en´erales. Elles d´evelopper des applications r´eparties. Cette peuvent donc couvrir l’API de .NET, mais liste contient les biblioth`eques de base de aussi plus g´en´eralement des API assez simi- .NET (sp´ecifi´eesdans le standard ECMA- laires dans leurs principes. Par exemple la 335 [6]), ainsi que de nombreuses autres bi- cinqui`eme revendication est formul´ee comme blioth`eques (en particulier ADO.NET, les suit Windows.Forms, etc.). La partie descrip- “An application program interface tive de la demande pr´esente la CLI (dont embodied on one or more computer la sp´ecification ECMA est annex´ee `a la readable media, comprising : demande de brevet), ainsi que ses prin- a first group of services related to cipes g´en´eraux (en particulier l’aspect multi- creating Web applications ; langage). Elle d´ecrit ensuite de fa¸con assez a second group of services related d´etaill´ee les API annex´ees `ala demande. Il est important cependant de noter qu’un 11“Une architecture logicielle pour un syst`eme in- formatique r´eparti comprenant : [...] une couche 10“Une interface de programmation qui fournit d’ex´ecution pour un langage commun capable de tra- un ensemble de fonctions pour les d´eveloppeurs qui duire des applications Web ´ecritesdans divers lan- construisent des applications Web sur une plateforme gages dans un langage interm´ediaire compatible avec r´epartie, comme la plateforme .NET de Microsoft.” la couche d’ex´ecutioncommune.”

6 to constructing client applications ; La bonne nouvelle est que le brevet ne a third group of services related semble pas sur la bonne voie (du point de to data and handling XML docu- vue de ses inventeurs). Le bureau des bre- ments ; and vets am´ericains`aen effet notifi´eMicrosoft a fourth group of services related de sa d´ecision de rejeter la demande (le 4 to base class libraries ; and further mai 2006). L’entreprise dispose de trois mois comprising : pour apporter des arguments et des modifi- a common language runtime cations pour que la demande soit de nouveau layer that can translate Web ap- examin´eeen appel (cette p´eriode peut ˆetre plications written in different lan- ´etendue `asix mois). Nous saurons donc dans guages into an intermediate lan- peu de temps si Microsoft tente de nouveau guage supported by the common sa chance avec cette API ou si l’entreprise runtime layer12.” pr´ef`ere abandonner la demande14. La mauvaise nouvelle r´eside dans les ar- Face `ades revendications aussi g´en´erales, on guments utilis´espar le bureau des brevets. ne voit pas comment une impl´ementation En fait, les revendications sont toutes re- libre de .NET comme Mono pourrait ne jet´ees car elles sont consid´er´eescomme des pas enfreindre le brevet Microsoft, s’il ´etait cons´equences triviales d’autres revendica- accord´e. Une mani`ere d’´echapper au bre- tions contenue dans des brevets accord´esou vet consisterait cependant `a´eviter de sa- dans des demandes. Plus pr´ecis´ement : tisfaire l’ensemble des closes des revendica- – d’une part, l’examinateur de la de- tions. En effet, la cinqui`emerevendication mande de Microsoft consid`ere qu’un (par exemple) porte sur une API qui inclut brevet de Roberts et al. [28] couvre les les cinq ´el´ements list´es. Il “suffit” donc de syst`emes r´epartis proposant d’un cˆot´e supprimer de l’API le groupe permettant la des services web et de l’autre une API cr´eation d’application web (c’est-`a-dire es- associ´ee; sentiellement ASP.NET) ou encore celle per- – d’autre part, il pr´ecise qu’une demande mettant la cr´eation d’applications clientes de David Yach [29] contient l’id´ee d’uti- (en gros Windows.Forms) pour ne pas en- liser un langage interm´ediaire (le fa- freindre la revendication13. meux common language runtime layer 12“Une interface de programmation, inscrite sur de la demande de Microsoft) pour tra- un ou plusieurs support(s) lisible(s) par un ordina- duire des applications Web ´ecrites dans teur, comprenant : un premier groupe de services as- d’autres langages ; soci´es`ala cr´eationd’applications Web ; un deuxi`eme – enfin, il consid`ere que la combinaison groupe de services associ´es`ala cr´eation d’applica- tions clientes ; un troisi`emegroupe de services as- des deux est triviale et donc non bre- soci´es`ala gestion de donn´ees et de documents XML ; vetable, ce qui invalide une grande par- un quatri`emegroupe de services associ´es`aune bi- blioth`equede classes de bases ; et comprenant de plus de .NET pour retomber dans le probl`eme g´en´eraldes une couche d’ex´ecutionpour un langage commun ca- brevets logiciels. pable de traduire des applications Web ´ecrites dans 14Notons qu’un abandon ne signifie pas une mise divers langages dans un langage interm´ediaire com- `a la poubelle de la demande ou encore un pas- patible avec la couche d’ex´ecutioncommune.” sage dans le domaine public de son contenu : le 13A` moins, bien entendu, qu’un autre brevet m´ecanisme des “continuations” permet `aun inven- couvre une combinaison moins large, ce qui est tout teur de d´eposer une nouvelle demande qui reprend `afait possible. On quitte cependant le cas sp´ecifique les ´el´ements r´ev´el´es dans la pr´ec´edente.

7 tie des revendications de la demande de pr´ec´edente. Les autres ont eu g´en´eralement Microsoft. plus de succ`es: L’examinateur invoque aussi un autre brevet 1. la demande 09/902,811 est devenue le de Microsoft [30] dont les ´el´ements (en par- brevet 7,017,162 (d´elivr´een mars 2006). ticulier tout ce qui concerne la gestion des Son r´esum´e est l´eg`erement diff´erent fichiers de configuration) peuvent aussi ˆetre de celui de la demande pr´ec´edemment combin´esde fa¸consimple avec ceux de [28] ´etudi´eepuisqu’il dit pour invalider les autres revendications. “An application program in- Il est difficile de bien ´evaluer les terface (API) provides a set cons´equences d’un rejet de la demande de of functions, including a set brevet de Microsoft. Si le bureau des brevets of base classes and types maintient ses arguments, .NET lui-mˆeme, that are used in substantially dans son incarnation orient´eeservices web, all applications accessing the serait finalement une contrefa¸con des bre- API, for application develo- vets et demande ´evoqu´esci-dessus. Ce se- pers who build Web applica- rait vraisemblablement le cas aussi pour une tions on Microsoft Corpora- impl´ementation libre de .NET. En pratique, tion’s .NETTM platform16.” les inventeurs du brevet [28] et celui de la de- En fait, le brevet prot`ege un mod`ele mande (si elle est accord´ee) pourraient donc particulier d’appel de m´ethodes `adis- suivre les conclusions du bureau des brevets tance (utilis´epar .NET), ainsi que des et attaquer Microsoft ou tout autre auteur syst`emes qui incluent ce mod`ele. d’une impl´ementation de .NET, sans avoir 2. la demande 09/902,809 est en cours `asuivre la politique de licence de l’ECMA, d’acceptation. Elle porte essentielle- puisqu’ils n’ont pas particip´eau processus ment sur une API de gestion du pro- de standardisation. Il s’agit donc d’un cas tocole HTTP. de brevets g´en´eraux que je mentionnais plus haut. 3. la demande 09/902,560 est devenue le brevet 6,920,461 (d´elivr´e en juin 2006). Le brevet porte essentiellement 3.2.2 Des brevets valid´esou en cours sur l’API d’interface entre .NET et les de validation bases de donn´ees (ADO.NET). Mais il y a en fait beaucoup plus gˆenant 4. la demande 09/902,810 est en cours que cette demande de brevet qui pourrait d’acceptation. Elle porte sur l’API de bien avoir jou´edans la blogosph`erele rˆole manipulation des documents au format de l’arbre qui cache la forˆet15. Microsoft a XML. en effet d´epos´een juin et juillet 2001 six de- 5. la demande 09/902,812 est en cours mandes de brevets concernant l’API .NET et d’appel apr`es rejet par le bureau des deux demandes concernant d’autres aspects 16“Une interface de programmation qui fournit de la plateforme. L’une des demandes est de- un ensemble de fonctions, incluant un ensemble de venue celle que j’ai ´etudi´ee dans la section classes et de types de bases qui sont utilis´es dans la quasi totalit´edes applications utilisant l’interface, 15A ce sujet, il est ´edifiant de ne voir mentionn´ee pour les d´eveloppeurs qui construisent des applica- que cette demande de brevet dans des articles r´ecents tions Web bas´ees sur la plateforme .NET de Micro- comme par exemple [31], datant de juin 2006. soft.”

8 brevets. Elle porte sur une API de un int cod´esur 4 octets) et la ver- construction de clients graphiques pour sion boxed dans laquelle la valeur des syst`emes r´epartis. Les arguments est encapsul´eedans un objet. du rejet sont int´eressants car ils font (b) la demande 10/848,402 est en pour une fois r´ef´erence `al’art ant´erieur cours d’examen et porte aussi en dehors du syst`eme des brevets, par sur ce syst`eme de repr´esentation exemple en utilisant un simple manuel double. Java ! En r´esum´e,Microsoft poss`ededonc au moins 6. la demande 09/598,105 est deve- deux brevets portant sur l’API de .NET et nue le brevet 6,836,883 (d´elivr´e en deux autres brevets portant sur le cœur de d´ecembre 2004). Il s’intitule “Method la CLI (compilation et syst`eme de type). and system for compiling multiple Deux autres brevets sur l’API devraient 17 languages ” et porte sur le cœur de ˆetre accept´es dans les mois qui viennent. .NET, la CLI. Le brevet prot`ege un En outre, quand on recherche les poursuites syst`eme dans lequel on compile un de demande ou les citations de brevets par fichier source vers un code ex´ecutable d’autres brevets, on constate que Micro- (´eventuellement pour une machine soft poss`edede nombreux autres brevets (ou virtuelle) et simultan´ement vers un demandes en cours) autour de .NET. Par fichier de m´etadonn´ees qui d´ecrit les exemple, le brevet 6,738,968 sur le syst`eme fonctionnalit´espropos´ees par ce source de type de .NET est cit´epar trois autres (en gros, l’interface des fonctions et brevets de Microsoft portant respectivement les types d´efinis). Comme ce genre sur du mapping relationnel, de la conversion de syst`eme est brevet´e depuis long- automatique de code entre diff´erents lan- temps, l’examinateur du brevet a fait gages et de la transformation automatique r´e´ecrire les revendications d’une fa¸con de hi´erarchies d’objets (toujours entre lan- relativement complexe dans laquelle le gages diff´erents). syst`emedoit n´ecessairement traiter au Une autre fa¸con de trouver des bre- moins deux langages diff´erents pour vets concernant .NET consiste simplement `a ˆetreprot´eg´e. chercher ceux dont l’un des auteurs est An- 7. la demande 09/613,289 a ´et´e aban- ders Hejlsberg, l’architecte de .NET. Outre donn´ee dans sa formulation de base, les brevets d´ej`acit´es, on trouve trois autres mais est poursuivie par deux demandes : brevets portant respectivement sur (a) la demande 09/614,158 est deve- 1. l’aspect r´eparti de l’API de .NET (bre- nue le brevet 6,738,968 (d´elivr´een vet num´ero7,013,469, d´elivr´een mars mai 2004). Il s’intitule Unified data 2006 et dans le mˆeme esprit que le bre- type system and method et porte vet 7,017,162) ; sur le syst`eme de repr´esentation 2. les m´ethodes de gestion de version double de certains types dans utilis´ees dans .NET (brevet num´ero la CLI : la version native (par 6,981,250, d´ecembre 2005) ; exemple un entier repr´esent´epar 3. le syst`eme de gestion des ´ev`enements 17“M´ethode et syst`eme pour compiler plusieurs (bas´esur la notion de delegates) utilis´e langages” dans .NET (brevet num´ero6,951,022,

9 septembre 2005). correspondante sans contrefa¸con. On trouve aussi 15 demandes de brevets im- Enfin, Microsoft a choisi de prot´eger des pliquant Hejlsberg. “d´etails” importants, comme par exemple le syst`eme de boxing automatique (brevet 6,738,968), la gestion des ´ev`enements par de- 3.2.3 Couverture des brevets legates (brevet 6,951,022), ou encore la ges- La lecture des diff´erents brevets de Micro- tion de version (brevet 6,981,250). soft sur .NET permet de d´egager quelques Globalement, Microsoft a donc cherch´e tendances. Les brevets ne pouvant prot´eger `averrouiller .NET afin de contrˆoler toute que des innovations, Microsoft a naturelle- impl´ementation du standard et surtout ment chercher `afaire ressortir dans ses de- de ces extensions (comme ADO.NET, mandes les parties originales de .NET. ASP.NET ou les Windows.Forms). Il fau- Le fait que la CLI ait ´et´eexplicitement drait ˆetreun expert de l’interpr´etationdes con¸cuepour g´ererplusieurs langages a ´et´e brevets am´ericains pour v´eritablement me- par exemple tr`es utilis´e,en particulier dans surer la port´ee des revendications conte- le brevet 6,836,883. Cependant, la solution nues dans les brevets accord´es. Mon point technique choisie, qui consiste `apasser par de vue d’amateur est que les verrous ont une description g´en´erique des services (fonc- ´et´e bien con¸cus et qu’il est donc impos- tions et types) propos´espar un module est sible de les contourner car ils portent sur tellement peu originale que Microsoft a ´et´e des concepts cruciaux, comme le multi- oblig´ede faire apparaˆıtre explicitement dans langages ou le boxing. Il est sˆurement envi- ses revendications le fait que le syst`eme sageable de produire des versions restreintes g´eraitplusieurs langages. La port´eedu bre- de .NET qui n’enfreignent par certains bre- vet correspondant est donc assez limit´eeet il vets, par exemple en se limitant au C# ou me semble qu’une impl´ementation de .NET en ´evitant certaines biblioth`eques, mais un limit´eeau C# (par exemple) ne serait pas clone de .NET (but du projet Mono, par couverte par le brevet en question et plus exemple) semble vouer `acontrefaire les pro- g´en´eralement par tout ce qui concerne la ges- duits de Microsoft. On peut se demander en tion de plusieurs langages. outre si les bindings vers des biblioth`eques Un autre aspect que Microsoft a cherch´e`a ´ecrites en C (par exemple Gtk#, cf la sec- mettre en avant comme novateur est l’orien- tion suivante), qui sont indispensables pour tation Web, et plus g´en´eralement l’aspect r´ecup´erer l’existant, ne correspondent pas r´eparti de .NET. Le domaine ´etant de nou- un support multi-langages et n’induisent pas veau tr`es concurrentiel, les brevets et les ainsi une contrefa¸con cet aspect crucial des demandes emploient des formulations tr`es brevets de Microsoft. sp´ecifiques. Ceci a pour effet de limiter le p´erim`etredes brevets correspondants, mais 4 Le cas de Mono aussi de rendre d´elicate l’impl´ementation d’un “clone” de .NET. Les brevets 7,013,469 4.1 O`uen est Mono ? et 7,017,162 sur l’API pour les appels `adis- tance sont par exemple tr`espr´ecis (ils in- Mono [22] est l’impl´ementation libre la diquent le nom des classes et leur rˆole)ce qui plus avanc´ee de .NET (la principale alter- rend impossible l’impl´ementation de l’API native, Portable.NET, r´ealis´eepar le projet

10 DotGnu [32], est moins compl`eteet semble tions importantes au niveau du cœur de la progresser moins vite). Mono est dirig´epar plateforme, en particulier celles induites par Miguel de Icaza et sponsoris´epar son em- l’introduction de la g´en´ericit´e.Le support de ployeur, Novell. Mono comporte plusieurs ces fonctionnalit´esest en cours d’int´egration ´el´ements : dans Mono, mais la version 1.2 ne cherchera – une impl´ementation des deux standards pas `aˆetrecompatible avec .NET 2.0 (cer- ECMA, c’est-`a-dire de la machine vir- tains ´el´ements, comme par exemple le com- tuelle .NET (CLI), des biblioth`equesde pilateur C# 2.0, sont complets, d’autres sont base et d’un compilateur C# ; moins avanc´es). – un ensemble de biblioth`eques de Globalement, Mono est donc encore compatibilit´e avec la version de ´eloign´ed’une impl´ementation compl`ete de .NET compl`ete distribu´ee par Mi- la plateforme .NET, mˆeme dans sa version crosoft (ADO.NET, ASP.NET, Win- 1.1. Malgr´e cette incompatibilit´e partielle dows.Forms, etc.) ; avec le .NET de Microsoft, Mono propose – un ensemble d’autres biblioth`equesori- une plateforme compl`etede d´eveloppement ginales comme Gtk# (binding Gtk pour multi OS, en particulier grˆace `aGtk# qui .NET) et le (binding permet de des interfaces gra- OpenGL, SDL, etc.). phiques portables. Il offre aussi un support La plateforme .NET ´evolue r´eguli`erement multi-langages (Java, Visual Basic, etc.). depuis son lancement officiel en janvier Pour minimiser les risques li´esaux brevets 2002 (version 1.0). L’´etat d’avancement de de Microsoft, je pense qu’il est pr´ef´erable Mono dans son impl´ementation de la plate- d’utiliser les biblioth`eques sp´ecifiques Mono forme doit donc ˆetrejug´erelativement aux comme Gtk# plutˆotque les biblioth`eques diff´erentes versions de celle-ci (1.1 en sortie de compatibilit´es avec la version Micro- en avril 2003 et 2.0 sortie novembre 2005). soft de .NET comme Windows.Forms. C’est Quand elle est sortie en juin 200418, d’ailleurs cette politique qui est suivie par les la version 1.0 de Mono proposait une d´eveloppeurs des applications Mono les plus impl´ementation compl`ete des standards connues, en particulier le syst`emed’indexa- ECMA (dans leur premi`ereversion), mais tion et de recherche sur le poste client Beagle une compatibilit´e seulement partielle avec [33], le gestionnaire de photos num´eriques F- .NET 1.1, en particulier en raison d’une Spot [34] et l’outil de prise de notes Tomboy impl´ementation tr`es incompl`ete des Win- [35]. dows.Forms. La prochaine version majeure de Mono (1.2), pr´evue pour les mois qui 4.2 L’´equilibre de la terreur viennent19 doit inclure un support complet des Windows.Forms de .NET 1.1. Nous avons vu que Microsoft poss`ede de Le passage de la version 1.1 de .NET `a nombreux brevets touchant de pr`esou de la version 2.0 a ´et´el’occasion de modifica- loin .NET. Comme Mono ambitionne de reproduire totalement .NET (et pas seule- 18 La derni`ere version stable de Mono est la ment la partie standardis´ee), la contrefa¸con 1.1.13.8, sortie le 5 juin 2006 semble in´evitable. La situation est cependant 19la version 1.1.17, sortie fin aoˆut 2006, est consid´er´eecomme une beta bien avanc´ee de Mono suffisamment complexe pour qu’on se garde 1.2 d’une conclusion hˆative sur les risques que

11 court Mono, comme nous allons le voir dans Tout repose sur l’Open Invention Network la suite du texte. (OIN [39, 40]). Cette entreprise a ´et´ecr´e´ee en novembre 2005 sous l’impulsion de IBM, 4.2.1 Red Hat et Mono Novell, Philips, Red Hat et Sony. Le but de l’OIN est de r´eduire les risques que font On sait que Red Hat, en tant qu’entreprise peser les brevets logiciels sur Linux et plus am´ericaine, est particuli`erement vuln´erables g´en´eralement sur un certain nombre d’appli- aux risques induits par les brevets logi- cations majeures li´ees `aLinux. ciels. Elle n’inclut donc pas dans sa distri- Pour ce faire, l’OIN a d´elimit´eune zone bution Fedora Core (ni bien sˆurdans Red “franche”, c’est-`a-dire une liste de logiciels Hat Entreprise Linux) de logiciels suscep- prot´eg´es[41], qui va du noyau Linux `aOpe- tibles de violer des brevets, le cas le plus nOffice.org en passant par KDE, MySQL, embl´ematique ´etant celui du format MP3 (cf etc. Pour devenir membre de l’OIN, une en- au dessus). treprise “paye” avec des licences : elle doit Pendant longtemps, Fedora Core n’a pas en effet s’engager `ane pas utiliser ses bre- contenu Mono. Les raisons de cette absence vets (pr´esents et `avenir) contre les logiciels n’ont jamais ´et´edonn´ees explicitement, mais de la zone franche (noyau Linux et logiciels l’interpr´etation classique ´etait que Mono ris- prot´eg´es).Les cinq membres fondateurs se quait d’enfreindre des brevets de Micro- sont donc engag´es sur ce point. soft sur .NET. Havoc Pennington, ancien pr´esident de la fondation GNOME et em- Pour assurer que la zone franche reste ploy´ede Red Hat, indiquait dans son blog sˆurepour les d´eveloppeurs, il faut inciter en mai 2005 [36] que Red Hat ne pouvait pas les entreprises `arejoindre l’OIN. L’entreprise distribuer Mono et ne pouvait pas non plus ach`ete donc des brevets logiciels dont elle d´etailler les raisons de cette impossibilit´e. offre une licence de type royalty free `ases Pourtant, en janvier 2006, Mono a ´et´einclu membres. A ce jour, l’OIN poss`ede13 bre- dans rawhide, la version de d´eveloppement vets [42], ainsi que quelques demandes, ce de Fedora Core, puis dans la version 5 de la qui peut sembler assez faible en regard de distribution [37]. l’effort `aconsentir pour rejoindre l’OIN. En Paradoxalement, le revirement de Red Hat fait, toute l’astuce r´esidedans le choix des n’est pas du `aune modification du statut brevets. Contrairement `ace qu’on pourrait l´egalde Mono, mais `ala mise en place d’un croire, l’OIN n’a pas acquit des brevets cou- m´ecanisme de protection que nous allons vrant directement Linux ou un des logiciels d´etailler. de la zone franche. Au contraire, les brevets ont ´et´echoisis de sorte `aavoir une couver- ture assez large. Par exemple, certains bre- 4.2.2 L’Open Invention Network vets d’acquisition r´ecente (mai 2006) portent La d´ecision de Red Hat a ´et´eexpliqu´ee, plus ou moins directement sur les plate- de fa¸con officieuse, par un de ses employ´es, formes Java et .NET. C’est le cas du brevet Greg DeKoenigsberg, dans son blog [38]. En de d´ecembre 1998 num´ero5,848,274 (d´epos´e r´esum´e, cette d´ecision s’appuie sur une poli- en 1996), intitul´e Incremental byte code com- tique de dissuasion qui n’est pas sans rappe- pilation system, qui couvre le principe de ler l’´equilibre de la terreur de la dissuasion l’ajout dynamique de code `aun programme nucl´eaire. en cours d’ex´ecution. Il s’applique vraisem-

12 blablement au chargement dynamique de donc qu’elle poss`ededes armes pour d´efendre byte code en Java et en .NET. Un autre bre- sa zone franche, ce qui a motiv´el’inclusion vet concerne un syst`eme de programmation de Mono dans Fedora Core. permettant de m´elanger plusieurs langages. D’autres brevets, comme ceux de la d´efunte entreprise Commerce One, portent sur le Bien qu’il n’y ai pas eu beaucoup de com- commerce ´electronique et les services web, munication `ace sujet, except´eune annonce et semblent avoir une port´ee tr`es large. Pour de presse de l’OIN [45], l’acquisition de bre- l’anecdote, c’est Novell, le principal sponsor vets portant sur les technologies de machines de Mono, qui a achet´eles brevets20 de Com- virtuelles et de d´eveloppement multi-langage merce One en d´ecembre 2004, pour la somme me semble aussi un pas important dans faramineuse de 15,5 millions de $ US, avant la d´efense de Mono (et plus g´en´eralement de les offrir `al’OIN [43]. d’impl´ementations libres de .NET). Bien entendu, cette incitation risque de rester encore trop faible pour que des en- En fait, la cr´eation de l’OIN modifie treprises comme Microsoft ou Sun rejoignent l’´evaluation des risques qu’on peut associer l’OIN. C’est ici qu’entre en jeu l’´equilibre de `aMono (et plus g´en´eralement `al’utilisation la terreur. L’OIN a annonc´equ’elle ne cher- d’une impl´ementation libre de .NET). L’ana- cherait pas `aprofiter de ses brevets de fa¸con lyse des brevets de Microsoft pouvait en effet commerciale (elle ne vendra donc pas de li- faire craindre le pire (en l’occurrence la mise cence), mais qu’elle ripostera contre toute place par Microsoft d’une licence RAND in- attaque dirig´ee vers sa zone franche. En compatible avec une impl´ementation open d’autres termes, si une entreprise tente de source des standards ECMA, ainsi que des faire valoir un brevet contre Linux ou une licences prohibitives pour les brevets cou- des applications de la liste, l’OIN se r´eserve vrant la partie non standardis´ee). Les bre- la possibilit´ede contre attaquer en utilisant vets de l’OIN couvrent en partie .NET et ses propres brevets. en partie les activit´esde Microsoft dans le domaine des services web. Attaquer Mono 4.2.3 Et Mono ? pour son impl´ementation du cœur de .NET (la partie standardis´ee) apparaˆıtdonc com- La bonne nouvelle pour Mono est que porter quelques dangers pour Microsoft. Les cette impl´ementation de .NET figure dans risques sont donc maintenant partag´es, ce la liste des applications prot´eg´ees, dans la qui, si on est convaincu par la doctrine de zone franche de l’OIN. L’autre bonne nou- l’´equilibre de la terreur, devrait avoir pour velle est que les brevets Commerce One ont, cons´equence de les r´eduire des deux cˆot´es. selon de nombreux experts, une port´eeassez En ce sens, bien que Mono soit toujours large (cf le dossier des Cover Pages [44]). couvert par des brevets de Microsoft, il ne Pour les membres de l’OIN, notamment Red court pas plus de risques que les autres Hat, ces brevets semblent suffisamment dan- logiciels que Microsoft pourrait attaquer, gereux pour ˆetredissuasifs. L’OIN consid`ere comme par exemple OpenOffice.org. Pour ´evaluer les risques r´esiduels, il faut donc 20Notons que cette acquisition porte `ala fois sur 3 brevets, mais aussi sur de nombreuses demandes ´evaluer l’int´erˆetque pourrait avoir Microsoft dont deux ont d´ej`aconduit `ade nouveaux brevets. `aattaquer Mono.

13 4.2.4 Que pense Microsoft de Mono ? Mono as a competitive threat to its own development tools business Bien que la protection fournie `aMono par [...] Mono has taken a small subset l’OIN soit int´eressante, elle ne fait que rendre of .Net and cloned–and it’s unclear plus coˆuteux un ´eventuel proc`es contre No- how much they’ve cloned and how vell. Microsoft poss´edant des r´eserves d’ar- good it is22.” gent consid´erables(en mai 2006, l’entreprise disposait de 35 milliards de $ US directe- En septembre 2005, S. ”Soma” Somasegar, ment mobilisables), cet obstacle n’est pas vice pr´esident de la Developer Division de n´ecessairement infranchissable. Il est donc Microsoft indiquait [48] : important d’analyser l’attitude de Micro- “Whenever somebody does some- soft vis `a vis de Mono pour avoir une thing on the .NET framework, I vue compl`ete de l’environnement dans lequel get excited. The first thing that cette impl´ementation de .NET ´evolue. comes to mind is, hey, they see Cette analyse est difficile car Microsoft value in the .NET framework and ne semble pas avoir de politique arrˆet´ee they want to do something with it, sur Mono. Officiellement, les seules relations so I’m excited about that. These entre Novell et Microsoft au sujet de .NET guys now have made good progress sont celles induites par la participation de in terms of reverse-engineering the Novell `al’ECMA. Novell est en effet membre .NET framework. Good for them. associ´ede l’organisme et participe au comit´e To me, it means that the .NET fra- technique 39 qui sp´ecifie entre autres C# mework is that much more inter- et la CLI. Novell poss`edecependant moins esting to people who have different de poids que Microsoft (qui est membre or- opinions, different ways of looking dinaire) car l’entreprise n’a pas le droit de at things23.” vote en assembl´eeg´en´erale. Miguel De Icaza Le fait qu’une partie de .NET soit standar- a r´ecemment confirm´e(et regrett´e) dans un dis´een’empˆeche pas M. Montgomery de par- entretien [46] accord´e`aSam Ramji de Port ler de clonage. Cela n’empˆeche pas non plus 2521 que les relations officielles entre Novell et Microsoft au sujet de .NET se limitaient 22“Bien que le projet Mono promette une sim- `acette participation commune `al’ECMA. plification du processus de cr´eation d’applications De plus, les d´eclarations d’employ´es de multi-plateformes, Microsoft ne voit pas Mono comme une menace contre son offre en outils de Microsoft ne les engagent pas beaucoup. On d´eveloppement [...] Mono a clon´eune petite partie per¸coit une certaine sympathie, mais aussi de .Net – l’´etendueet la qualit´edu clonage restent `a des ´el´ements n´egatifs. En juin 2004, John d´eterminer.” 23 Montgomery, directeur du marketing chez “Je suis excit´e `a chaque fois que quelqu’un r´ealisequelque chose `apartir de la plateforme .NET. Microsoft disait [47] : La premi`ere chose qui me vient `al’esprit c’est “Ah, “Although the Mono Project pro- ils ont r´ealis´el’int´erˆetde la plateforme .NET et ils mises to simplify the process of veulent faire quelque chose avec,” donc ¸came sti- mule. Ces gars ont maintenant fait de grands progr`es building cross-platform applica- dans leur “reverse engineering” de la plateforme tions, Microsoft does not view .NET. C’est bien pour eux. Pour moi, cela signifie que la plateforme .NET est d’autant plus int´eressante 21Port 25 est un site de blogs des membres de pour des gens qui ont des opinions diverses, diverses l’Open Source Software Lab de Microsoft. fa¸cons de voir les choses.”

14 M. Somasegar de parler de reverse enginee- Mono. Outre Montgomery et Somasegar, on ring, activit´eprohib´ee par de nombreuses li- peut citer Brian Goldfarb, chef produit de cences logicielles et interdites dans certains tout ce qui concerne le web qui disait en juin pays. M. Somasegar est cependant assez po- 2005 [51] : sitif sur l’exp´erience.NET elle-mˆeme. C’est “We’re excited about what they’re aussi le cas de M. Montgomery qui disait en doing, but we don’t support the d´ecembre 2002 [49] : Mono project. They are completely “The fact that Ximian is doing on their own26.” this work is great. It’s a valida- tion of the work we’ve done, and Quand Tim Anderson, qui l’interrogeait, lui it validates our standards activities. demanda si Microsoft s’opposait au projet, Also, it has caused a lot of eyeballs il r´epondit : in the open source community to be “No. We are totally indifferent to- directed to .Net, which we appre- wards it. I think it’s great what ciate24.” they’re doing, but it’s neither here Cette opinion est partag´eepar le cr´eateur de not there27.” .NET, Anders Hejlsberg, qui disait de Mono Du cˆot´epositif, on note que Mono (de mˆeme en juin 2005 [50] : que de nombreux autres outils libres, comme “Oh, I think it’s great, I think it’s DotGnu, par exemple) est mentionn´edans proof that standardization works, la liste des outils C# disponible sur le site that the work that we’ve done in du Microsoft Developer Network [52]. Outre ECMA to standardize CLI [Com- le r´ecent entretien accord´e`aPort 25 d´ej`a mon Language Infrastructure] and mentionn´e[46], De Icaza avait ´et´einterrog´e C# actually has [results] and we par le MSDN [53] en 2001, bien longtemps have seen completely independent avant la sortie de Mono 1.0. third-party implementations of the Du cˆot´en´egatif, on peut noter De Icaza infrastructure. So I think it’s a good a tent´e deux fois de proposer une ses- thing. I think it’s more good for us sion (Birds of a feather, BOF) `ala Profes- than bad for us25.” sional Developers Conference de Microsoft. On trouve souvent chez les employ´esde Mi- Les deux tentatives se sont sold´ees par des crosoft une attitude ambigu¨e`al’´egardde ´echecs. Les propositions de session BOF sont 24“C’est tr`es bien que Ximian fasse ce travail. normalement mises aux votes, mais Micro- C’est une validation de notre travail et de nos acti- soft a sp´ecifiquement supprim´ela proposi- vit´esde standardisation. En outre, une cons´equence tion portant sur Mono (au moins en 2005 de ce travail est que de tr`es nombreuses paires d’yeux [54, 55]). Pourtant, De Icaza a pr´esent´eof- de la communaut´eopen source se sont tourn´eesvers ficiellement Mono au symposium Lang.NET .NET, ce qui est appr´eciablepour nous.” 25“Ok, je pense que c’est super, que c’est une [56] organis´efin juillet 2006 par Erik Mei- preuve que la standardisation fonctionne, que le tra- jer de Microsoft, ce qui ne fait que confirmer vail que nous avons fait au sein de l’ECMA pour standardiser la CLI et C# a vraiment des r´esultats 26“Nous sommes excit´epar ce qu’ils font, mais et que nous voyons l`aune impl´ementation de l’in- nous ne soutenons pas le projet Mono. Ils ne peuvent frastructure totalement ind´ependante et r´ealis´ee par compter que sur eux-mˆemes.” des tiers. Donc je pense que c’est une bonne chose. 27“Non. Cela nous indiff`ere. Je pense qu’ils font Je pense que ¸canous fait plus de bien que de mal.” quelque chose de super, mais rien n’est termin´e.”

15 `ames yeux la schizophr´enie de l’entreprise cord de licence, mais il n’y a pas de rai- (un ph´enom`ene assez courant dans les tr`es son de croire que Microsoft cherche `amettre grandes structures !). en p´eril son travail de standardisation en ne proposant pas une licence Royalty Free. 4.2.5 Synth`ese Cette licence sera sˆurement compatible avec une impl´ementation libre (mais tr`es certai- L’attitude de Microsoft envers Mono reste nement pas avec une licence GPL [18]). donc peu claire. On note pourtant une ten- Par contre, il est possible que Microsoft dance qui s’articule autour de deux points de tente de faire valoir ses brevets sur cer- vue. Pour les scientifiques et les ing´enieurs taines parties de l’API .NET, surtout si (comme Meijer et Hejlsberg), Mono est une Mono devient trop concurrentiel. On sait, r´eussite technique, `a la fois pour Novell par exemple, que Microsoft verrait d’un tr`es qui montre un savoir faire tr`es important, mauvais œil une impl´ementation open source mais aussi pour Microsoft qui a su sp´ecifier de deux des futures briques de base de Win- et documenter sa plateforme de fa¸con suf- dows Vista, Windows Communication Foun- fisamment compl`ete et claire pour qu’on dation (ex Indigo) et Windows Presenta- puisse l’impl´ementer de fa¸con totalement tion Foundation (ex Avalon), cf par exemple ind´ependante. Comme l’´ecrit Stephen Walli, [58, 59, 60]. Indigo consiste essentiellement ancien de chez Microsoft, l’entreprise a en en un ensemble d’outils permettant la mise certain sens besoin de Mono car [57] en place de services web [61]. Une partie “As long as there is only one com- d’Indigo est donc standardis´eepar le W3C et mercial implementation, there is no OASIS. Cette partie peut ˆetreimpl´ement´ee standard, and the customers know librement, ce qui permet de se connecter `a it regardless of the number of trees un service web fourni par un serveur Indigo. killed to produce specifications28.” C’est justement le cˆot´eserveur que Micro- Le deuxi`emepoint de vue est plus celui des soft entend prot´eger, notamment grˆace `ases d´ecideurs qui, tout en reconnaissant l’int´erˆet brevets. Avalon [62], de son cˆot´e,peut ˆetre technique de Mono, nient son impact com- vu comme un moteur et une api de rendu mercial possible, soit en le d´enigrant (“it’s graphique tr`es sophistiqu´es, dans l’esprit de neither here not there”, dixit Goldfarb), soit Cairo [63], associ´es`aun dialecte XML per- en laissant planer des menaces peu claires mettant de d´ecrire des interfaces graphiques. concernant les brevets (“we have a patent or Cependant, ceci ne semble pas faire cou- one pending that’s essential to implementing rir un grand risque `aMono. Pour l’instant, the specification”, dixit Herman). ces deux briques ne sont pas encore officielle- Il est donc assez probable, de mon point ment disponibles. Le projet Mono s’int´eresse de vue, que Microsoft ne cherche pas dans les `aIndigo et Novell a d´emarr´eun projet plus ann´ees `avenir `aempˆecher l’impl´ementation ou moins compatible, appel´eAmber [64]. Le de la partie standardis´ee de .NET. No- projet ne semble cependant pas de faire un vell sera peut ˆetreoblig´ede signer un ac- clone d’Indigo mais plutˆotde supporter les mˆemes standards. Miguel De Icaza n’est pas 28 “Tant qu’il n’existe qu’une impl´ementationcom- un grand admirateur d’Avalon (cf [65]) et merciale, il n’y a pas de standard, et les consomma- teurs le savent, quelle que soit la quantit´ed’arbres aucune tentative de clonage du moteur de abattus pour imprimer les sp´ecifications.” rendu n’est pour l’instant envisag´ee[66].

16 5 Java le point B) `atout JSR d’accorder une li- cence d’impl´ementation et de distribution 5.1 Rappels sur la plateforme sans redevance (Royalty Free). La formula- tion du JSPA dans sa version 229 a ´et´epens´ee Contrairement `a.NET, Java n’est pas une pour satisfaire les demandes de la fondation plateforme standardis´ee par un organisme Apache [70, 71], et notamment pour assurer ind´ependant. La sp´ecification et l’´evolution la possibilit´ede r´ealiser une impl´ementation de la plateforme sont confi´eesau Java Com- libre de chaque JSR. munity Process (JCP, [67]). Ce programme Il y a cependant une contrainte de taille. permet une collaboration entre Sun et ses Une impl´ementation (libre ou non) d’un JSR partenaires, en majorit´edes grandes entre- doit obligatoirement ˆetre conforme, c’est-`a- prises comme IBM ou SAP, mais aussi la fon- dire dation Apache, le groupe JBoss et le profes- seur Doug Lea de l’Universit´ede New York 1. qu’elle doit impl´ementer compl`etement Oswego (cf [68]). Le JCP produit des Java la sp´ecification ; Specification Requests (JSR) qui d´ecrivent 2. qu’elle ne doit pas ajouter, modifier ou des ´evolutions de la plateforme, c’est-`a-dire supprimer quelque chose dans les pa- du langage Java, de la machine virtuelle ckages d´efinis par la sp´ecification ; et des API. Le JCP s’int´eresse tout par- 3. qu’elle doit passer avec succ`es les tests ticuli`erement aux trois profils que compte de compatibilit´e (le Technology Com- la plateforme, `asavoir l’´edition embarqu´ee patibility Kit, un ensemble de tests de dite Micro Edition (pour les t´el´ephones por- conformit´eassoci´e`achaque JSR). tables, par exemple), l’´edition classique dite Standard Edition et l’´edition entreprise (En- Bien que ceci ne soit pas stricto sensu in- terprise Edition). Un profil est d´efini par la compatible avec une impl´ementation libre, liste des API support´ees. cela rend celle-ci plus difficile, comme l’a Je ne reviendrais pas en d´etail ici sur bien analys´eRichard Stallman dans [8]. Pour le fonctionnement du JCP car il est d´ej`a r´esumer (cf aussi [1]), la diffusion d’une ver- pr´esent´ede fa¸conassez compl`etedans mon sion incompl`ete d’une impl´ementation d’un pr´ec´edent article [1] et que la situation n’a JSR, voire d’une impl´ementation qui n’a pas pas ´evolu´ede fa¸consensible depuis. effectivement pass´e le TCK (par exemple parce qu’on n’en poss`edepas une licence), est potentiellement ill´egale(car elle ne res- 5.2 Une impl´ementation libre pos- pecte pas les conditions d’obtention d’une li- sible si elle est conforme cence d’impl´ementation ou de distribution). L’avantage de Java sur .NET est que De ce fait, le d´eveloppement ouvert des lo- le cr´eateurdu premier s’est engag´edepuis giciels libres est officiellement interdit, sauf longtemps `aautoriser des impl´ementations si le “public” ne peut acc´eder qu’`ades ver- libres (et pr´evoit d’aller beaucoup plus loin, sions passant le TCK (par exemple grˆace `a comme nous allons le voir). Comme je l’in- un m´ecanisme de test automatique qui ne diquais dans [1], la participation au JCP publie une image du projet que si elle est n’est possible qu’en signant le JSPA (Java conforme). Notons que le probl`eme l´egalest Specification Participation Agreement, [69]). ici double : Celui-ci impose (section 5, en particulier 29la version actuelle est la 2.0.1

17 1. le contenu de la sp´ecification d’un JSR Cependant, tous ces logiciels libres est soumis aux r`egles classiques du co- d´ependent d’une impl´ementation du pyright et du droit des marques (l’utili- profil standard de la plateforme Java sation du mot Java n’est pas libre, par (J2SE) pour lequel il n’existe pas encore31 exemple) ; d’impl´ementation libre compl`ete. La licence 2. toute impl´ementation d’un JSR risque d’impl´ementation et de distribution du de violer des brevets sur certains de J2SE ´etant la mˆeme(depuis la version 1.4) ces aspects pour lesquels il faut donc que celle du J2EE (aussi depuis la version obtenir une licence (contenue dans 1.4), il est parfaitement possible de r´ealiser celle qu’on accepte pour obtenir la l´egalement une impl´ementation libre du sp´ecification). premier profil comme cela a d´ej`a´et´e fait pour le second. Le travail consid´erable que Il faut aussi noter que mˆeme si une cela repr´esente (en raison principalement de impl´ementation ne pr´etend pas ˆetre une la taille de l’api du J2SE) explique que le r´ealisationconforme d’un JSR, elle peut ne travail reste pour l’instant inachev´e. Ceci pas respecter le copyright et/ou le droit des devrait changer dans les mois qui viennent, marques le concernant, ou encore contrefaire tant en raison des progr`es r´ealis´es par les un brevet le prot´egeant. impl´ementations libres existantes que de la En pratique cependant, Sun et ses parte- sortie prochaine de la version de Sun en naires n’ont jamais pos´ede probl`emes aux open source. projets libres, et certaines impl´ementations de JSR ont acquis le statut officiel d’impl´ementations conformes. Les cas les plus m´ediatis´es sont certainement ceux de 5.3 Les impl´ementations libres de JBoss [72] et de JOnAS [73] pour leur Java impl´ementations libres30 de la version entre- prise de la plateforme Java (J2EE 1.4), mais Quand on parle d’impl´ementation libre de il ne faut pas oublier les contributions ma- Java, on fait r´ef´erence au profil standard, au jeures de la fondation Apache [74], comme J2SE qui a d´ej`aconnu 6 versions depuis la par exemple Tomcat [75], impl´ementation 1.0 jusqu’`ala 1.5 actuellement stable (la ver- de r´ef´erences des Servlet et des Java Ser- sion 1.6 est d´ej`adisponible en version beta). ver Pages, Geronimo [76] impl´ementation Dans ce profil, la plateforme comprend une conforme de J2EE 1.4, les tr`es nombreux machine virtuelle et une ´enorme api. On lui ´el´ements inclus dans l’impl´ementation de ajoute en g´en´eral la partie qui permet le r´ef´erence de J2SE par Sun (Xerces pour d´eveloppement Java, `asavoir essentiellement l’analyse de fichiers XML, Xalan comme un compilateur (ainsi que d’autres ´el´ements impl´ementation du langage de transforma- moins cruciaux, comme des fichiers headers tion XSLT, BCEL pour la manipulation du pour l’interfa¸cage avec le C, par exemple). byte code des fichiers .class, Regexp comme Le J2SE associ´eaux ´el´ements n´ecessaires au moteur d’analyse d’expressions r´eguli`eres), d´eveloppement forme le JDK (Java Develop- etc. ment Kit). 30Ces logiciels compl`etent le profil standard J2SE de Sun par une impl´ementation libre des API addi- tionnelles permettant d’atteindre le profil entreprise. 31d´ebutseptembre 2006.

18 5.3.1 Classpath sur Classpath sont tr`es avanc´ees. Comme Mono, elles offrent une plateforme de Les impl´ementations les plus avanc´ees du d´eveloppement compl`ete, en particulier J2SE sont bas´ees sur le projet GNU Class- grˆace `a SWT [87], une biblioth`eque gra- path [77] qui vise `aimpl´ementer l’int´egralit´e phique libre concurrente du int´egr´e de l’api du J2SE. Le but de la version 1.0 de `aJ2SE. De nombreuses applications com- Classpath est d’ˆetre compatible avec la ver- plexes tournent tr`esbien apr`es compilation sion 1.1 du J2SE. La version actuelle (0.92) par GCJ. C’est le cas par exemple d’Eclipse, impl´emente 99.78% de l’api 1.1. La couver- du client BitTorrent Azureus [88], du ser- ture de l’api 1.4 (la premi`ere `aˆetre offi- veur JOnAS mentionn´eplus haut, etc. Les ciellement impl´ementable librement) est de progr`esr´ecents dans l’impl´ementation libre 99.85%. de Swing ont permis de faire fonctionner Au niveau des machines virtuelles, la des applications d´evelopp´ees pour cette api, concurrence est importante. Parmi celles comme par exemple jEdit [89] et JFreeChart donc le d´eveloppement est tr`es actif et [90]. suit de pr`es les releases de Classpath, on Notons cependant que, stricto sensu, au- peut citer Kaffe [78], CACAO [79], Sa- cune de ces impl´ementations n’est l´egale bleVM [80], Jikes RVM [81], IKVM.NET puisque Classpath ne passe pas les tests de [82] et JamVM [83]. Toutes ces solu- conformit´e. tions fonctionnent relativement bien, in- cluent g´en´eralement une compilation au vol (just in time) et impl´ementent de fa¸con 5.3.2 Harmony relativement compl`ete les sp´ecifications de En 2005, Geir Magnusson Jr. lance le la machine virtuelle. On peut consid´erer projet Harmony, incub´eau sein de la fon- que Kaffe et IKVM.NET sont les solutions dation Apache [91]. Le but du projet est d´evelopp´ees les plus activement. la r´ealisation d’une impl´ementation sous li- La compilation de sources Java vers le by- cence Apache du J2SE dans sa version 1.5, tecode de la machine virtuelle a longtemps ce qui inclut donc une machine virtuelle, un ´et´eassur´ee par le compilateur open source compilateur et une impl´ementation de l’api. d’IBM, Jikes [84]. Celui-ci n’a cependant A son lancement, le projet ne semblait pas pas ´evolu´edepuis octobre 2004 et ne sup- trop ambitieux, car une collaboration avec porte pas les ajouts au langage de la version Classpath ´etaitenvisag´ee. Cependant, l’in- 1.5. On lui pr´ef`eredonc le compilateur in- compatibilit´eentre la GPL (dans sa version clus dans l’environnement de d´eveloppement 2) et la licence Apache, ainsi qu’une cer- Eclipse [85]. tain absence de souplesse de la part de la Le projet GCJ (int´egr´e`aGCC [86]) pro- fondation [92], ont rendu toute collabora- pose une solution tr`es originale dans le tion impossible, ce qui fait d’Harmony un monde Java, qui permet de compiler direc- projet totalement ind´ependant de Classpath. tement du Java vers du code natif, tout en Les tensions qui sont apparus pendant les conservant tous les aspects dynamiques de la n´egociations `ace sujet ont finalement pro- plateforme, en particulier du chargement de voqu´ele d´epart de la plupart des projets bytecode `ala vol´ee. libres qui pensaient initialement collaborer Les impl´ementations libres de Java bas´ees avec Harmony [93]. Cependant, Harmony

19 est tr`es fortement soutenu par de grosses L’´etape suivante a ´et´e l’annonce pro- entreprises, en particulier IBM et Intel. Il nonc´ee en mai 2006 par le PDG de Sun, a re¸cudes dons de code tr`es cons´equents, Jonathan Schwartz, `a l’occasion de la en particulier une impl´ementation d’AWT, conf´erenceJavaOne [101] : Java2D et Swing ainsi qu’une machine vir- “The question is not whether we tuelle et des outils associ´es en provenance will open-source Java, the question d’Intel (IBM a fait don de classes fondamen- is how.32” tales). De ce fait, et malgr´ela m´esentente L’engagement a ´et´econfirm´een aoˆut2006 avec les projets plus anciens, Harmony pro- lors de la conf´erence LinuxWorld. Sun gresse relativement vite et est d´ej`a ca- pr´evoit de mettre ses impl´ementations de pable de faire tourner quelques applications r´ef´erencedes profils J2SE et J2ME sous une comme jEdit. La couverture de l’api 1.5 licence libre (approuv´ee par l’OSI) dans les (89.44%), reste inf´erieure `acelle de Class- mois qui viennent [102]. L’entreprise pr´evoit path (95.13%), mais les progr`esr´ealis´esen `a d’abord de placer son compilateur et sa ma- peine plus d’un an sont consid´erables (tech- chine virtuelle sous une licence libre en oc- niquement, l’impl´ementation propos´ee par tobre 2006, puis la version J2ME compl`ete Harmony n’est toujours pas l´egale,la confor- pour la fin 2006. Le reste du profil J2SE sera mit´en’´etant pas assur´ee). lib´er´ed´ebut 2007, `al’exception des ´el´ements que Sun ne pourra pas mettre sous licence 5.3.3 Et l’impl´ementation de Sun ? libre pour des raisons de droits partag´es sur le code [103]. Pour mieux communiquer sur Malgr´e ses efforts pour autoriser cet ´ev`enement majeur du monde Java, Sun l’impl´ementation d’une version libre de a cr´e´e`al’occasion de cette annonce un site Java, Sun a longtemps refus´ede rendre libre d´edi´e`ala lib´eration de la plateforme, sur le- sa propre impl´ementation de r´ef´erence. En quel on trouve une agr´egationde blogs, une r´eponse `ades pressions d’IBM `ace sujet [94] revue de presse, un forum, etc. [104]. (quelques jours apr`es une demande simi- L’annonce de Sun a provoqu´eet provoque laire d’Eric Raymond [95]), Sun r´epondait encore beaucoup de r´eactions et de d´ebats, vouloir conserver un contrˆoleserr´ede Java dont le site cr´e´epar l’entreprise donne un pour ´eviter tout probl`emede compatibilit´e ´ tr`esfid`ele. L’essentiel des d´ebatsporte arguant, contre toute vraisemblance, qu’une sur la licence que Sun va choisir pour son licence open source favorisait les forks [96]. impl´ementation. Son caract`erelibre est ac- Cependant, Sun a progressivement chang´e quis, mais rien d’autre n’est arrˆet´eofficiel- son discours. En mars 2005, Sun a ainsi lanc´e lement. Il est possible, par exemple, que la de nouvelles licences pour le code source licence choisie ne soit pas compatible avec la de son impl´ementation de J2SE et pour la GPL, ce qui empˆecherait toute collaboration version binaire de celle-ci [97]. Consid´er´ees avec le projet Classpath. La licence pour- comme tr`es complexes (cf [98, 99] par rait aussi ˆetre incompatible avec la licence exemple), elles n’en constituaient pas moins Apache, bloquant cette fois-ci toute collabo- un pas en avant vers un peu plus d’ouverture, ration avec Harmony. L’id´eal pour le libre confirm´epar une am´elioration de la licence 32“La question n’est pas de savoir si nous allons de distribution (dans le sens d’un surcroˆıt rendre Java open-source, mais plutˆot comment nous d’ouverture) en mai 2006 [100]. allons le faire.”

20 serait bien entendu une licence compatible `a 5.4.2 Autres brevets la fois avec la GPL et la licence Apache, ce qu’appellent de leurs vœux les d´eveloppeurs Malheureusement, la grande popularit´e Classpath comme Tom Tromey [105]. de la plateforme Java a d´echaˆın´e les “in- venteurs”. On compte en effet 552 brevets poss´ed´es par d’autres entreprises que Sun qui mentionnent Java dans leur r´esum´e. 5.4 Java et les brevets Ces brevets sont cependant construits au- tour de la technologie Java et font donc 5.4.1 Brevets d´etenus par Sun r´ef´erence aux brevets d´etenus par Sun. En ce sens, enfreindre un des brevets im- Tout comme .NET, Java est couvert par plique g´en´eralement d’enfreindre ceux de des brevets logiciels. James Gosling, inven- Sun. De ce fait, Sun lui-mˆeme est relati- teur de Java, est par exemple co-auteur de vement prot´eg´e des menaces induites par tr`esnombreux brevets portant sur la pla- les brevets des autres inventeurs. Le cas teforme et poss´ed´es par Sun. Neuf d’entres d’une impl´ementation libre ind´ependante est eux portent sur la v´erification de byte code, moins clair car on rencontre ici les brevets qui est au cœur du mod`elede s´ecurit´ede g´en´erauxque je mentionnais en d´ebut d’ar- Java, d’autres concernent les servlets, sur ticle. Il faudrait analyser les brevets un `a l’interface graphique, sur l’aspect r´eparti, le un pour savoir s’ils couvrent des algorithmes chargement dynamique de byte code, etc. mis en œuvre dans une impl´ementation libre. Plus g´en´eralement, on compte 89 brevets Il existe cependant des menaces plus poss´ed´es par Sun et mentionnant Java dans graves car tous les brevets qui s’appliquent leur r´esum´e.Bien que Sun n’ait jamais voulu `aJava ne sont pas post´erieurs`aceux de donner une liste de ses brevets s’appliquant Sun. Un exemple ´edifiant est celui des bre- `aJava (cf [106], page 5), il est clair que ces vets “Kodak”. En 2002 Kodak a attaqu´e derniers sont nombreux et que leur couver- Sun au sujet de trois brevets, de formula- ture est tr`es large : on voit mal comment une tion assez obscure, qui couvrent vraisembla- impl´ementation du J2SE pourrait ne pas en- blement l’utilisation d’un bus logiciel pour freindre ces brevets. faire collaborer des objets (et mˆeme plus Cependant, contrairement au cas de g´en´eralement la notion de d´el´egationd’une .NET, l’utilisation de ces brevets est tˆache d’un objet `aun autre) et qui s’ap- officiellement permise pour r´ealiser une pliquent de ce fait `aJava [108]. Sun a ´et´e impl´ementation du J2SE. Pour t´el´echarger reconnu coupable de contrefa¸conpar un jury la sp´ecification de ce profil de Java, il populaire33 [109], puis est parvenu `aun ac- faut en effet accepter la licence correspon- cord de licence avec Kodak portant sur un dante [107] qui donne explicitement un droit montant de 92 millions de $ US [110, 111]. d’impl´ementation (sous r´eserve de confor- Les termes exacts de l’accord ne sont pas mit´e). Cette licence est compatible avec une impl´ementation libre. Rappelons qu’au 33A la lecture des brevets, je me permets de me contraire, Microsoft n’a toujours pas publi´e poser des questions sur la pertinence d’un tel juge- de document officiel pr´ecisant la licence qu’il ment, non pas sur le caract`ereav´er´e(ou non) de la contrefa¸con,mais plutˆotau sujet de la comp´etence compte accorder pour l’impl´ementation des technique du jury et donc des motivations du juge- standards ECMA. ment.

21 connus, mais Sun a indiqu´eque ses clients voir Microsoft attaquer Novell a sujet de ´etaient prot´eg´es[112]. L’entreprise a aussi Mono, son impl´ementation libre de .NET. mentionn´edans son communiqu´ede presse Des consid´erations strat´egiques renforcent les projets libres auxquels elle participait l’impression que Mono ne risque pas grand `al’´epoque (comme OpenOffice.org), en in- chose, au moins pour son impl´ementation diquant clairement que les produits bas´es du standard. En outre, les applications les sur Java dans le cadre d’un accord de li- plus int´eressantes construites pour Mono cence avec Sun ´etaient aussi couverts par (Beagle, F-Spot, etc.) n’utilisent pas ou peu l’accord avec Kodak. Il est donc probable les parties les moins sures juridiquement que le futur JDK open source sera prot´eg´e (celles qui impl´ementent des api Microsoft par cet accord. Il n’est pas clair que cela non standardis´ees comme Windows.Forms soit aussi le cas des impl´ementations libres ou ASP.NET). En fait, la situation semble ind´ependantes. Notons au passage que selon s’ˆetre suffisamment clarifi´ee pour que Red divers experts (cf [110] par exemple), les bre- Hat se d´ecide `a inclure Mono dans Fe- vets Kodak s’appliquent `a.NET et que Mi- dora Core (depuis la version 5) et que crosoft poss`ede un accord de licence `aleurs le projet Gnome lui offre une place offi- sujets. Il n’y pas de raison particuli`ere pour cielle (un nouveau module officiel de Gnome que Mono soit prot´eg´epar cet accord, ce qui peut maintenant d´ependre de #/mono, le rend au moins aussi vuln´erable de Class- cf [113]). Il faudrait ˆetre na¨ıf pour croire path et Harmony. que tous les probl`emes de Mono sont r´egl´es, mais les risques qu’on prend en d´eveloppant avec cette plateforme sont moins importants 6 Conclusion qu’ils ne semblaient l’ˆetre fin 2004. Comme dans mon pr´ec´edent article sur le Pour Java, la situation est encore mˆeme sujet [1], je me garderai bien d’´emettre plus claire puisque Sun va lib´erer son une conclusion d´efinitive sur les plateformes impl´ementation de r´ef´erence dans les mois Java et .NET. Je me contenterai de proposer qui viennent, ce qui va r´eduire de fa¸con un point de vue personnel d’amateur. drastique les risques inh´erents `acette plate- En un certain sens, les (presque) deux forme. En outre, les impl´ementations libres ann´ees qui nous s´eparent de ma premi`ere concurrentes ne risquent pas grand chose analyse ont ´et´e tr`es b´en´efiques pour le de Sun, mˆeme si elles ne respectent pas libre. Du point de vue technique, les encore la lettre de l’accord de licence as- impl´ementations open source des deux pla- soci´eaux sp´ecifications du J2SE, car elles en teformes ont ´enorm´ement progress´eau point suivent l’esprit : pr´eserver une compatibilit´e de proposer des alternatives viables aux compl`ete avec l’impl´ementation de r´ef´erence. impl´ementations de r´ef´erence. Cependant, les menaces que font peser Du point de vue l´egal,la situation est de- les brevets logiciels sur le libre et, plus venue un peu plus claire. Concernant .NET, g´en´eralement, sur la cr´eation logicielle, sont on sait maintenant avec certitude que Mi- loin d’ˆetre r´egl´ees, quelle que soit la bonne crosoft poss`ededes brevets couvrant la pla- volont´ed’acteurs comme Sun ou la protec- teforme (`ala fois la partie standardis´eeet tion offerte par des structures comme l’OIN. le reste). La cr´eationde l’Open Invention J’en veux pour preuve le proc`esintent´epar Network semble avoir r´eduit le risque de FireStar Software contre Red Hat sur une

22 all´egationde contrefa¸con [114] que r´ealiserait le projet Hibernate [115]. FireStar d´etient un brevet portant sur le mapping relation- nel objet, c’est-`a-dire sur les algorithmes qui traduisent une classe en un sch´ema de base de donn´ees, pour stocker des objets dans un SGBD. Le projet Hibernate propose un outil de mapping `ala fois pour Java et pour .NET, et pourrait donc enfreindre le brevet (comme tout outil de ce genre, tant les revendications sont larges). On en sait pas encore quelle sera la strat´egiede Red Hat concernant ce proc`es, mais il marque la concr´etisationd’une des plus grandes peurs de notre communaut´e: il s’agit en effet du le premier proc`esqui op- pose `aun projet open source une accusation de contrefa¸con [116]. L’´ecriture d’un logiciel libre est donc une activit´erisqu´ee dans un monde qui autorise la privatisation du savoir, sous le pr´etexte fallacieux de favoriser l’innovation. Pour ne pas c´eder`aun sentiment d’impuissance ou de panique, il faut comprendre la hi´erarchie des risques, et savoir ainsi qu’on en prend un peu plus en choisissant de d´evelopper avec Mono qu’en s’appuyant sur le JDK de Sun. De mˆeme que le choix d’une licence libre n’est pas sans cons´equencesur le fu- tur d’un projet (appropriation commerciale, support institutionnel, financement, etc.) et doit donc ˆetrefait en connaissance de cause, celui d’un environnement de d´eveloppement ne devrait pas seulement reposer sur des ar- guments techniques. J’esp`ere que cet article aiderait chacun `aprendre ses responsabilit´es et `aarbitrer entre la technique (rapidit´ede d´eveloppement, performances du logiciel fi- nal, etc.) et le juridique.

23 R´ef´erences

[1] Fabrice Rossi. Java, .NET et les logiciels libres. GNU/Linux Magazine France, (67) :8–17, D´ecembre 2004. http://apiacoa.org/publications/2004/ lm-java-dotnet-free.pdf. [2] Site de l’Open Source Initiative. http://www.opensource.org/. [3] Site de ECMA International. http://www.ecma-international.org/. [4] Site de l’International Organization for Standardization (iso). http://www.iso.ch/. [5] ECMA international. C# Language Specification, fourth edition, June 2006. Standard ECMA-334, disponible `a l’URL http://www.ecma-international.org/ publications/standards/Ecma-334.htm. [6] ECMA international. Common Language Infrastructure (CLI), fourth edition, June 2006. Standard ECMA-335, disponible `al’URL http://www.ecma-international. org/publications/standards/Ecma-335.htm. [7] Code of conduct in patent matters. http://www.ecma-international.org/memento/ codeofconduct.htm. La politique de l’ECMA en mati`ere de brevets. [8] Richard Stallman. Free but shackled - the Java trap. http://www.gnu.org/ philosophy/java-trap.html, April 2004. [9] Thomson. Patent portfolio. http://www.mp3licensing.com/patents/index.html. [10] Gabriel Bouvigne. Patents and mp3. http://www.mp3-tech.org/patents.html. [11] Article mp3 sur la wikip´edia. http://en.wikipedia.org/wiki/MP3. [12] Mp3 support in fedora core. http://fedoraproject.org/wiki/Multimedia/MP3 et http://fedoraproject.org/wiki/ForbiddenItems#MP3_Support. Fedora Wiki. [13] Free Software Foundation. Some confusing or loaded words and phrases that are worth avoiding. http://www.gnu.org/philosophy/words-to-avoid.html. [14] Thomson. Royalty rates. http://www.mp3licensing.com/royalty/. [15] Site du projet lame. http://lame.sourceforge.net/. [16] Seth Nickell. Why mono is currently an unacceptable risk. http://www.gnome.org/ ~seth/blog/mono, May 2004. [17] ASF position regarding Sender ID. http://apache.org/foundation/docs/ sender-id-position.html, September 2004. [18] David Berlind. Will C# benefit Microsoft, or the industry ? http://techupdate. zdnet.com/techupdate/stories/main/0,14179,2887217,00.%html, October 2002. ZDNet. [19] Gr´egoireLejeune. Introduction au langage c#. GNU/Linux Magazine Franc, (67), D´ecembre 2004. [20] Steve ballmer : Kein t¨anzchen an der leine. http://www.heise.de/newsticker/ meldung/25564, Mars 2002. Heise Online.

24 [21] Jim Miller. Microsoft applies for .Net patent. http://web.archive.org/web/ 20030609164123/http://mailserver.di.unipi.it%/pipermail/dotnet-sscli/ msg00218.html, February 2003. D´eclarationsur le brevet sur l’API de .NET par un des inventeurs du brevet. [22] Site du projet Mono. http://www.mono-project.com/. [23] Martin LaMonica. More than an open-source curiosity. http://news.com.com/ 2008-7344_3-5271084.html, July 2004. CNET News.com. [24] John Sequeira. Mono developer meeting. http://www.oreillynet.com/databases/ blog/2004/03/mono_developer_meeting%.html, March 2004. [25] Adam W. Smith et al. Application program interface for network software platform. Patent Application 10/087,027, United States Patent and Trademark Office, February 2002. Num´erode publication 20030028685. Disponible sur le site http://portal. uspto.gov/external/portal/pair. [26] Andrew Orlowski. Ms patents .Everything. http://www.theregister.co.uk/2003/ 02/11/ms_patents_everything/, February 2003. The Register. [27] Lisa M. Bowman. .Net patent could stifle standards effort. http://news.com.com/ 2100-1001_3-984052.html, February 2003. CNET News.com. [28] Andrew F. Roberts et al. Method and apparatus for providing web based services using an xml runtime model to store state session data. Patent 6,792,605, United States Patent and Trademark Office, September 2004. [29] David Yach. Virtual machine web browser. Patent Application 09/728,543, United States Patent and Trademark Office, August 2002. Num´ero de publication 20020112078. [30] Richard Louis Firth and David Treadwell. System having a of protocol inde- pendent reentrant network interface functions for providing common calling interface for communication and application protocols. Patent 5,987,517, United States Patent and Trademark Office, November 1999. [31] Dee-Ann LeBlanc. New mono-based applications for gnome in fedora core 5. http: //www.linuxplanet.com/linuxplanet/reviews/6232/1/, June 2006. Linux Planet. [32] Site du projet DotGNU. http://www.dotgnu.org/. [33] Site de Beagle. http://beagle-project.org/Main_Page. [34] Site de F-Spot. http://www.f-spot.org/Main_Page. [35] Site de Tomboy. http://www.beatniksoftware.com/tomboy/. [36] Havoc Pennington. Yay, language debates. http://log.ometer.com/2005-05.html\ #10, May 2005. [37] Stephen Shankland. Red hat : Mono in fedora, not enterprise linux. http://news.com. com/2061-10795_3-6025387.html, January 2006. CNET News.com. [38] Greg DeKoenigsberg. Fedora and Mono and OIN – clarifications. http://gregdek. livejournal.com/4008.html, March 2006. [39] Site de l’Open Invention Network. http://www.openinventionnetwork.com/.

25 [40] Mark H. Webbink. The Open Invention Network. Linux Magazine, page 18, April 2006. Consutable en ligne apr`es enregistrement gratuit sur http://www.linux-mag. com/content/view/2541/. [41] Open Invention Network. Complete list of linux environment components. http:// www.openinventionnetwork.com/pat_linuxdefpop.html, 2006. [42] Open Invention Network. Open Invention Network’s currently owned patents. http: //www.openinventionnetwork.com/pat_owned.php. [43] John Markoff. Novell discloses it bought e-commerce patents. The New York Times, May 2005. http://www.iht.com/articles/2005/05/02/business/novell.. [44] Robin Cover. Commercenet proposes collecting contributions to purchase key web ser- vices patents. http://xml.coverpages.org/ni2004-11-24-a.html, November 2004. Cover Pages. [45] Open invention network acquires new patents to protect linux. http://www. openinventionnetwork.com/press_release.php, May 2006. [46] Sam Ramji. Talking mono with miguel de icaza. http:// port25.technet.com/archive/2006/08/11/Let_2700_s-talk-Mono_3A00_ %--Sam-interviews-Miguel-de-Icaza.aspx, August 2006. Port 25. [47] Martin LaMonica. Novell ships cross-platform mono tool. http://news.com.com/ Novell+ships+cross-platform+Mono+tool/2100-1012_3-5%253448.html, June 2004. CNET News.com. [48] Todd Bishop. The mono ’experiment’. ttp://blog.seattlepi.nwsource.com/ microsoft/archives/005691.html, September 2005. Todd Bishop’s Microsoft Blog. [49] John McGrath. Mono & .net : The odd couple. http://techupdate.zdnet.com/ techupdate/stories/main/0,14179,2907356,00.%html, December 2002. ZDNet. [50] Paul Krill. Microsoft’s hejlsberg touts .net, c-omega technologies. http://www. infoworld.com/article/05/06/10/HNhejlsberg_1.html, June 2005. InfoWorld. [51] Tim Anderson. Miguel de icaza on mono. http://www.itwriting.com/ monointerview.php, 2005 July. [52] C# programming tools. http://msdn.microsoft.com/vcsharp/programming/ tools/. MSDN. [53] Dare Obasanjo. Using the ecma standards : An interview with mi- guel de icaza. http://msdn.microsoft.com/netframework/programming/clr/ default.aspx?pul%l=/library/en-us/dndotnet/html/deicazainterview.asp, De- cember 2001. MSDN. [54] Todd Bishop. Rival shines in shadows at microsoft’s l.a. event. Seattle Post-Intelligencer, September 2005. http://seattlepi.nwsource.com/business/240989_pdcmono16. html. [55] Miguel de Icaza. Mono meeting at the microsoft pdc. http://tirania.org/blog/ archive/2005/Sep-06.html, September 2005.

26 [56] Lang.net symposium. http://www.langnetsymposium.com/, July–August 2006. [57] Stephen Walli. Mono, microsoft, and mischief. http://stephesblog.blogs.com/my_ weblog/2005/08/mono_microsoft_.html, August 2005. [58] Gavin Clarke. Indigo not so open as .net framework ? http://www.regdeveloper.co. uk/2005/05/26/ndigo_mono_no_no/, May 2005. Reg Developer. [59] Gavin Clarke. Pay to play with microsoft’s indigo. http://www.theregister.co.uk/ 2005/06/16/_microsoft_indigo/, June 2005. The Register. [60] Steven J. Vaughan-Nichols. Microsoft puts roadblock in front of open-sourcing avalon and indigo. eWeek, June 2005. http://www.eweek.com/article2/0,1759,1829797, 00.asp. [61] Windows communication foundation. http://msdn.microsoft.com/winfx/ technologies/communication/default.aspx%. Microsoft .NET Framework 3.0. [62] Windows presentation foundation. http://msdn.microsoft.com/winfx/reference/ presentation/default.aspx. Microsoft .NET Framework 3.0. [63] Site de cairo. http://cairographics.org/. [64] Projet amber sur novell forge. http://forge.novell.com/modules/xfmod/project/ ?amber. [65] Miguel de Icaza. A j2ee moment of zen. http://tirania.org/blog/archive/2006/ Aug-02.html, August 2006. [66] Mono hacking roadmap. http://www.mono-project.com/Mono_Hacking_ Roadmap#Avalon_plans, September 2005. [67] Site du Java Community Process (JCP). http://www.jcp.org/. [68] Executive Committee Info. http://jcp.org/en/participation/committee. Compo- sition de l’Executive Committee du JCP. [69] Java Specification Participation Agreement. http://www.jcp.org/aboutJava/ communityprocess/JSPA2.pdf, Janvier 2005. Version actuellement en vigueur : 2.0.1. [70] JSPA news & status. http://jakarta.apache.org/site/jspa-position.html, 2002. La position de la fondation Apache pour la r´evision du JSPA. [71] Robert A. Gingell. Java community process (JCP) program chair responds to apache software foundation. http://jcp.org/aboutJava/communityprocess/announce/ LetterofIntent.html. La position de Sun pour la r´evisiondu JSPA. [72] JBoss becomes first open source application server to achieve J2EE 1.4 compatibi- lity certification. http://www.jboss.com/pdf/press/j2eecertfinal.pdf, July 2004. Annonce de presse de JBoss Inc. pour la certification de JBoss 4.0 en tant que serveur J2EE. [73] JOnAS becomes the first non commercial open-source application server to complete J2EE 1.4(tm) compatibility certification. http://www.objectweb.org/phorum/read. php?f=25&i=88&t=88, February 2005. Annonce de presse du consortium ObjectWeb pour la certification de JOnAS 4 en tant que serveur J2EE.

27 [74] Apache and the jcp. http://www.apache.org/jcp/. Description de la participation de la fondation Apache au JCP. [75] Site de Tomcat. http://tomcat.apache.org/. [76] Site de Geronimo. http://geronimo.apache.org/. [77] Site de Classpath. http://www.gnu.org/software/classpath/. [78] Site de Kaffe. http://www.kaffe.org/. [79] Site de CACAO. http://www.cacaojvm.org/. [80] Site de SableVM. http://sablevm.org/. [81] Site de Jikes RVM. http://jikesrvm.sourceforge.net/. [82] Site de IKVM.NET. http://www.ikvm.net/. [83] Site de JamVM. http://jamvm.sourceforge.net/. [84] Site de Jikes. http://jikes.sourceforge.net/. [85] Site d’eclipse. http://www.eclipse.org/. [86] Site de GCJ. http://gcc.gnu.org/java/. [87] SWT : The standard . http://www.eclipse.org/swt/. [88] Site d’azureus. http://azureus.sourceforge.net/. [89] Site de jEdit. http://www.jedit.org/. [90] Site de JFreeChart. http://www.jfree.org/jfreechart/. [91] Site du projet Harmony. http://incubator.apache.org/harmony/. [92] Commentaire de Dalibor Topic (d´eveloppeur kaffe et classpath) au sujet de l’absenve d’accord entre la fondation apache et classpath. http://www.osnews.com/permalink. php?news_id=14198&comment_id=110641, April 2006. OsNews. [93] Mark Wielaard. Toward a free java. http://lwn.net/Articles/184967/, May 2006. LWN. [94] Martin LaMonica. Ibm urges sun to make java open source. http://news.com. com/IBM+urges+Sun+to+make+Java+open+source/2100-1007_3-%5165427.html, Fe- bruary 2004. CNET News.com. [95] Eric S. Raymond. Open letter to sun : Let java go. http://www.catb.org/~esr/ writings/let-java-go.html, February 2004. [96] Martin LaMonica. Sun reluctant to make java open source. http://news.com.com/ Sun+reluctant+to+make+Java+open+source/2100-7344_3-%5173427.html, March 2004. CNET News.com. [97] Martin LaMonica. Door to java source code opens a crack wider. http: //news.com.com/Door+to+Java+source+code+opens+a+crack+wider/2100-7% 344_3-5621235.html, 2005. CNET News.com. [98] Dalibor Topic. Welcome to the java melodrama show ! http://www.advogato.org/ person/robilad/diary.html?start=65, March 2005.

28 [99] Andrew Orlowski. ’get a lawyer !’ sun tells developers. http://www.channelregister. co.uk/2005/03/17/two_new_java_licenses/, March 2005. Channel Register. [100] Martin LaMonica. Sun to make java more linux-friendly. http://news.com.com/ Sun+to+make+Java+more+Linux-friendly/2100-7344_3-60%68852.html, May 2006. CNET News.com. [101] Joris Evers. Sun promises to open-source java. http://news.com.com/Sun+promises+ to+open-source+Java/2100-7344_3-607276%0.html, May 2006. CNET News.com. [102] Stephen Shankland. Sun expands open-source java plan. http://news.com.com/ Sun+expands+open-source+Java+plan/2100-7252_3-61056%01.html, August 2006. CNET News.com. [103] Les plans de sun pour la lib´eration de java. https://jdk.dev.java.net/ news-08-14-06.html. [104] Site Open Sourcing the JDK. http://community.java.net/jdk/opensource/. [105] Tom Tromey. Open source java. http://tromey.com/blog/?p=262, August 2006. [106] Sonali Shah and Frank Sommers. Does the JCP adequately balance innovation with maintenance of Java’s standards ? JavaWorld. http://www.javaworld.com/ javaworld/jw-11-2002/jw-1108-jcp.html, November 2002. [107] Specification : Java 2 platform standard edition development kit 5.0 specification (”spe- cification”). http://java.sun.com/j2se/1.5.0/docs/relnotes/license.html, Au- gust 2004. [108] Jonathan Skillings. Kodak sues sun over aspects of java. http://news.com.com/ 2100-1001-836322.html, February 2002. CNET News.com. [109] Pamela Jones. Kodak wins Java lawsuit against Sun. http://www.groklaw.net/ article.php?story=20041003041632172, October 2004. [110] Stephen Shankland. Sun settles Kodak’s Java suit for $92 million. http://news.com. com/2100-1012_3-5401804.html, October 2004. CNET News.com. [111] Charles Babcock and John Foley. The cost of ideas. http://www.informationweek. com/story/showArticle.jhtml?articleID=499005%78, October 2004. Information Week. [112] Sun Microsystems stands behind its customers and communities, settling outstanding litigation with Eastman Kodak company. http://www.sun.com/smi/Press/sunflash/ 2004-10/sunflash.20041007.2.html, October 2004. Communiqu´ede presse de Sun sur l’accord avec Kodak. [113] Elijah Newren. New module decisions for 2.16. http://mail.gnome.org/archives/ devel-announce-list/2006-August/msg00000%.html, August 2006. [114] Floyd Marinescu. Red hat sued over hibernate 3 orm patent infringement claim. http: //www.infoq.com/news/RedHat-Sued-Due-to-Hibernate-3-O, June 2006. [115] Site d’hibernate. http://hibernate.org/. [116] Bruce Perens. The monster arrives : Software patent lawsuits against open source developers. http://technocrat.net/d/2006/6/30/5032, June 2006.

29