Java, .NET et les logiciels libres

La page est créée Sophie Joubert
 
CONTINUER À LIRE
Java, .NET et les logiciels libres
                                            Fabrice Rossi
                                        http://apiacoa.org/

                               Publication originale : décembre 2004
                                 Version actuelle : 21 juillet 2005

   Cet article a été publié dans le nu-             1    Introduction
méro 67 de la revue GNU/Linux Maga-
zine France en Décembre 2004. Je remercie                Deux plate-formes de développement rem-
Denis Bodor et les éditions Diamond pour              portent un succès important dans les entre-
avoir autorisé la distribution de cet article         prises : Java et .NET. Elles comportent de
selon les conditions indiquées dans la sec-           nombreux points communs, en particulier ce-
tion A. L’article est disponible en ligne à           lui d’être justement des cadres de développe-
l’URL http://apiacoa.org/publications/                 ment (des plate-formes) qui allient un langage
2004/lm-java-dotnet-free.pdf. La section               orienté objet de haut niveau (Java ou C#),
B détaille les modifications effectuées dans l’ar-   une plate-forme d’exécution (les machines vir-
ticle depuis sa publication. J’ai pour objectif de     tuelles) et une bibliothèque gigantesque qui
faire évoluer l’article dans les mois qui viennent    couvre à peu près tout les besoins d’un pro-
afin de le maintenir à jour. Si vous avez des sug-    grammeur. Mon but dans cet article n’est
gestions ou des commentaires, merci d’utiliser le      pas de m’intéresser aux aspects techniques de
journal correspondant sur mon compte linuxfr1 .        Java et de .NET, mais plutôt de me focali-
                                                       ser sur leurs ressemblances les plus gênantes
                                                       pour les auteurs de logiciels libres (ou open
                                                       source) : Java et .NET ont été créés par des
                                                       entreprises privées (par opposition aux lan-
Résumé                                               gages issus de la recherche académique, par
                                                       exemple) et leurs implémentations de réfé-
   Cet article présente les problèmes liés au       rence ne sont pas des logiciels libres ou open
contrôle, par l’intermédiaire de brevets logi-       source. De plus, divers brevets logiciels sont
ciels et d’accord de licence complexes, de Java        de la partie. Je me propose d’étudier ici les
et de .NET par les entreprises qui les ont             conséquences de ces points cruciaux, en ou-
créés. Il tente d’apporter des éléments de ré-    bliant presque totalement le mérite technique
ponse à une question fondamentale pour la             des deux plate-formes.
communauté du libre : Java et .NET sont-ils             Avant de me plonger dans les problèmes
compatibles avec le logiciel libre ?                   de licences et de brevets logiciels, j’aimerais
                                                       cependant faire un petit détour par la tech-
                                                       nique. En effet, si Java et .NET n’avaient au-
   1
       Url : https://linuxfr.org/~boubou/              cun intérêt technique, il n’y aurait pas lieu de
Java, .NET et les logiciels libres                GNU/Linux Magazine France n°67, Décembre 2004

se poser la difficile question de leur compa-           gressif du C/C++ au profit de Java et/ou de
tibilité avec le libre. Nous disposons de nom-         C# ? Il ne s’agirait pas bien sûr de rempla-
breux langages et bibliothèques à la fois libres      cer l’infrastructure de Gnome par une version
et d’excellente qualité, et nous n’avons donc          Java/C#, mais plutôt de privilégier ces lan-
pas vraiment besoin de langages supplémen-             gages pour les nouvelles applications. Comme
taires, même si la diversité n’a jamais été un      je l’ai déjà écrit, mon but ici n’est pas de ré-
problème pour le libre, au contraire. Même            pondre à cette question du point de vue tech-
dans cette hypothèse, il nous faudrait cepen-          nique, mais d’étudier les conséquences que
dant prendre garde de ne pas nous couper du             pourrait avoir la généralisation de l’utilisation
reste du monde, car Java et .NET sont de plus           de .NET et de Java dans les projets libres, en
en plus utilisés dans les entreprises. L’ensei-        déterminant qui contrôle ces plate-formes et
gnement de la programmation, dans les écoles           ce que cela implique pour le libre. Je com-
spécialisées et les universités, ne peut s’affran-   mencerai l’article par un bref rappel sur les
chir de ce fait. En pratique, Java est donc             éléments techniques nécessaires à la compré-
utilisé comme langage d’apprentissage de la            hension du reste du texte, puis j’étudierai le
programmation dans de très nombreuses for-             cas de Java avant de passer à .NET.
mations, et il est probable que C# le rejoigne
dans les années à venir.
   Au delà de l’aspect pragmatique, Java               2    Brefs rappels sur les deux
et .NET méritent notre intérêt car ils ne                 plate-formes
manquent pas d’atouts techniques. Il me
semble que le plus important d’entres eux                  Dans cet article, je désigne par Java la
est la productivité qu’on peut avoir avec ces          plate-forme [2] qui porte ce nom, et qui est
plate-formes. Celle-ci est avérée, établie par       constituée du langage Java, de la machine
de nombreuses études, et c’est en général l’ar-      virtuelle associée (la Java Virtual Machine,
gument principal qui décide les entreprises            JVM) et de l’ensemble des API. Un pro-
à utiliser Java ou .NET. Cette productivité           gramme écrit en Java est en général compilé
trouve ses racines dans la gestion automa-              vers le byte code de la machine virtuelle. Lors
tique de la mémoire (le garbage collecting),           de l’exécution du programme, la JVM peut
dans le modèle orienté objet simple (sans hé-        soit interpréter les instructions du byte code
ritage multiple), dans la qualité des environ-         en les traduisant en des instructions du pro-
nements de développement (comme Eclipse,               cesseur cible, soit compiler au vol des mor-
http://www.eclipse.org/, pour n’en citer                ceaux de byte code en code objet natif (on
qu’un), dans la complétude des API, etc. Pour          appelle cette compilation au vol du Just In
développer des logiciels libres, la portabilité       Time) puis les exécuter. Les implémentations
binaire (un des arguments de Java et .NET               les plus efficaces de la JVM mélangent en gé-
pour séduire les entreprises) n’est pas très          néral l’interprétation et le JIT. Le passage par
utile, mais tout le reste, et en particulier la         un byte code indépendant de la machine cible
productivité accrue, est particulièrement sé-        de l’exécution permet d’obtenir une forme de
duisant pour notre communauté. A tel point             portabilité binaire.
que certains leaders du projet Gnome, comme                Dans cet article, je désigne par .NET ce que
Havoc Pennington par exemple, posent ouver-             Microsoft appelle le framework .NET. Cette
tement la question (cf [1] par exemple) : l’ave-        plate-forme [3] ressemble beaucoup à Java.
nir de Gnome passe-t-il par l’abandon pro-              La principale différence est qu’elle se veut

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                             2/21
Java, .NET et les logiciels libres            GNU/Linux Magazine France n°67, Décembre 2004

