En fait je comprends assez bien cette situation.
Imaginons que je veuille créer un périphérique dédié à mes besoins, basé sur un pic USB spécialisé. Je vais donc utiliser le firmware du PIC (bien obligé), qui n'est pas libre, bien qu'ayant des spécifications particulièrement bien documentées. (Je me permet de remarquer qu'à ce niveau, ça touche vraiment au hardware, difficile de crier au loup, il faut bien que microchip vende des puces un tant soit peu utilisables) .
Donc je vais écrire un code assembleur ou C pour ce pic, qui ne fonctionnera pas sur mon PC mais bien sur le pic exclusivement. Seulement, pour que mon périphérique soit utilisable, je vais coder un driver en utilisant l'API dédiée à l'USB du kernel Linux (qui est sous GPLv2, le kernel Linux). Conséquence : mon driver sera sous GPLv2.
Le résultat c'est que j'invoque un système d'interfaçage logiciel/matériel basé sur du code sous GPL et sur du code qui n'est pas sous GPL, celui qui est dans le PIC.
Le problème est de considérer ce qui se passe lorsque j'utilise ce périphérique : la somme des composantes logicielles utilisent du code qui est sous GPL, le kernel Linux, ce qui oblige d'après la GPL à publier l'ensemble de mon code qui se trouve en mémoire code du PIC sous GPL. Est-ce que c'est quelque chose de raisonnable? Dans la mesure où n'importe qui a tout loisir d'acheter des PIC et de recopier le code qui est sous GPL dedans, donc de réaliser la même opération commerciale que la personne qui a mis son matériel sur le marché en premier, ça favorise la contrefaçon de quelque chose qui a plus un aspect matériel que logiciel. (Une souris, bien qu'il y ait des µcontrôleurs et du code proprio dedans, ça reste un matériel à mon avis).
Donc le problème, c'est bien que le code du kernel Linux (sous GPL) invoque du code non GPL pour faire fonctionner les périphériques. Mais si la norme USB existe, je pense qu'elle permet de s'affranchir de ce genre de problèmes.
Tout ça est compliqué, mais quand même, je ne pense pas être obligé de disposer du code interne de ma souris pour la faire fonctionner. ça serait un peu trop difficile de faire marcher mes périphériques dans ce cas. #%b
Après, il y a toujours le problème des périphériques qui ne sont pas normés et qui demandent une initialisation en mémoire interne pour fonctionner, ouais, c'est pas terrible comme système, en plus c'est pas fait pour faciliter l'interfaçage avec n'importe quel noyau, à moins d'avoir les spécs Ultra-secrète classée défense (!) attention.
En fait à mon avis, ça reste le problème du code non libre qui tourne sur le PC, et à part les logiciels qui te demandent d'accepter une licence, je ne vois pas ce qui dans le kernel Linux est non-opensource. Tant qu'il y a du code C lisible, et copyrighté sous GPL, on a bien un kernel linux Opensource.
On revient donc au problème des gros pilotes non-libres de type nvidia et fglrx pour ati. Quant au microcode qui tourne sur les périphériques, je crois que c'est essentiellement le problème des pilotes libres qui obligent pour utiliser le périphérique à utiliser certaines fonctionnalités restrictives vis-à-vis de l'utilisateur codées dans le périphérique même, par exemple le contrôle du niveau d'encre pour une imprimante, ce genre de choses.
Autrement, j'aurai du mal à voir où est le problème de faire marcher du microcode d'un périphérique :-o . Faut bien que les périphériques marchent quand même :-/.
Merci de me corriger si je dis n'importe quoi.
Poste le Tuesday 3 July 2007 03:52:52