Pour la FSF, la promesse de Microsoft concernant Mono sonne creux
En complément de mon précédent billet intitulé sans ambiguïté « Fuyez Mono ! », je vous propose la traduction de la réaction de la FSF à l'annonce faite par Microsoft d'appliquer sa Community Promise aux spécifications ECMA 334 et ECMA 335 (article original).
Pour mémoire :
- La spécification ECMA 334 recouvre les standards définissant l'interprétation des programmes écrits en C# tandis que la spécification ECMA 335 recouvre la Common Language Infrastructure (CLI), une spécification pour l'exécution de ces programmes dans différents environnements via une machine virtuelle.
- En vertu de la Community Promise, Microsoft s'engage sous certaines conditions à ne pas attaquer en justice ou réclamer le paiement d'une redevance pour l'utilisation, la vente, la distribution de n'importe quelle implémentation de C# et de la CLI.
- Mono est une implémentation libre de la plate-forme de développement Microsoft .NET dont C# et la CLI forment le socle.
Texte publié par la Free Software Foundation le 16 juillet 2009, librement traduit par votre serviteur :
La promesse creuse de Microsoft
La semaine dernière, Microsoft a étendu le champ d'application de son programme Community Promise aux implémentations logicielles des standards ECMA 334 et 335. Vous pourriez penser que cela signifie qu'il n'y a aucun risque à écrire votre logiciel en langage C#. Pourtant cette promesse pleine de lacunes est très loin de rendre l'utilisation de C# sûre.
Pourquoi s'inquiéter de C# ?
Depuis que nous avons publié l'article de Richard concernant Mono [Richard M. Stallman, NDT] la semaine dernière, certaines personnes nous ont demandé pourquoi nous prenions position contre des logiciels libres écrits en C# et Mono et pas contre ceux écrits dans d'autres langages de programmation. Sun a sûrement des brevets qui s'appliquent à Java. IBM a peut-être des brevets qui s'appliquent aux compilateurs C.
Ne devrions-nous pas déconseiller leur utilisation également ?nous demandent-ils.Il est exact que tout brevet logiciel constitue une menace pour les développeurs, mais cela ne signifie pas que tous les brevets logiciels représentent la même menace. Différentes sociétés sont susceptibles d'avoir des brevets qui pourraient être utilisés contre d'autres langages, mais si nous nous inquiétions de chaque brevet qui pourrait être utilisé contre nous alors nous ne ferions plus rien. Les brevets de Microsoft sont bien plus dangereux : de toutes les principales sociétés informatiques, c'est la seule société qui s'est déclarée en guerre contre GNU/Linux et a fait part de son intention d'utiliser ses brevets contre notre communauté. Si Microsoft prépare un piège avec ses brevets sur C#, ça n'est rien d'autre que la mise à exécution de ses menaces.
Cette société a été plutôt claire concernant ses intention depuis fin 2006. A une conférence donnée à l'attention des utilisateurs en novembre de cette année-là, le PDG de Microsoft Steve Ballmer a déclaré, en réponse à une question relative à leur accord de licence d'exploitation de brevets avec Novell :
… le fait que [GNU/Linux] fasse usage de notre propriété intellectuelle [sic] est un problème pour nos actionnaires. Nous dépensons 7 milliards de dollars par an en R&D, nos actionnaires attendent que nous protégions, signions des accords de licence ou tirions profit de nos innovations brevetées. Alors comment valoriser correctement nos innovations brevetées...?
(Seattle Post-Intellegencer, The Microsoft Blog, "Ballmer on Novell, Linux and patents," 16 novembre 2006)
Quelques jours plus tard, une interview d'un des présidents de Microsoft, Bob Muglia, a été publiée dans laquelle il énonçait clairement qu'ils considéraient C# comme l'une de ces « innovations brevetées » :
Il y a un effort substantiel dans le secteur de l'open source [sic] pour proposer sur le marché une implémentation de .Net connue sous le nom de Mono et menée par Novell, et un des éléments de l'accord que nous avons conclu avec Novell est que la propriété intellectuelle [sic] associée est disponible pour les clients de Novell.
(eWeek.com, "Microsofts Muglia Talks Longhorn, Novell and Java", 17 novembre 2006)
Ils ont fait monter la pression d'un cran depuis. En mai 2007, Microsoft a poussé sa logique un peu plus loin en annonçant dans une interview donnée au magazine Fortune qu'ils considéraient que GNU/Linux violait 235 brevets de Microsoft. Et récemment ils ont prouvé que ce n'était pas de vaines menaces : la société a poursuivi TomTom en justice pour avoir fait usage de l'implémentation du système de fichiers VFAT existant dans le noyau Linux sans en avoir acquis les droits.
Tout cela ne peut être balayé d'un revers de main. Il s'agit de déclarations et d'actions faites au plus haut niveau de cette société. Utiliser les brevets pour diviser et conquérir la communauté du Logiciel Libre est une part fondamentale de leur stratégie d'entreprise. C'est pourquoi C# représente une menace unique pour nous. Le langage a été développé en interne par Microsoft et il est donc probable qu'ils aient des brevets couvrant différents aspects de son implémentation. Ce qui ferait des implémentions libres de C# comme Mono une proie facile.
L'engagement résultant de la Community Promise ne change rien à cela. Microsoft avait l'opportunité d'agir et de démontrer qu'il ne comptait pas utiliser C# contre nous. Au lieu de quoi ils ont pris des demi-mesures sans consistance qui leur laisse de multiples possibilités de nous nuire.
Des standards incomplets
Les spécifications ECMA 334 et 335 décrivent le cœur du langage C#, y compris l'information relative aux bibliothèques logicielles standard qui doivent être incluses dans n'importe quelle implémentation conforme. Pourtant il y a différentes bibliothèques qui sont fournies avec Mono et qui sont couramment utilisées par des applications comme Tomboy sans pour autant être requises par le standard. Et, pour être parfaitement clair, nous ne parlons pas de bibliothèques propres à Windows comme ASP.NET et Windows Forms. Nous parlons de bibliothèques de l'espace de noms System qui fournit les fonctionnalités courantes que les programmeurs attendent d'un langage de programmation moderne : sérialisation binaire, expressions régulières, Xpath et XSLT, et plus encore.
Comme ces bibliothèques ne sont pas définies dans les spécifications ECMA, elles ne sont protégées en aucune manière par la Community Promise. S'il s'agissait du seul problème avec cet engagement, il n'y aurait pas de risque à utiliser des applications qui évitent ces bibliothèques et qui s'en tiennent à ce qu'il y a dans le standard. Mais même le code couvert par l'engagement n'est pas complètement sûr.
Définir ce qui est nécessaire
La Community Promise ne couvre que les réclamations relatives aux brevets de Microsoft qui sont nécessaires pour implémenter les spécifications protégées. Considérant seulement la taille de son portefeuille de brevets, il est probable que Microsoft détient des brevets qu'une implémentation complète de la spécification viole dès lors qu'ils ne sont pas strictement nécessaires : peut-être s'agit-il d'un brevet couvrant une simple optimisation de la vitesse d'exécution, ou une façon courante d'exécuter une certaine tâche. La Community Promise ne se prononce pas sur ces brevets et Microsoft peut donc toujours les utiliser pour attaquer les implémentations du standard.
Changer les règles du jeu en cours de partie
Disons que vous avez écrit une implémentation d'une des spécifications couvertes par la Community Promise et que vous voulez déterminer si oui ou non vous allez être poursuivis devant les tribunaux pour avoir violé un brevet de Microsoft. La nécessité de se poser la question rend déjà les choses difficiles. Mais même si vous finissez par être rassurés, vous devrez à nouveau vérifier demain parceque la Community Promise pourrait ne plus vous protéger à ce moment là.
La Community Promise ne vous donne aucun droit d'utiliser les brevets. Il indique seulement que Microsoft ne va pas vous poursuivre pour les brevets qu'il détient ou contrôle. Si Microsoft vend un de ces brevets, rien n'empêchera son acquéreur de poursuivre quiconque utilise le logiciel.
La solution : une licence d'exploitation de brevets exhaustive
Si Microsoft veut réellement rassurer les utilisateurs de logiciels libres sur le fait qu'il n'entend pas les poursuivre pour l'utilisation de Mono, il devrait accorder au public une licence d'exploitation irrévocable de tous les brevets dont Mono fait actuellement usage. Ça permettrait de résoudre proprement tous les problèmes actuels qui se posent avec le programme Community Promise : sa portée serait suffisamment large pour que nous n'ayons pas à nous demander ce qui est couvert par la spécification ou strictement nécessaire pour l'implémenter. Et cela resterait valable même si Microsoft décidait de céder ses brevets.
Ce n'est d'ailleurs pas une demande déraisonnable. GPLv3 [la licence publique générale GNU GPL version 3, NDT] requiert que les distributeurs consentent une licence similaire lorsqu'ils transmettent des versions modifiées d'un logiciel protégé, et beaucoup de sociétés – grandes et petites – n'ont aucun problème en faisant cela. Avec les moyens dont il dispose, Microsoft devrait à coup sûr être capable d'y arriver aussi. S'ils ont des hésitations sur la façon de faire, ils devraient nous contacter : nous serons ravis de travailler avec eux pour permettre d'aboutir à un résultat satisfaisant.
En attendant que cela arrive, les développeurs de logiciels libres devraient se garder d'écrire du code qui dépend de Mono. Les implémentations de C# peuvent toujours être attaquées pour violation des brevets que Microsoft détient : l'engagement résultant de la Community Promise est conçu pour donner à cette société plusieurs échappatoires si elle le souhaite. Nous ne voulons pas voir le dur labeur des développeurs perdu pour la communauté si nous perdons le droit d'utiliser Mono, et jusqu'à ce que nous parvenions tous ensemble à éliminer les brevets logiciels, utiliser un autre langage est le meilleur moyen d'éviter que ça n'arrive.
Lire aussi sur ce blogue : Licence de brevets exhaustive de Google pour VP8 contre vague promesse de Microsoft pour Mono : cherchez l'erreur