neutre par rapport au langage de programma-         système. Il y a un certain consensus autour
tion et est donc construite à partir d’une ma-     du fait que les mécanismes d’intégration de
chine virtuelle associée à un ensemble d’API.     l’existant à .NET sont à la fois plus simples
L’ensemble forme la Common Language In-             d’utilisation et plus complets que leurs équi-
frastructure (CLI). .NET lui-même consiste         valents en Java.
en la CLI auquel on ajoute divers langages
(C#, Visual Basic .NET, etc.) et des bi-
bliothèques complémentaires. La machine vir-      3     Le cas de Java
tuelle de .NET (le Common Language Run-
                                                    3.1    Java : pas de standard !
time, CLR) est très proche de la JVM, bien
que les opérations choisies soit plus adaptées       La plate-forme Java a été créée par la so-
au JIT qu’à l’interprétation. De ce fait, les     ciété Sun Microsystems qui a rendu dispo-
implémentations du CLR sont en général ex-       nible la version 1.0 de son implémentation en
clusivement basées sur du JIT. En pratique,        1996. Java est une marque déposée par Sun
l’utilisation du langage C# [4] est presque in-     (et on devrait donc écrire JavaTM à chaque
dispensable si on veut profiter des intérêts de   utilisation...), ce qui signifie qu’on ne peut pas
.NET, bien que d’autres langages profitent          utiliser librement le terme Java pour désigner
aussi pleinement de la plate-forme, au prix         un programme ou encore un langage (cf [5]
de quelques adaptations (on peut citer Vi-          pour des détails). A titre de comparaison, Li-
sual Basic et Eiffel par exemple). C# est très     nux est aussi une marque déposée et son utili-
proche de Java. En caricaturant, on pourrait        sation n’est donc pas libre. Il faut obtenir une
dire que c’est une version améliorée de Java,     autorisation du Linux Mark Institute [6] pour
bien que les aficionados de ce dernier mettront     certaines utilisations.
en avant certains points discutables de C# (le         Historiquement, Sun a été tenté par la stan-
modèle de la redéfinition de méthode est assez   dardisation pour la plate-forme Java. Un dos-
complexe, les exceptions ne doivent pas obli-       sier avait d’abord été déposé auprès de l’ISO
gatoirement être traitées, etc.) pour refuser     (International Organization for Standardiza-
cette définition. Pour éviter toute polémique    tion, [7]) qui avait approuvé le principe de la
stérile, disons que C# et Java sont presque        création d’une norme Java en 1997 (cf [8]).
identiques, au moins vus depuis les autres lan-     Les discussions avaient cependant été dès le
gages. Les lecteurs intéressés trouverons dans    départ assez tendues entre l’ISO et Sun, car
le présent numéro de leur magazine préféré     Sun ne voulait en aucun cas abandonner la
un article très complet d’introduction à C#       marque Java et le contrôle de la plate-forme
proposé par Grégoire Lejeune.                     (cf [9]). En raison de ces tensions, Sun décida
   Les deux plate-formes ne sont pas “ pures ”,     de passer par l’ECMA [10], ce qui lui aurait
au sens où leurs implémentations contiennent      permis de déposer auprès de l’ISO le standard
en général du code qui n’est pas écrit dans      obtenu, sans passer par les comités techniques
le langage principal qui leur est associé. En      de l’ISO, grâce une procédure fast track (cf
fait, elles comportent toutes deux des méca-       [9]). Cependant l’histoire s’est répétée. Bien
nismes d’interfaçage qui permettent d’appeler      que Sun ait déposé une proposition de stan-
des bibliothèques externes écrites dans divers    dard à l’ECMA en mai 1999 (cf [11, 12, 13]),
langages. Ceci permet de réaliser une implé-      il est rapidement devenu clair que le passage
mentation d’une plate-forme en s’appuyant           de l’ISO à l’ECMA ne changeait pas grand
sur l’existant, en particulier les bibliothèques   chose. Comme l’ISO, l’ECMA n’est pas une

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                       3/21
Java, .NET et les logiciels libres             GNU/Linux Magazine France n°67, Décembre 2004

simple chambre d’enregistrement et voulait           grandes entreprises (comme IBM, SAP ou
donc imposer son point de vue à Sun, en réa-       même SCO) avec deux exceptions notables
lisant éventuellement des modifications de la       à savoir la fondation Apache et le professeur
proposition de standard Java. En fait, Micro-        Doug Lea de l’Université de New York Os-
soft, membre de l’ECMA, souhaitait proposer          wego (cf [19]). De plus, Sun conserve un droit
dans ce cadre des modifications à la spécifica-    de veto sur l’inclusion de modifications dans
tion de Sun (cf [14]). Finalement, Sun décida       les éditions “ standard ” de la plate-forme Java
fin 1999 d’abandonner ses efforts de standar-        (il existe trois éditions, la version Standard,
disation (cf [15, 16]). Il n’existe donc pas de      la version Entreprise destinée aux serveurs et
standard international pour Java.                    la version Micro destinée à l’embarqué).
                                                        Enfin, rejoindre le JCP signifie signer
3.2    Le Java Community Process                     le JSPA (Java Specification Participation
                                                     Agreement), un contrat entre Sun et le nou-
    Parallèlement à cette tentative de standar-    veau membre : Sun peut donc parfaitement
disation, Sun a créé dès 1998 le Java Com-        refuser de signer le contrat et donc ne pas ac-
munity Process (JCP, [17]). Il s’agit d’un           cepter d’accueillir un candidat dans le JCP.
programme de coopération autour de Java             Le contrat est assez complexe (cf [20]) et dé-
dont le but est d’assurer la maintenance de          taille les obligations et droits des membres du
la plate-forme de façon collaborative. Toute        JCP, en particulier en terme de brevets et de
l’évolution de Java est gérée par des votes des   “ propriété intellectuelle ”. Deux points im-
membres du JCP et s’articule autour des Java         portants sont à retenir :
Specification Requests (JSR). Un JSR est une           1. quand un JSR est approuvé, sa spécifi-
proposition d’extension de l’API de Java, de              cation est obligatoirement publiée sur le
modification du langage ou de la JVM, plus                site du JCP, mais elle reste la propriété
généralement d’évolution de la plate-forme.            du leader du JSR ;
La participation au JCP est payante pour les
entreprises et les associations, gratuite pour         2. quand un JSR est approuvé, le leader
les individus. Malgré le caractère ouvert du            et ses collaborateurs doivent obligatoire-
JCP, les décisions fondamentales sont prises             ment accorder une licence sans royalties
par l’Executive Committee (EC) seul. L’EC                 (Royalty Free) pour l’implémentation du
est composé d’un membre de droit (Sun), de               JSR par quiconque voudrait réaliser une
5 membres élus et de 10 membres nommés.                 telle implémentation. Cette licence doit
Les membres élus le sont au sens habituel du             couvrir tous les brevets concernés et
terme, alors que les membres nommés sont                 doit être perpétuelle et irrévocable. Par
désignés par le bureau du JCP (le Program               contre, elle ne s’applique qu’à des im-
Management Office) qui est lui même formé               plémentations conformes, point que nous
par Sun. Les nominations sont approuvées par             étudierons en détail dans la section sui-
un vote. Le fonctionnement du JCP est décrit             vante.
par [18], document qui est lui même modi-           De prime abord, la situation semble donc as-
fiable par le JCP !                                  sez claire. Si je souhaite implémenter Java 1.5,
    Sun a donc cédé une partie de son contrôle    la dernière version, il me suffit de me rendre
sur Java par l’intermédiaire du JCP. Les            sur le site du JCP et de chercher la spéci-
membres qui possèdent vraiment le pouvoir           fication correspondante. Il s’agit en fait du
(l’EC) sont cependant essentiellement des            JSR n°176 [21] dont la spécification est tout

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                        4/21
Java, .NET et les logiciels libres              GNU/Linux Magazine France n°67, Décembre 2004

