Code copié dans Android : quelques précisions

Anthony Nelzin-Santos |

Hier, Florian Müller publiait neuf documents PDF pour un total de 46 pages, documentant sa thèse selon laquelle Android contenait 43 fichiers qui seraient directement du code copié du code de Java (lire : Oracle/Google : Android contiendrait du code copié de Java). Cette accusation, qui s'est répandue comme une traînée de poudre, a provoqué de nombreuses réactions, dont des réfutations. Nous vous proposons quelques précisions pour mieux comprendre cette affaire épineuse et complexe.

skitched

Qui est Florian Müller ?
Dans sa réfutation, Ed Burnette de ZDNEt, attaque personnellement Florian Müller : « tout a commencé avec un article écrit par Florian Müller, qui, au passage, n'est ni un avocat ni un développeur même s'il en joue un à la télévision ». Müller n'est en effet pas un avocat, mais c'est une personnalité connue et respectée dans le domaine de la propriété intellectuelle.

Auteur de publications informatiques, l'Allemand été consultant pour Blizzard (1987-1998) avant de se tourner vers le monde du libre : il a notamment été conseiller du PDG de MySQL AB de 2001 à 2004 (donc avant son acquisition par Sun en 2008, et par Oracle en 2010). En 2004, alors que la Commission européenne réfléchit à statuer sur la brevetabilité des logiciels en Europe, il mène la campagne NoSoftwarePatents avec le support de 1&1, Red Hat et MySQL. Son lobbying intensif est un des éléments menant au rejet de la directive sur les brevets logiciels par le Parlement européen le 6 juillet 2005.

Ayant reçu plusieurs prix pour son action en 2004-2005, Müller n'est donc pas avocat, mais un spécialiste des questions de propriété intellectuelle. N'hésitant pas à dire tout haut ce que tout le monde pense plus bas, il étudie le cas d'Android depuis plusieurs mois, ce qui ressemble parfois à une croisade personnelle.

Les fichiers incriminés
Müller a trouvé 43 fichiers (en deux lots de 6 et 37 fichiers) dans Android qu'il considère comme une copie de fichiers Java. Le lot le plus imposant, contenant 37 fichiers, provient d'une archive ZIP, MMAPI.zip, située assez bas dans le système. MMAPI est l'acronyme qui désigne les Mobile Media APIs de Java ME, un jeu d'outils pour lire et enregistrer de l'audio, de la vidéo et des images sur des téléphones portables. Les fichiers en questions correspondent à l'implémentation de MMAPI faite par SONiVOX (autrefois connu sous le nom de Sonic), ici pour des composants audio.

Les 6 autres fichiers semblent être des fichiers de tests que Sun fournissait aux développeurs pour les aider à tester leur code et le débugger. On rappelle qu'avant son rachat par Oracle, Sun était propriétaire de Java.

Les droits et devoirs sur ces fichiers
Les fichiers provenant de MMAPI étaient fournis par Sun gratuitement sur son site Internet. Gratuit ne veut pas dire libre : on ne peut pas faire n'importe quoi de ces fichiers et SONiVOX a bien fait attention de laisser en place des avertissements sur ces fichiers (des en-têtes portant la mention « PROPRIETARY/CONFIDENTIAL » et le fichier de Sun incluant la licence et portant la mention « DO NOT DISTRIBUTE! »). Leur présence dans les sources d'Android pose donc problème : ces fichiers n'avaient rien à y faire, d'autant plus que si Android utilise le code du framework audio de SONiVOX, il n'utilise pas MMAPI.

Même chose pour les 6 autres fichiers : fournis par Sun avec une licence très précise, ils ont été redistribués sous la licence Apache, un changement de licence qui ne va pas de soi (des fichiers placés sous la licence GPL ne peuvent être inclus dans un projet placé sous la licence Apache). Leur code étant identique à la version de Sun, ils sont sans doute la conséquence d'une extraction automatique par décompilation, qui peut expliquer le changement de licence (le robot de décompilation peut modifier l'en-tête et y ajouter une nouvelle licence « par erreur »). Ils ont été supprimés il y a quelques jours (le 14 janvier), avec le commentaire « Remove pointless tests » (suppression de tests sans intérêt).

Théorie et pratique
ZDNet comme Ars Technica expliquent que ces fichiers de test, présent dans les sources d'Android, ne font pas partie de la plateforme finale. Leur présence dans le repo d'Android pose cependant problème : que ces fichiers aient un jour été présents dans un smartphone Android ou pas, ils ont été présents dans les sources d'Android, et le droit ne fait pas de distinction entre les deux cas.

