↤ August 19th, 2017
Note du traducteur : Ceci est la traduction du billet daté du 19 août 2017. Pour toute correction ou commentaire, contactez moi
Avertissement : Je ne suis pas avocat. Je ne parle pas au nom de Facebook, l’ASF ou CouchDB. Ce billet reflète uniquement mon point de vue personnel sur le sujet.
tl;dr : Les projets de l’Apache Software Foundation ne peuvent plus utiliser de dépendances distribuées sous la licence Facebook « BSD+Patents », y compris React.
J’essaierai d’expliquer la situation en des termes simples et sans biais. Beaucoup de fausses informations ont circulé sur le sujet et j’espère pouvoir clarifier la situation ici. S’il y a quoi que ce soit que je ne rapporte pas correctement ici, faites le moi savoir.
20 avril : le projet Apache Cassandra a demandé au département légal de l’ASF s’il pouvait utiliser RocksDB en dépendance, qui était alors sous double licence BSD+Patents ou GPL2.
17 juin : après une longue discussion, le vice président des affaires légales de l’ASF, Chris A. Mettmann, a conclu que le licence Facebook n’est pas compatible avec les règles de l’ASF sur les dépendances.
15 juillet : RocksDB change sa double licence de BSD+Patents à Apache License 2.0 & GPL2 (cela signifie que vous pouvez choisir d’utiliser l’une ou l’autre des licences lorsque vous dépendez de RocksDB). Le résultat est que RocksDB est désormais à nouveau compatible avec toutes les règles de l’ASF.
17 juillet : en cherchant d’autres dépendances sous licence BDS+Patents, React particulièrement est remarqué et l’ASF demande des clarifications en espérant que React suive l’exemple de RocksDB.
18 août : Facebook publie un communiqué et ferme le ticket GitHub associé, annonçant qu’ils restent avec la licence BDS+Patents.
Afin de comprendre le conflit, nous devons examiner ce que l’ASF et Facebook essaient respectivement d’atteindre avec leurs règles et licences.
Note: j’aimerais mettre doublement au clair le fait que je n’essaie pas de prendre position dans tout ça, j’explique simplement les intentions sous-jacentes aux textes légaux qui sont très denses. Selon moi, Facebook et l’ASF peuvent chacun faire ce qu’ils veulent en terme de licence. Et si leurs buts diffèrent, cela peut conduire à des conflits comme c’est le cas ici. C’est dommage, mais c’est le monde désordonné dans lequel nous vivons.
La Politique ASF veut que chacun puisse dépendre des projets Apache pour un projet Open Source ou commercial, et ce sans (trop de) restriction.
La Licence Apache 2.0 liste quelques restrictions, en résumé :
En retour, la Licence Apache 2.0 vous accorde une licence de copyright qui vous permet de faire ce que vous voulez. C’est ce qui est le plus important pour les autres projets Open Source.
Elle vous accorde aussi une licence de brevet, ce qui est plutôt important pour les utilisations commerciales de projets Apache.
Par exemple, cela signifie que je peux prendre le projet Apache CouchDB et le redistribuer en tant que nouvelle base de données commerciale et propriétaire JanDB. Tout cela sous réserve que je respecte les exigences de la Licence Apache 2.0 (tels que résumées ci-dessus), avec ou sans modification, gratuitement ou de manière payante, ou pour tout autre but de mon choix.
Cette « liberté en aval » est la raison première de l’existence de l’ASF et est inscrite ainsi dans ses règles et licences.
De plus, la licence Apache 2.0 inclut une autre restriction qui fait partie de la licence de brevet susmentionnée. Si vous utilisez un projet Apache, vous ne pouvez utiliser aucun de vos brevets pour affirmer que l’ASF ou quiconque utilise le même projet viole votre brevet, sans perdre la licence de brevet sur le projet Apache.
Dans l’exemple de JanDB, si je détiens un brevet sur les technologies de base de données, je ne peux attaquer aucun autre utilisateur de CouchDB sur ce brevet sans perdre dans le même temps ma licence de brevet pour CouchDB accordée par l’ASF. Je peux cependant toujours poursuivre ces utilisateurs pour d’autres raisons, incluant des violations de brevet par d’autres logiciels utilisés par ces utilisateurs.
Afin de rendre plus facile la tâche de décider quel type de licences les dépendances des projets Apache peuvent avoir, l’ASF a créé un aperçu très pratique des licences autorisées et non autorisées, et tout ce qui est entre les deux. Les licences non autorisées sont classifiées dans les licences de « Catégorie X ». Cette liste inclut un bon nombre de licences Open Source très populaires dont la famille GPL et bien d’autres.
L’intérêt de Facebook avec sa licence BDS+Patents est la protection contre les poursuites dites « frivoles » ou « vexatoires ». En résumé, si vous êtes une grosse société avec beaucoup d’argent et une grande exposition, des enfoirés entreprenants essaierons de vous poursuivre pour quelque raison que ce soit afin de vous extorquer légalement cet argent et cette exposition. Les brevets sont un outil de choix pour ce genre de connerie.
La licence BDS+Patents est conçue afin de minimiser ces poursuites judiciaires contre Facebook, et avec leur décision du 19 août, ils confirment que cela reste un grande priorité.
La clause sur les brevets de Facebook a une restriction similaire à ce que la licence Apache 2.0 exprime, sauf que sa définition est plus large. Là où la version de la licence Apache 2.0 restreint spécifiquement sa clause au « Travail » (disons Apache CouchDB), la licence de brevet Facebook est révoquée dès lors qu’une quelconque « revendication de brevet » est portée contre Facebook.
Ainsi, si vous détenez un brevet que vous pensez être violé pas une partie de ce que fait Facebook, mais qui est sans lien avec React, vous perdez votre licence de brevet pour React dès lors que vous poursuivez Facebook sur ce brevet. Dans le cas de la licence Apache 2.0, vous perdez uniquement la licence de brevet si vous revendiquez cette violation par le projet que vous licenciez vous même (soit Apache CouchDB dans l’exemple de JanDB).
En octobre 2014, Facebook a changé la licence de React de la licence Apache 2.0 vers BSD+Patents, explicitement car elle contient une protection plus large, et en octobre 2016 Facebook a confirmé ses intentions dans un appel avec l’ASF.
Les projets de l’Apache Software Foundation ne peuvent pas avoir de dépendances classées dans la Catégorie X par l’équipe légale de l’ASF. Cela inclut React ainsi que les projets de l’écosystème qui sont publiés par Facebook sous licence BSD+Patents. Les projets qui utilisent déjà ce genre de dépendances ne peuvent plus publier de nouvelles versions après le 31 août 2017 qui incluent ces dépendances et doivent se séparer de ces dépendances maintenant.
Les projet affectés son (a minima) : Cordova, Superset, TrafficControl, Ambari, Whimsy, Spot, Myriad, CouchDB, Lens, SensSoft, Sling.
Supprimer purement et simplement les dépendances ou trouver une alternative publiée sous une licence compatible et assumer tous le travail additionnel qu’une telle migration impose.
Migrer vers une architecture de plugin où les composants sous licence BSD+Patents sont maintenus et distribués en dehors de l’ASF, mais peuvent être ajoutés par les utilisateurs finaux.
Note : il existe des projets qui ont (ou affirment avoir) une API compatible avec React et qui sont publiés sous une licence compatible. « Tu n’as qu’à utiliser X » est un conseil classique qui ignore tout un tas de réalités :
React est plus que son cœur et a un large écosystème pour de nombreuses tâches relatives à la construction d’applications web. Beaucoup de ces projets annexes sont aussi sous licence BSD+Patents et ne peuvent ainsi pas être utilisés non plus et peu ont un remplaçant compatible. Ainsi « migrer vers X » n’est pas aussi trivial qu’il n’y parait suivant le nombre d’autres projets qui sont utilisés par dessus React. À titre d’information, pour l’interface administrateur Fauxton de CouchDB, le travail de portage est estimé entre un et deux mois de travail à plein temps d’un développeur pour ne plus utiliser React. Dans notre cas, il s’agit d’un investissement en temps non négligeable qui prend un temps précieux au développeur sur d’autres sujets plus importants.
React contient un bon nombre d’innovations techniques, et certaines personnes on suggéré de migrer vers un autre framework qui contient une partie de ces innovation (par exemple JSX) mais pas toutes, incluant la compatibilité de l’API. Migrer vers un tel framework requiert sensiblement plus de travail que l’option précédente. Dans le cas de CouchDB/Fauxton, ce coût est très probablement prohibitif, mais nous explorons encore des options.
L’équipe légale de l’ASF ne relit pas de manière préventive toutes les licences logicielles. Ce problème a été soulevé le 20 avril 2017 et résolu par l’ASF le 17 juin.
Rien.
L’incompatibilité se trouve entre la licence BDS+Patents et la politique de l’ASF.
Rien.
À moins que vous fassiez partie de l’ASF ou de toute autre organisation qui a une politique similaire envers le licence BDS+Patents. Il semble y en avoir quelques-unes.
Je peux seulement émettre des hypothèses, mais React est une beaucoup plus grosse cible, a été licencié différemment depuis le début, et Facebook semble intéressé par avoir RocksDB pris en charge par Cassandra et semble contribuer à ce travail. Mais je ne peux en être sûr.
Si.
Mais je préfère voir l’ASF et Facebook clairs sur leurs intentions que de laisser les choses dans le flou comme le font la plupart des autres projets Open Source et sociétés.