simplement la documentation du kit de déve-          plutôt dans la définition d’une implémenta-
loppement de Sun [22]. Une lecture (passion-          tion conforme. En effet pour être légale, une
nante ;-) de la licence de la spécification [23]     implémentation
confirme ce que j’ai indiqué précédemment :         1. doit implémenter complètement la spéci-
on peut implémenter librement Java 1.5, à               fication ;
condition que l’implémentation soit conforme.
                                                       2. ne doit pas ajouter, modifier ou suppri-
On constate sur le site de Sun qu’on peut im-
                                                          mer quelque chose dans les packages dé-
plémenter la version 1.4.2 de Java dans les
                                                          finis par la spécification ;
mêmes conditions, mais que les anciennes ver-
sions ont des licences beaucoup plus restric-          3. doit passer avec succès les tests de com-
tives.                                                    patibilité.
                                                      Concernant le point 3, il faut savoir qu’un
3.3    Est-on vraiment libre ?                        JSR est obligatoirement associé à un Techno-
                                                      logy Compatibility Kit (TCK), c’est-à-dire un
   En fait, l’impression de liberté qu’on peut       ensemble de tests qui couvrent normalement
ressentir en lisant les lignes qui précèdent doit   toute la spécification produite par le JSR. Une
être tempérée en raison de divers problèmes.      implémentation qui ne passe pas le TCK n’est
   Historiquement tout d’abord, le JCP était         donc pas légale. Or, le TCK est loin d’être ac-
beaucoup plus fermé. L’ancienne version du           cessible librement. Il est en général payant (et
JSPA ne permettait pas vraiment des implé-           très cher), on ne peut pas le redistribuer, le
mentations open source. Devant les critiques,         modifier, etc. (cf [26] pour la licence accordée
en particulier en provenance de la fondation          à la fondation Apache). Fort heureusement,
Apache (cf [24, 25, 26]), Sun a réformé le          la version actuelle du JSPA encourage les lea-
JSPA pour obtenir la version actuelle que j’ai        ders de JSR à offrir gracieusement leur TCK
décrite au dessus (cf [27]). De plus, Sun s’était   à toute organisation à but non commercial et
engagé à l’époque à appliquer les nouveaux        à tout particulier. Sun donne l’exemple en of-
termes (en particulier la possibilité d’implé-      frant ainsi le TCK de certains JSR à la fonda-
mentations libres) aux JSRs qu’il avait diri-         tion Apache (pour l’implémentation des serv-
gés, ce qui a été fait. Cependant, Sun n’est       lets et des JSP par Tomcat, par exemple, cf
pas le leader dans tous les JSR, loin s’en            [26]) et à ObjectWeb (pour JOnAS, cf [28]).
faut. Il est parfaitement possible que les lea-           Contrairement à ce qu’on pourrait croire,
ders de certains JSR débutés avant l’entrée en     le point 3 n’est finalement pas le plus gê-
vigueur du nouveau JSPA (fin 2002) conti-             nant pour le libre. En fait, ce sont les points
nuent à appliquer les processus de l’ancien          1 et 2 qui posent problème : si je télécharge
JSPA. Cela ne représente pas un gros pro-            la spécification du JDK de Sun, je n’ai plus
blème pour une implémentation libre de la           le droit de proposer une implémentation par-
plate-forme Java puisque la partie fondamen-          tielle de celui-ci. Légalement, je ne peux que
tale est gérée par Sun (et que les versions 1.4.2   proposer une implémentation complète (on
et 1.5 sont implémentable librement). Cepen-         imagine le travail de titan que cela demande,
dant, cela signifie que certaines API officielles     vue la complexité et la taille de l’API Java
de la plate-forme pourraient ne pas être im-         et sachant que les anciennes spécifications de
plémentées librement.                               Java, plus simples que les versions actuelles
   L’aspect le plus gênant pour le libre ne ré-     ont des licences beaucoup plus restrictives)
side cependant pas dans ces “ détails ”, mais        sans avoir réalisé de modification dans les

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                         5/21
Java, .NET et les logiciels libres            GNU/Linux Magazine France n°67, Décembre 2004

API. Donc, adieu CVS et autre développe-           3.4    Java et les brevets logiciels
ment ouvert ! Richard Stallman a bien expli-
qué le dilemme que cette situation crée dans         On pourrait se demander dans quelle me-
[29]. Le plus sournois dans cette histoire est      sure l’implémentation de Java à partir de
que une fois une implémentation libre déve-       livres et d’autres sources autres que Sun ne
loppée, rien n’empêche de distribuer des ver-     permettrait pas de contourner les restrictions
sions modifiées qui ne respectent pas la spé-     imposées par Sun plus directement que dans
cification, cela est même explicitement indi-      le scénario qui précède. On peut même lire la
qué dans l’accord de licence. Celle-ci dit en      documentation du jdk directement sur le site
effet qu’on peut distribuer une implémenta-        de Sun, sans accepter de licence. Il y a mal-
tion conforme de Java sous une licence qui          heureusement un piège dans cette approche :
n’inclut pas les trois clauses de conformité.      les brevets logiciels ! En effet, Sun possède des
On peut alors imaginer le scénario suivant :       brevets qui couvrent certains aspects de Java,
                                                    bien que leur liste n’ait jamais été rendue pu-
 1. un développeur X télécharge la spécifi-
                                                    blique (cf [24], page 5). Or, pour obtenir une
    cation d’une API Java (exemple la fon-
                                                    licence Royalty Free pour ces brevets, il faut
    dation Apache se procure la spécification
                                                    accepter la licence de la spécification concer-
    des servlets) et doit donc accepter la li-
                                                    née. De ce fait, redistribuer une implémen-
    cence correspondante (licence Sun) ;
                                                    tation libre d’une spécification de Sun n’est
 2. le développeur X implémente scrupuleu-        peut être pas légal car cela peut éventuelle-
    sement (de façon fermée) l’API et dif-        ment correspondre au non respect d’un brevet
    fuse une implémentation conforme (Tom-         de Sun, même si on n’a pas téléchargé la spéci-
    cat dans notre exemple) sous une licence        fication correspondante (cf le point de vue de
    libre classique (licence A) ;                   Havoc Pennington à ce sujet dans [30]). Sauf
 3. un développeur Y (différent de X), qui        bien sûr si l’implémentation est conforme !
    n’a pas téléchargé la spécification de      Nous voici donc revenus à la case départ.
    l’API, se procure l’implémentation de             Le plus amusant avec les brevets logiciels,
    celle-ci (toujours Tomcat) et accepte           c’est qu’ils peuvent se retourner contre vous.
    donc la licence A ;                             Sun vient en effet de verser 92 millions de dol-
                                                    lars US à Eastman Kodak Co. pour régler un
 4. le développeur Y modifie l’implémenta-
                                                    problème de brevets logiciels s’appliquant à
    tion de sorte qu’elle ne soit plus conforme
                                                    Java (cf [31] pour les trois brevets concernés).
    et la diffuse, toujours en accord avec la li-
                                                    L’histoire complète est décrite sur divers sites
    cence A (sous le nom de Jerrymouse, par
                                                    (cf [32, 33, 34, 35, 36]). En résumé, Kodak
    exemple).
                                                    a attaqué Sun en février 2002 en l’accusant
