Java, .NET et les logiciels libres
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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