Que la licence des 6 fichiers ait été changée par erreur ou pas, elle a été changée, ce qui est un problème. Que les fichiers de SONiVOX aient été redistribués par erreur ou pas, ils ont été redistribués. Seule la justice pourra trancher sur cette affaire, qui ne devrait affecter qu'à la marge le cas opposant Oracle à Google, qui touche à l'implémentation de Java faite par Android, qui ne respecterait pas le standard (lire : Oracle attaque Google en justice).

Comme l'indique Nilay Patel d'Engadget (qui a lui été longtemps avocat spécialiste du copyright), la présence de ces fichiers à un moment ou à un autre dans les sources d'Android pose un problème sérieux à Google sur la question du respect de la propriété intellectuelle (notamment sur la question du changement de licence). Florian Müller devrait publier un nouvel article sur cette question, et Google ne peut que répondre pour clarifier les choses, ne serait-ce que par la voix par un porte-parole sous la forme d’un communiqué laconique.

Seule la justice peut statuer sur le fond de l'affrontement entre Oracle et Google, arrière-plan à cette fouille archéologique d'Android. On peut néanmoins remarquer que ces échanges montrent l'importance d'un audit plus rigoureux du code d'Android : la moindre petite faille sera exploitée dans le cadre de cette bataille juridique. La firme de Moutain View joue en effet gros dans cette affaire : Oracle a en mains de quoi remettre en cause le meilleur argument d'Android — sa gratuité.