A l’issu de ce scénario, on se retrouve avec       d’utiliser des algorithmes et principes breve-
un logiciel libre (Jerrymouse) qui implémente      tés dans Java. Les principes en question sont
quelque chose qui ressemble à l’API Java de        plutôt vagues et semblent s’appliquer à bien
départ, sans pour autant être conforme, et        d’autres choses que Java puisqu’ils tournent
tout ça légalement. La sacro-sainte compa-        autour de l’idée de collaboration entre objets
tibilité qui justifie pour Sun les restrictions    par le biais de bus logiciel (il est donc pro-
autour de Java peut donc parfaitement être         bable que les brevets en question s’appliquent
contournée, modulo le problème des brevets        à .NET). Le 1er octobre 2004, un jury amé-
logiciels.                                          ricain s’est prononcé en faveur de Kodak. La

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                         6/21
Java, .NET et les logiciels libres               GNU/Linux Magazine France n°67, Décembre 2004

cour ne se prononçait pas sur la validité des        3.5    Les implémentations libres de
brevets de Kodak (il pourrait très bien exister              Java
des mise en oeuvres antérieures des idées bre-
vetées), mais sur la violation de ceux-ci par            La situation de Java est donc loin d’être
Sun dans la plate-forme Java. Sun reconnu              claire et il n’est pas évident que la réalisation
coupable, Kodak s’est empressée d’indiquer            d’une implémentation libre de Java au sens
qu’elle allait demander 1,06 milliards de dol-         où nous l’entendons habituellement soit vrai-
lars US en dédommagement soit plusieurs an-           ment légale, tout au moins pendant son dé-
nées de profits de Sun. Moins d’une semaine           veloppement. Pourtant de nombreux projets
plus tard (le 7 octobre), Sun annonçait qu’un         libres existent autour de Java. Je vous épar-
accord était trouvé, pour un montant de 92           gnerai une longue liste pour me focaliser sur
millions de dollars US. Bien entendu, les dé-         quelques cas importants. La plate-forme Java
tails de l’accord ne sont pas connus, excepté         comportant un langage, une machine virtuelle
le fait que Sun a obtenu une licence pour l’uti-       et un ensemble de bibliothèques, les initiatives
lisation des brevets incriminés dans Java [37].       libres couvrent en général une partie seule-
La formulation du communiqué de presse de             ment de ces éléments :
Sun laisse entendre que ses clients sont proté-          – Jikes [40] est un compilateur libre pour le
gés par l’accord. Des officiels de Sun ont in-             langage Java, produit par IBM. Il trans-
diqué clairement que les produits basés sur               forme des sources Java en byte code.
Java dans le cadre d’un accord de licence avec              Jikes est complet au sens où il est capable
Sun sont aussi couverts par l’accord avec Ko-               de compiler toutes sources Java jusqu’à
dak. Une implémentation officielle de Java est             la version 1.4, la mise à niveau vers 1.5
donc couverte, même si elle est réalisée sous li-        étant en cours.
cence open source par quelqu’un d’autre que               – Classpath [41] est un projet GNU officiel
Sun. Cependant, l’attitude de Kodak sur le                  qui vise à implémenter l’ensemble des bi-
long terme n’est pas facile à prévoir, et le              bliothèques de la plate-forme Java dans
moins qu’on puisse dire est que l’accord n’a                son édition standard. Classpath n’est pas
pas totalement rassuré les adeptes de Java qui             une implémentation complète (et n’est
auraient largement préféré que Sun aille en              donc pas légale !), mais elle réalise des
appel ou que les brevets soient invalidés (cf              progrès constants.
[38, 39] pour des interprétations de l’accord            – Il existe de nombreuses machines vir-
Sun Kodak).                                                 tuelles open source. Pour fournir une
                                                            plate-forme complète, elles utilisent en
                                                            général Classpath ou une version mo-
   Pour clore cette discussion sur les protec-              difiée de celle-ci. Les JVM suivantes
tions de Java mise en place par Sun, on                     sont activement développées (liste abso-
peut évoquer le droit des marques. En effet,               lument non exhaustive) :
toute implémentation de Java passe par l’écri-            – Jikes RVM [42] est une JVM écrite par
ture de classes et interfaces qui appartiennent                IBM en Java (si, si) avec presque au-
aux packages java et javax. Dans quelle me-                    cun code C (elle utilise Classpath) ;
sure la programmation de java.lang.String                   – Kaffe [43] est une des plus anciennes
(les chaı̂nes de caractères), par exemple,                    implémentations libres de Java ; elle
correspond-elle à une utilisation de la marque                utilise en partie Classpath, en partie
Java ?                                                         des bibliothèques spécifiques ;

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                           7/21
Java, .NET et les logiciels libres            GNU/Linux Magazine France n°67, Décembre 2004

     – SableVM [44] est une JVM issue de            plète à l’implémentation propriétaire de Sun
        la recherche académique (comme Jikes       (dont certains éléments sont eux-même open
        RVM), qui contient de nombreuses in-        source, comme par exemple la partie chargée
        novations (comme une implémentation        de l’analyse de documents XML ou encore le
        très intéressante des verrous de syn-     moteur de servlet/JSP, à savoir Tomcat). Ce-
        chronisation qui évite d’utiliser un mot   pendant, de grands progrès ont été réalisés en
        par objet), et qui s’appuie sur Class-      2004, à tel point qu’on peut maintenant faire
        path ;                                      tourner avec GCJ des programmes très com-
     – IKVM.NET [45] est une JVM assez              plexes comme l’environnement de développe-
        fascinante car elle est implémentée en    ment Eclipse.
        .NET ! Elle permet donc de faire fonc-         On peut noter que pour l’instant, Sun n’a
        tionner des programmes Java à partir       pas réagi de façon négative aux différentes ini-
        d’un environnement .NET comme ce-           tiatives open source alors même que le déve-
        lui de Microsoft ou une implémenta-        loppement de celles-ci se fait de façon complè-
        tion libre de celui-ci. IVKM.NET uti-       tement ouverte. Des tensions ont existé avec
        lise Classpath.                             le groupe JBoss, mais Sun a plutôt fait preuve
  – Le projet GCJ [46] propose de compiler          de bonne volonté (en particulier en aidant la
     du Java directement vers du code natif,        fondation Apache et ObjectWeb), sans pour
     afin d’améliorer les performances en évi-    autant accepter de rendre son implémentation
     tant l’interprétation ou le JIT. GCJ est      de Java libre, malgré des pressions incessantes
     intégré à GCC et utilise une version mo-    de nombreux acteurs du monde Java, IBM en
     difiée de Classpath.                          tête.
  – Notons enfin que certaines API sont im-
     plémentées par des projets indépendants
     de Classpath. C’est le cas en particulier      4     Le cas de .NET
     pour tout ce qui touche à l’aspect entre-
                                                    4.1    Les normes ECMA/ISO
     prise pour lequel la fondation Apache,
     le consortium ObjectWeb et le groupe              La situation de .NET beaucoup plus simple
     JBoss sont très actifs. En fait, contraire-   que celle de Java. En fait, .NET est en partie
     ment à la partie couverte par Classpath,      standardisé, en partie totalement contrôlé par
     les API entreprises sont totalement im-        Microsoft son principal créateur (la version
     plémentées sous forme de logiciel libre      1.0 de .NET est sortie en janvier 2002).
     (JBoss et JOnAS en particulier). JBoss            En août 2000, deux mois après le lancement
     a ainsi passé officiellement le TCK pour      officiel de C# (en juin 2000), Microsoft a dé-
     la partie entreprise de Java 1.4 (cf [47]).    posé les spécifications du langage C# et de la
     En théorie, JBoss est donc couvert par        CLI auprès de l’ECMA pour obtenir une stan-
     l’accord entre Sun et Kodak sur les bre-       dardisation (cf [48]). On peut noter au pas-
     vets logiciels de ce dernier, car JBoss a      sage que C# et la CLI sont une oeuvre com-
     bien un accord officiel de licence avec Sun    mune de Microsoft, Intel et HP. En décembre
     pour l’implémentation de Java 1.4 ver-        2001, l’ECMA a ratifié une première version
     sion entreprise.                               des spécifications, puis une deuxième version
Malgré le travail réalisé sur diverses implé-   un an après (cf [49] et [50]). Les standards
mentations libre de Java, il est clair qu’il        ECMA ont été soumis à l’ISO qui les a ratifiés
n’existe pas pour l’instant d’alternative com-      en avril 2003 (cf [51]). Depuis, l’ECMA tra-

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                         8/21
Java, .NET et les logiciels libres             GNU/Linux Magazine France n°67, Décembre 2004

vaille à la mise à jour des standards, en parti-         base de données, l’équivalent .NET de
culier la spécification de C# 2.0 (cf [52]) qui           ODBC ou de JDBC.
intègre des nouveautés importantes comme            3. ASP.NET : il s’agit des bibliothèques
les types paramétrés (les generics).                   “ serveurs ” de .NET. Elles permettent
   La norme ECMA-334 couvre l’intégralité              entre autres de créer des sites web dyna-
du langage C# (dans sa version 1.0) alors                miques et des services web (dans le même
que la norme ECMA-335 s’intéresse à la CLI,            esprit que PHP et les JSP).
c’est-à-dire la machine virtuelle (le CLR) et la
bibliothèque standard. Un point crucial à no-      Microsoft contrôle totalement ces biblio-
ter est que cette bibliothèque est assez limitée   thèques et plus généralement tout les aspects
et que la CLI n’est que la brique de base de         de .NET qui ne sont pas standardisés par
.NET. En fait, la CLI contient 7 bibliothèques      l’ECMA. Il s’agit essentiellement de biblio-
fondamentales qui couvrent les besoins clas-         thèques additionnelles (cf [53] pour une vue
siques, à savoir les entrées/sorties (fichier et   générale des bibliothèques de .NET). Pour
réseau), les collections, la manipulation de do-    mesurer l’étendue de ce contrôle, on peut no-
cuments XML, la gestion des chaı̂nes de ca-          ter que la CLI contient 350 types (classes, in-
ractères, tout le mécanisme de réflexion (l’in-   terfaces, structures, etc.), contre 3800 types
trospection), etc. On est très loin d’avoir ici     dans .NET fin 2002 (cf [54]).
l’intégralité de .NET, comme nous le verrons
dans la section suivante.                            4.3    Peut-on implémenter librement
   Contrairement à de trop nombreuses                      une norme ?
normes (les standards POSIX par exemple),
les normes C# et CLI sont librement et gra-             Beaucoup de gens pensent naı̈vement
tuitement accessibles sur le site de l’ECMA          qu’une norme officielle peut être implémentée
(cf [49] et [50]). Les conditions de redistribu-     librement. Et pourtant, rien n’est moins vrai.
tion de ces documents ne sont malheureuse-           En fait, chaque organisme de normalisation
ment pas indiquées.                                 décide des restrictions qu’il juge acceptable
                                                     pour les normes qu’il produit. Un exemple
                                                     célèbre est celui du format de compression
4.2    Les bibliothèques sans standard              sonore MP3. MP3 est en fait la couche au-
   .NET ne serait pas à même de concurren-         dio de niveau 3 des standards vidéo MPEG-1
cer Java ou d’autres plate-formes de dévelop-       et 2. MPEG est un groupe de travail issu de
pement s’il se limitait aux bibliothèques in-       l’ISO et de l’IEC (International Electrotech-
cluses dans la CLI. En fait, .NET comporte           nical Commission), dont la vocation est de
trois grandes bibliothèques cruciales dans la       créer des standards pour la compression vi-
plupart des applications :                           déo. Or, pour créer MP3, le groupe a utilisé
                                                     des travaux de l’un de ses membres, le Fraun-
 1. Windows.Forms : il s’agit de la biblio-          hofer Institute. Associé à Thomson Multime-
    thèque qui permet de créer les interfaces      dia, le Fraunhofer Institute possède 18 brevets
    utilisateurs. Grossièrement, c’est donc         touchant de près ou de loin au format MP3
    l’équivalent .NET de Gtk, de Qt ou en-          (cf [55, 56]). Thomson exige actuellement le
    core de Swing et SWT pour Java.                  paiement de royalties pour toute utilisation
 2. ADO.NET : il s’agit de la bibliothèque          commerciale de MP3 (cf [57]). Il faut bien en-
    d’accès aux données stockées dans une         tendu signer un accord de licence officiel pour

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                       9/21
Java, .NET et les logiciels libres             GNU/Linux Magazine France n°67, Décembre 2004

pouvoir utiliser légalement (et commerciale-        à offrir des licences Royalty Free ou RAND
ment) MP3, au moins dans les pays qui recon-         pour les brevets concernant C# et la CLI
naissent les brevets logiciels. Ce problème de      (ceci est confirmé sur le site de Microsoft [63]
brevets autour de MP3 a été historiquement         par un engagement général concernant la par-
une des motivations à la création du format        ticipation à la création de standards).
Ogg et du schéma de compression associé Vor-           Deuxième indice, Michele Herman, la res-
bis (cf [58]).                                       ponsable de tout ce qui concerne la “ propriété
    La politique de l’ECMA vis à vis des bre-       intellectuelle ” chez Microsoft, a indiqué dans
vets est très claire (cf [59]) : l’ECMA ne stan-    un entretien accordé à David Berlind de ZD-
dardise des technologies couvertes par des           net (cf [54]), que Microsoft accorderait une
brevets que si ceux-ci peuvent être licenciés      licence RAND aux personnes qui souhaite-
en des termes “ raisonnables et non discimi-         raient implémenter .NET. Cette licence sera
natoires ” (RAND pour Reasonable And Non             aussi Royalty Free. Cela signifie qu’il faudra
Discriminatory). En pratique, cela signifie que      un accord formel avec Microsoft, mais que
la licence ne doit pas être trop “ chère ” (à     cet accord n’impliquera pas de contribution
l’échelle d’une entreprise, bien sûr !) et que     financière. Herman a bien indiqué que l’ac-
ces termes doivent être les mêmes pour tout        cord en question interdirait les sous-licences :
le monde. L’ISO appliquant le même raison-          en d’autres termes, pour obtenir une licence,
nement, on peut supposer que les conditions          il faudra toujours s’adresser à Microsoft direc-
commerciales proposées par Thomson sont             tement. D’après Herman elle-même [63], ceci
RAND (2 500 $ US pour utiliser MP3 dans              est en totale contradiction avec la GPL (cf
un jeu, par exemple).                                aussi l’analyse très intéressante de Seth Ni-
                                                     ckell [64]), et ceci de façon délibérée.