avatar m_enfin | 
Excellent le bugdroid :)
avatar P.Gomes | 
C'est pas un bug, c'est un vol.
avatar m_enfin | 
J'ai jamais parlé de bug... :) renseigne toi donc ! Bof en tout cas le nombre de fois ou les logiciels propriétaires piquent du code libre ! Ca n'empeche pas que Google est peut-etre en tort en tout cas ! Oracle veut juste foutre son caca :)
avatar -oldmac- | 
@ tap : Ca prouve seulement encore une fois que le "monde libre", non seulement copie/vole sans vergogne mais maintenant il s'accapare en plus le travail des autres.
avatar m_enfin | 
mais l'inverse n'est pas vrai ? On verra selon ta réponse si tu es crédible ou pas :)
avatar Lou117 | 
Encore une fois, rien ne prouve qu'Apple (ou d'autres) n'ont pas fait de même sur des parties de leurs code, et le côté fermé empêche de le prouver... Microsoft avait été épinglé il y a des années pour un fait similaire. Je ne dis pas que Google n'est pas en tort, je ne suis pas en mesure de le dire, mais je suis quasiment sûr que d'autres le font aussi...
avatar 2fast | 
C'est sympa les procès d'intention, mais c'est un peu hors sujet.
avatar PtitRital67 | 
@ Lemmings : Le coté fermé que tu cites d'Apple ou de Microsoft ne peut rien contre l'ingénierie inversée, après quand on redistribue des sources au grand public on évite de faire de telles boulettes
avatar Lou117 | 
"contre l'ingénierie inversée" Super, impossible d'y trouver une preuve comme ça avec cette technique !
avatar snark | 
Cette explication me semble plus réaliste et impartiale que celle de ZDnet... Je pense également que le simple acte de distribution, peut importe son utilisation réel sur l'appareil, viole largement les licences GPL et Apache. Étant donné que l'argumentaire de Google face à Oracle risque d'être difficile à trouver concernant leur implémentation d'une JVM maison... Microsoft s'y étant déjà cassé les dents avec son J++ Cette histoire risque juste de dégrader l'image de Google face aux juges qui s'occuperons de l'affaire les opposant à la boite de Ellison, mais dans l'absolu ça me semble mineur... Y'a jamais eu de lourde condamnation pour ce genre d'inclusion de fichier. Rappelez vous l'histoire du StringBuffer de Microsoft, un pet dans l'eau au final...
avatar Radamsberg | 
Oracle fait parler d'elle ! Je me souvient des problèmes avec Opensolaris ! Puis OpenOffice qui ne sera plus libre !! Il y en à qui pense que la seule vérité, c'est celles présenté par des sociétés avec un esprit privateur ! Comment peut on encore penser de nos jour que l'open sources n'est pas une solution viable ! Ce qui est dit est peut être vrais ! Ou un moyen , ultime moyen de créer le trouble dans le monde du logiciel libre ! Je prend un exemple : Chez GNU/Linux pour lire les Films DVD acheté, ont utilise un fichier qui porte le nom de libdvdcss, seulement ,il est légitime de regarder un DVD acheté ,de le regarder sur son ordinateur, toléré sur GNU/Linux mais hors la loi ! Pourquoi tend d'injustice ? Pourquoi tend de monopole ?
avatar ThoTokio | 
En tout cas pour moi, et si ce qui est reproché à Google concernant cet éventuel non respect de la propriété intellectuelle d'oracle est avéré, cela tendra à prouver une chose : Google a cherché à lancer très vite un OS pour smartphone lors de son rachat d'Androïd ! Très vite, trop vite, de manière bâclée, sans s'attarder sur des "détails" pour arriver au plus vite sur ce marché naissant des smartphones... Mais pourquoi au fait tant de précipitation ? ...Rappelons qu'à ce moment là le patron de Google siégeait au conseil d'administration d'Apple... Et qu'Apple allait, puis avait et finalement venait... de lancer l'iPhone....
avatar m_enfin | 
regarde bien ce que tu écris, regarde bien les fichiers en question, et regarde TOUT Android. Oui, inutile d'en dire plus. Venait de lancer ? Android a été lancé en 2005.
avatar Magnificent_8th | 
Mouai Apple a copié autant comme un goret que Google sur tous les Os mis a dispos, mais ça n'empêche pas les utilisateurs de se vautrer sur Android ou iOs .... Pourtant les 2 sont pareils de pâles copies de code a la con.... Bref nous on paye toujours autant.
avatar Abudah237 | 
@ djk314 : Mac OS X est basé sur le noyau Mach, sous licence BSD, ce qui au contraire d'une licence propriétaire ou de la GPL, le rend librement intégrable dans des produits propriétaires..
avatar winstonsmith | 
@ djk314 : Tu parles sans savoir...
avatar Lou117 | 
Prouve le contraire lol.
avatar Abudah237 | 
cf. mon post plus haut.
avatar Lou117 | 
Il n'y a pas que le noyaux dans iOS il me semble ! Mais bon... Tu aimes défendre sans savoir c'est bien... (again rien ne prouve non plus qu'Apple ait fait ça !) Sinon, petit article sur le sujet : http://www.bheller.com/2011/01/23/le-grand-mechant-oracle-android-est-il-en-danger/
avatar Abudah237 | 
Bon je trouve l'argument consistant à dire quand quelqu'un est pris sur le fait "les autres ont dû le faire aussi" assez limité. djk314, trouve quelque chose d'autre au lieu de troller. maintenant en réaction à l'article que tu cites: Quand au degré d'ouverture d'Android, je ne trouve pas pour ma part qu'un système dans lequel tout est fait selon l'unique bon vouloir de Google, et pour lequel il n'y a aucune discussion possible sur les fonctionnalités attendues avant que la release arrive telle le messie, avec le code source gardé sous cloche jusqu'au dernier moment, est si libre que ça. Dans un projet libre, il doit y avoir de la discussion sur les fonctionnalités, c'est d'ailleurs le cas de Java, même sous Oracle, quoi que tu puisses en penser. Et de pas mal de projets, Linux compris. Oracle n'est pas tout blanc, mais Google est aussi loin de l'être. Google a d'ailleurs précipité la fin de Sun en prenant le maximum de Java et en ne redonnant rien à Sun, du coup l'appêtit de ses dirigeants se retourne contre eux. C'est un peu facile maintenant pour Google de pointer du doigt Oracle... sachant que si Sun n'avait pas été racheté par Oracle, il l'aurait été par IBM, pour le même résultat qu'aujoud'hui. Pour info, la position vis à vis d'Android du mainteneur des branches stables du noyau Linux sur Android n'est pas aussi positive que celle de l'article que tu cites: "Google shows no sign of working to get their code upstream anymore.(...)As for me, I think I'll look into getting a Nokia N900. It looks much more open, with the code mostly all upstream, and a much more active developer community." Ce qui est d'ailleurs incroyable, c'est que les employés de Google expliquent qu'ils ont des ressources très limitées pour travailler avec la communauté Linux. mais ils ont par contre les moyens qu'il faut pour sortir des évolutions d'Android à marche forcée. Travailler avec la communauté Open Source n'est en fait pas vraiment leur priorité, malgré les grands discours de rigueur. C'est pas grave, ça marche...
avatar Lou117 | 
A quel endroit exactement tu as lu dans cet article que je disais que Google était un grand pourfendeur du libre ? Android est un projet libre, que tu le veuilles ou non. Mais c'est aussi un projet qui a ses contraintes que tu expliques très bien. On peut critiquer Google là dessus clairement, mais c'est aussi une décision qui peut se comprendre. Android est ouvert d'une certaine façon, pas autant que bien d'autres projets libre, mais bien plus que tous les autres OS du genre. Quand à ta citation sur le N900, elle a 2 ans ? Car bon, vu le succès de cet appareil, et de son OS mort/né...

CONNEXION UTILISATEUR