4.4    .NET et les brevets logiciels                     En effet, quand on parle de licences pour les
                                                     brevets de Microsoft, il ne faut jamais oublier
    Le problème est bien entendu que Microsoft      que l’entreprise est totalement opposée à la
possède des brevets relatifs à .NET. L’entre-      GPL. Bill Gates a notamment déclaré en Juin
prise a même déposé en 2002 une demande de        2001 que la GPL était comparable au célèbre
brevet sur l’intégralité de l’API de .NET de       personnage de jeux vidéo Pac Man et qu’elle
l’époque (cf [60, 61]). Pour savoir s’il est pos-   dévorait tout autour d’elle (cf [65, 66]). Le site
sible d’implémenter librement les normes C#         de Microsoft contient d’ailleurs une présenta-
et CLI, il faut donc connaı̂tre la position de       tion assez “ amusante ” de la GPL (cf [67]). Il
Microsoft en terme de licences pour les bre-         semblerait que l’entreprise n’ait pas compris
vets concernés. Or, il semble qu’il n’existe pas    le principe de la double licence utilisée entres
vraiment de position officielle de Microsoft à      autres par Trolltech et MySQL AB, puisque la
ce sujet (par exemple publiée sur le site web       page citée indique qu’un logiciel diffusé sous
de Microsoft), mais seulement des indices que        GPL ne peut pas être commercialisé. Quelles
nous allons analyser dans la suite de l’article.     qu’en soient les raisons, l’attitude de Micro-
    On connaı̂t en fait deux indices concernant      soft est claire depuis plusieurs années : l’en-
directement .NET. Premier indice, Jim Mil-           treprise fera tout pour s’opposer à la GPL,
ler, un des inventeurs des brevets sur .NET, a       tout en acceptant dans une certaine mesure
indiqué en février 2003 dans une liste de diffu-   les autres licences open source.
sion consacrée à .NET (cf [62]) que Microsoft          La politique de défense par Microsoft de
et ses co-inventeurs (Intel et HP) étaient prêts   sa “ propriété intellectuelle ” est cependant

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                        10/21
Java, .NET et les logiciels libres             GNU/Linux Magazine France n°67, Décembre 2004

complexe. Pour essayer de la comprendre, je          Hermann du côté de Microsoft, sans qu’un ac-
vais présenter plusieurs exemples.                  cord puisse finalement être atteint.
                                                        Le point à retenir dans l’exemple du Sender
4.4.1   L’affaire du Sender ID                       Id est donc que certaines licences Royalty Free
                                                     de Microsoft sont incompatibles avec une im-
   Le Sender ID (cf [68]) est une technique          plémentation open source (et pas seulement
anti-spam développée entre autre par Micro-        GPL), ce qui laisse craindre le pire pour le
soft dont les détails techniques importent peu      RAND.
ici. Le point crucial est que Microsoft a fait
une demande de brevet concernant Sender ID           4.4.2    Samba
et exige la signature d’une licence (de type
Royalty Free) pour toute implémentation de             Samba est une implémentation libre sous li-
celui-ci (cf [69] pour la licence). La licence       cence GPL du protocole SMB/CIFS qui per-
proposée est considérée comme incompatible        met le partage de fichiers et les services d’im-
avec une implémentation libre par la fonda-         pression dans le monde Windows. CIFS est
tion Apache [70] et Debian [71], entres autres.      la dernière incarnation d’un protocole issu
L’IETF [72], qui était censé produire un stan-     de NetBIOS, initialement développé par IBM
dard basé sur le Sender ID, a finalement aban-      et Sytec, puis amélioré par Microsoft, IBM
donné ses travaux, rejoignant le consensus qui      et d’autres. Nous sommes donc en présence
s’est formé dans le monde libre contre la li-       d’une technologie au moins en partie inventée
cence de Microsoft. La seule exception à ce         par Microsoft et qui peut donc être considé-
consensus est Sendmail qui a décidé d’implé-      rée comme sa “ propriété ”. Le parallèle avec
menter Sender ID en raison d’une interpréta-        .NET est évident.
tion divergente de la licence de Microsoft et           Pourtant, la situation pratique n’est pas
surtout avec un argument assez intéressant (cf      totalement identique. Samba a en effet été
[73]) : Microsoft a fait une demande de brevet       développé en grande partie par reverse en-
concernant Sender ID, mais le brevet n’a pas         gineering, ce qui est parfaitement légal (au
encore été accordé (la situation est donc très   moins dans certains pays, dont l’Australie,
semblable à celle des api de .NET). Notons          terre patrie de Samba) quand on vise l’in-
que les aventures du Sender ID ne sont pas           teropérabilité (cf à ce sujet [75]). Il est clair
terminées, puisque devant les réactions de la      en effet que pour faire fonctionner une ma-
communauté open source, Microsoft a décidé        chine Unix dans un environnement Windows,
de revoir sa copie dans certaines proportions,       il est presque indispensable de la faire “ par-
en particulier en limitant la porté de sa de-       ler ” SMB/CIFS. L’argument d’interopérabi-
mande de brevet (cf [74] pour une analyse de         lité fonctionne donc parfaitement et justifie
ce revirement).                                      le reverse engineering, qui lui même évite de
   Il ne faudrait cependant pas placer trop          signer un quelconque accord de licence pour
d’espoir dans la nouvelle attitude de Micro-         accéder à la documentation de SMB/CIFS.
soft. En effet, comme l’indique la position of-         Cependant, certains autres éléments rap-
ficielle de la fondation Apache [70], il y a eu      prochent CIFS de .NET. Il existe en effet une
de nombreuses discussions, pendant des mois,         sorte de spécification de CIFS, librement ac-
entre des acteurs du libre (le juriste Larry Ro-     cessible (cf [76]). Cette documentation men-
sen en tête) et Microsoft au sujet de la licence    tionne explicitement qu’elle ne s’occupe pas
proposée, avec une intervention de Michele          de l’aspect “ propriété intellectuelle ”. Son

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                         11/21
Java, .NET et les logiciels libres             GNU/Linux Magazine France n°67, Décembre 2004

existence ne signifie donc pas qu’on puisse im-      son succès sans s’appuyer de façon décisive
plémenter CIFS librement (comme pour les            sur les brevets logiciels (cf [81]), cette époque
normes relative à .NET en somme). D’autre           est révolue, de même d’ailleurs que la condes-
part, certaines parties de CIFS sont couvertes       cendance à peine polie de l’entreprise envers
par des brevets possédés par Microsoft. Ce-        les logiciels libres. Samba profite en quelque
pendant, d’après la Samba Team, les brevets         sorte du passé, car les premiers développe-
en question sont spécifiques à l’implémenta-      ment de SMB sont suffisamment vieux pour
tion de CIFS sous Windows et couvrent des            être contemporain de l’époque “ sans brevet ”
parties obsolètes du protocole (cf [77]), ce qui    de Microsoft. Ce n’est malheureusement pas
signifie que Samba n’utilise pas les méthodes       le cas des technologies plus récentes.
brevetées (cf aussi [78]).                             N’oublions pas, par exemple, que l’auteur
   Comme pour de nombreuses technologies             de VirtualDub (un logiciel d’édition vidéo,
Microsoft, il est possible d’obtenir une licence     sous licence GPL et tournant sous Windows
Royalty Free pour les brevets qui concernent         [82]) a été obligé de supprimer en 2000 le
CIFS. Bien que la licence autorise une im-           support du format ASF de son logiciel suite
plémentation open source, sa formulation (cf        à une demande de Microsoft (cf [83]). Pour-
[79]) est incompatible avec la GPL, de fa-           tant, l’auteur de VirtualDub avait compris
çon totalement délibérée (on voit ici les dé-   le format ASF uniquement par reverse engi-
clarations de Michele Herman mises en pra-           neering, mais ce format est protégé par un
tique). On peut noter que la première version       brevet... D’ailleurs, le format est maintenant
de cette licence interdisait même plus expli-       documenté sur le site de Microsoft, mais il
citement une implémentation sous GPL (cf            est toujours interdit d’en faire une implé-
[80]), en qualifiant cette dernière de “ Intel-     mentation open source (cf [84] et l’accord
lectual Property Rights Impairing Licence ”,         contenu dans la spécification). Le support du
c’est-à-dire de licence qui ne préserve pas les    format asf dans xine, MPlayer, videoLAN,
droits de “ propriété intellectuelle ”!            etc. est possible car les parties problématiques
   Il serait naı̈f de croire qu’on peut conclure     sont développées dans des pays qui ne recon-
de l’exemple de Samba que tout se pas-               naissent pas (pour l’instant) les brevets logi-
sera bien pour les implémentations libres           ciels.
de .NET. En effet, Samba a été essentielle-
ment construit par reverse engineering alors         4.4.3   Une tentative de synthèse
que les implémentations libres de .NET sont
construites à partir des normes ECMA et               Les exemples analysés précédemment
des documentations Microsoft (pour les bi-           montrent que Microsoft ne semble pas tota-
bliothèques qui ne sont pas standardisées).        lement opposé à des implémentations open
De plus, SMB/CIFS est protégé par deux             source de certaines de ses technologies et est
brevets américains et un brevet européen (cf       donc disposé à offrir des licences pour les bre-
[80]) dont les concepts ne sont pas utilisés        vets correspondants. Cependant, Microsoft
par Samba, alors que Microsoft a demandé            est opposé à la GPL et formule ses licences
une protection de l’API de .NET par brevet,          de sorte à exclure toute implémentation sous
ce qui signifie que toute implémentation de         cette licence. De plus, la politique de Micro-
.NET sera nécessairement couverte par le bre-       soft est très variable selon les technologies
vet en question (si celui-ci est accepté). Enfin,   concernées et peut aller jusqu’à l’interdiction
bien que Microsoft ait longtemps construit           pure et simple d’une implémentation open

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                       12/21
Java, .NET et les logiciels libres                  GNU/Linux Magazine France n°67, Décembre 2004

source, d’une façon directe comme pour ASF               cile de prédire l’issue qu’elle va connaı̂tre. Par
ou indirecte comme pour Sender ID.                        contre, l’affaire Kodak vs Java ne sera pas né-
   L’étude de la partie du site de Microsoft             cessairement sans conséquence pour les implé-
consacrée à la “ propriété intellectuelle ” (cf       mentations libres de .NET. En effet, les bre-
[63]) en particulier la zone consacrée aux               vets concernés sont si larges qui couvrent très
standards [69] montre qu’il n’existe pas pour             certainement .NET. Or, d’après [38, 39], Mi-
l’instant2 de licence officielle pour C# et la            crosoft a déjà négocié un accord avec Kodak
CLI, ce qui est relativement inquiétant et ap-           pour utiliser les technologies couvertes par les
porte de l’eau au moulin des personnes qui                fameux brevets. Si Microsoft n’a pas réussi à
craignent que .NET soit un cheval de Troie                la faire, on ne voit pas comment une implé-
contre linux (cf [64]).                                   mentation libre de .NET pourrait les contour-
   Il reste cependant difficile de savoir quelle          ner.
sera sur le long terme la politique de Micro-                Pour finir sur une note plus optimiste, il
soft dans ses rapports avec le logiciel libre.            faut garder à l’esprit que les brevets logiciels
En 2002, Microsoft planifiait une attaque en              sont souvent accordés en dépit du bon sens et
règle contre les logiciels libres construite sur         sans tenir compte de l’état de l’art au moment
son portefeuille de brevets (cf [85]). Pour l’ins-        de la demande. Il est donc souvent possible
tant, les attaques n’ont pas eu lieu, mais il est         d’exhiber des exemples de mise en oeuvre an-
clair que Microsoft souhaite valoriser ses bre-           térieure de ce qui avoir été inventé par les
vets (cf [86]), ce qui inquiète certaines figures        auteurs d’un brevet (on parle alors de prior
emblématiques de l’open source (cf [87]). Mi-            art), ce qui invalide le brevet ou provoque
crosoft demande par exemple le paiement de                son transfert à l’inventeur réel de ce qui est
royalties pour l’utilisation du système de fi-           protégé (dans le cas de la loi des USA). De
chiers FAT dans certaines circonstances [88].             plus, un brevet ne protège pas les effets d’une
Le brevet principal est en passe d’être inva-            invention (on peut protéger l’aspirine, pas le
lidé (cf [89]), mais si cela n’avait pas été le cas,   concept de lutte contre les maux de tête). Il
Microsoft aurait très bien pu étendre ses de-           est donc parfois possible de mettre en oeuvre
mandes de royalties à toutes les utilisations de         un concept sans enfreindre les brevets qui sont
la FAT, en particulier donc à son implémenta-           sensés protéger ce concept (un point illustré
tion sous Linux. Autre exemple édifiant, l’ex-           par Samba, par exemple), au moins dans cer-
clusion d’OpenOffice.org de l’accord de récon-           tains cas.
ciliation signé entre Microsoft et Sun en avril
2004 (cf [90]) : Microsoft a le droit de pour-            4.5    Les implémentations libres de
suivre le projet pour toute infraction à l’un de                .NET
ses brevets (alors qu’il n’a pas ce droit pour
StarOffice !).                                                La situation de .NET est donc assez peu
   Notons que, contrairement au cas de Java,              claire, et même inquiétante si on est suspi-
il n’y a pas eu pour l’instant de jugement au-            cieux de nature. Pourtant, des implémenta-
tour de .NET et on ne sait donc pas vraiment              tions libres de .NET existent, même si leur
si des brevets sont applicables à cette plate-           légalité n’est pas certaine. On compte en fait
forme. La demande de brevet sur les API de                deux implémentations très avancées :
.NET n’a pas encore été acceptée et il est diffi-          – Mono [91] est certainement l’implémen-
                                                                tation libre de .NET la plus avancée.
   2
       en juin 2005.                                            Elle est sponsorisée par Novell et di-

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                             13/21
Java, .NET et les logiciels libres             GNU/Linux Magazine France n°67, Décembre 2004

    rigée par Miguel de Icaza. Mono 1.0                  soit pas acceptée, car on voit mal com-
    (lancé en juin 2004) est assez complet               ment on pourrait la contourner...
    et comporte en particulier un compila-              – Portable.NET est une implémentation
    teur C# et une implémentation de la                  partielle de .NET réalisée par le projet
    CLI. A ceci s’ajoute une implémenta-                 DotGnu [98]. Cette implémentation est
    tion de certaines bibliothèques addition-            moins complète que celle de Mono, en
    nelles de Microsoft comme ADO.NET                     particulier en terme de bibliothèques ad-
    et ASP.NET, un binding de Gtk pour                    ditionnelles (par rapport à la CLI im-
    .NET (Gtk#) et d’autres bibliothèques                plémentée complètement). Par contre, il
    spécifiques Mono. Par contre, les Win-               semble que pour l’instant le support de
    dows.Forms ne sont pas implémentées de              Windows.Forms soit plus complet dans
    façon complètes (loin s’en faut), ce qui li-        Portable.NET que dans Mono.
    mite singulièrement les possibilités d’exé-   Comme dans le cas de Java, les implémenta-
    cution de code .NET développé pour avec        tions libres de .NET sont en retard par rap-
    la version de Microsoft. Miguel de Icaza,        port à son implémentation propriétaire, en
    le leader du projet, est une personna-           particulier sur le support des bibliothèques
    lité controversée, connu pour ses décla-      graphiques. On retrouve ici un parallèle par-
    rations souvent provocatrices. A l’occa-         fait entre Windows.Forms pour .NET et
    sion de la sortie de Mono 1.0, de Icaza a        Swing pour Java qui ne sont supportés que
    donné à Cnet un entretien assez intéres-      partiellement par les implémentations libres.
    sant (cf [92]). On retrouve dans cet en-         Dans les deux cas, des bibliothèques concur-
    tretien les provocations habituelles de de       rentes et libres permettent de réaliser des ap-
    Icaza (il dit par exemple qu’avant la sor-       plications graphiques (Gtk# dans le cas de
    tie de Mono, il n’y avait pas d’environne-       .NET et SWT, le toolkit graphique du pro-
    ment de développement intégré moderne         jet Eclipse, dans le cas de Java), mais au dé-
    sous Unix...), mais aussi des éléments de      triment de l’aspect standard (Gtk# et SWT
    réponse au sujet des interrogations quant       sont portables donc cet aspect n’est pas mis
    à la légalité de Mono. Il précise que No-    en cause par leur utilisation).
    vell a conduit une étude des brevets ac-
    tuels de Microsoft qui a conclu que Mono
    n’enfreignait aucun d’entre eux (les bre-        5    Conclusion
    vets de Kodak ne sont pas évoqués). Il
    indique que si dans les années à venir on         Étant donné les faits présentés dans cet ar-
    découvrait que du code de Mono utilise          ticle, il est bien difficile de répondre à la ques-
    sans autorisation un algorithme breveté,        tion “ est-il légal de proposer une implémen-
    ce code serait soit ré-écrit pour contour-     tation libre de Java ou de .NET ? ” et à la
    ner le problème, soit supprimé (cf aussi le    question connexe “ quel risque prend-on en
    blog de de Icaza, [93, 94]). On retrouve         développant avec Java ou .NET ? ”N’étant pas
    ce point de vue sur le site de Mono (cf          juriste, je me garderais bien de proposer une
    [95]) et plus généralement chez les dé-       interprétation des accords de licence, des lois
    veloppeurs de Mono (cf [96, 97]). Nous           sur les brevets, etc. Je ne peux que proposer
    n’avons plus qu’à espérer pour Mono que        un point de vue personnel d’amateur (éclairé
    la demande de brevet déposée par Micro-        par les faits présentés dans cet article).
    soft portant sur l’API entière de .NET ne          Il me semble qu’il est possible (mais diffi-

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                          14/21
Java, .NET et les logiciels libres             GNU/Linux Magazine France n°67, Décembre 2004

cile) de faire une implémentation libre légale     exemple secrets et il est donc relativement dif-
de Java dans ses éditions standard 1.4.2 et         ficile de se prononcer sur cet aspect du pro-
1.5 et dans son édition entreprise 1.4. Pour        blème.
obtenir une licence d’implémentation, il suffit         Concernant .NET, je ne peux pas avoir une
de se connecter sur le site de Sun, de télé-       conclusion aussi “ positive ”. Il est impossible
charger la spécification concernée et d’accep-     aujourd’hui (début novembre 2004) d’obte-
ter l’accord proposé. Cet accord indique expli-     nir des informations officielles de Microsoft
citement que la distribution d’une implémen-        concernant les termes de la licence RAND qui
tation conforme ne demande pas une licence           doit nécessairement couvrir C# et la CLI.
obligeant à conserver la conformité de l’implé-   Les licences RAND (et même Royalty Free)
mentation, ce qui permet d’utiliser une licence      peuvent parfaitement être incompatibles avec
libre. En pratique, la restriction de confor-        les licences libres (ou au moins avec certaines
mité est vraiment très dure à respecter et re-    licences libres), comme l’a montré le fiasco du
lativement incompatible avec un développe-          Sender ID ou comme le montre la licence ac-
ment ouvert. Je ne sais donc pas si Classpath        tuelle de SMB/CIFS. De ce fait, je ne sais pas
est une initiative qui respecte les lois. C’est      si Mono et Portable.NET sont des implémen-
en fait peu probable car l’accord de licence         tations légales de .NET. De plus, la demande
spécifie que l’implémentation doit passer le       de brevet déposée par Microsoft et portant
TCK. Or, pour obtenir le TCK, il faut né-           sur l’intégralité de l’API de .NET pourrait
cessairement signer un accord de licence (très      rendre totalement incontournable la nécessité
restrictif celui-ci) avec Sun, ce qui n’a pas        d’obtenir d’une licence, au moins dans les
été fait (pour l’instant au moins) pour Class-     pays qui reconnaissent les brevets logiciels.
path. Rien ne permet donc de prétendre que          Comme Seth Nickell [64], je pense donc que
Classpath est une implémentation conforme           Mono, bien que fascinant du point de vue
et elle ne respecte donc pas la licence Sun. Par     technique, présente potentiellement un dan-
contre, JBoss, Tomcat, JOnAS, etc. sont des          ger pour le logiciel libre : en s’appuyant for-
implémentations parfaitement légales de cer-       tement sur cette plate-forme, on prendrait le
taines parties de Java, puisque les groupes qui      risque de voir s’effondrer son implémentation
ont produit ces implémentations ont signé un       libre et par conséquent toutes les applications
accord avec Sun pour obtenir les TCKs cor-           développées avec elle. Mais surtout, dans un
respondants (cf [26, 28, 47] par exemple). Sun       monde qui reconnaı̂t les brevets logiciels, la
est bien entendu informé du caractère ouvert       légalité de Mono est dans les mains de Mi-
du développement de ces implémentations et         crosoft, une entreprise qui n’est pas connue
sait donc que JBoss et JonAS ont été diffusés     pour ses sentiments bienveillants à l’égard du
dans des versions non conformes, ce qui n’a          logiciel libre.
pas empêché les signatures d’accords. Class-           Une fois de plus, comme le disait Nicolas
path pourrait donc parfaitement devenir lé-         Boulay dans le numéro 50 du GNU/Linux
gal dans l’avenir. Notons cependant, même si        Magazine, on constate que les brevets logiciels
cela est vrai pour presque tout logiciel de nos      sont “ une épée de Damoclès suspendue au
jours, que des brevets divers peuvent s’ap-          dessus des logiciels libres ”. Il convient donc
pliquer à Java sans que Sun n’en soit pro-          plus que jamais de participer à la lutte contre
priétaire, ce qui limite la portée pratique de     leur adoption en Europe [99].
l’accord de licence offert sur le site de Sun.
Les détails de l’accord avec Kodak restent par

Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004                                     15/21
Vous pouvez aussi lire