Série - flicage-brouillon

Fil des billets

mardi 27 janvier 2015

Flicage-brouillon - Partie 2 chapitre 11 - Que peut-on contrôler ?

Sans le savoir, à chaque fois que nous utilisons un PC, une tablette, un smartphone ou même tout système informatique, nous manipulons à la fois des données, du matériel et du logiciel. Quelques explications s’imposent pour bien comprendre comment il est possible de conserver le contrôle de l’outil informatique. Que les puristes me pardonnent d’enfoncer des portes qu’ils ont déjà ouvertes !

Le matériel est facile à identifier : c’est ce qui est tangible et peut prendre la forme d’un smartphone, d’un PC de bureau (une unité centrale avec un clavier, un écran et une souris), d’une tablette ou d’un ordinateur portable. On peut diviser conceptuellement le matériel en trois parties : l’unité centrale qui est « le cerveau » de l’ordinateur traitant les données, les périphériques qui lui permettent de récupérer et d’échanger de l’information (écran, clavier, souris, écran tactile, divers capteurs, interface réseau avec et sans fil) et enfin la mémoire de masse, pour y stocker les données (disque dur, carte mémoire).

Le logiciel est pour sa part immatériel, c’est à dire qu’on ne peut pas le toucher. Ça peut être un système d’exploitation (Windows, OSX, iOS, Android, GNU/Linux) ou une application (Word, Excel, LibreOffice, Mozilla Firefox, VLC, GMail, Spotify, etc.). Pour simplifier, un logiciel est une suite ordonnées d’instructions (le code) que l’on donne au matériel pour lui indiquer comment manipuler les données. Le code décrit le processus pour manipuler les données.

Les données, toujours pour simplifier, ce sont des informations. Une liste de noms et de numéros de téléphone qu’on stockera dans un smartphone ; les montants des ventes saisis dans Excel pour faire des calculs ; une chanson numérisée pouvant être lue par un lecteur du genre iTunes ; une photo numérique qu’on retouchera avec un logiciel adapté. Les données sont souvent ce qui est le plus important pour l’utilisateur car elles lui sont souvent spécifiques.

Les trois parties du système sont indissociables : sans matériel, le logiciel ne sert à rien et l’on ne peut pas traiter les données. Sans les instructions du logiciel, la puissance de traitement du matériel ne peut pas être utilisée pour traiter les données.

Flicage-brouillon - Partie 2 chapitre 12 - contrôle et informatique personnelle

A la fin des années 1970, tout au début de la micro-informatique, la problématique du contrôle de l’informatique était toute simple : les premiers micro-ordinateurs étaient livrés quasiment sans logiciels et n’étaient pas connectés à Internet. Comme ils étaient destinés à des hobbyistes, des électroniciens et des bidouilleurs, l’utilisateur devait apprendre à écrire le logiciel dont il avait besoin pour en disposer.

C’était la situation idéale en termes de contrôle de l’informatique : l’utilisateur saisissait lui-même ses données dans un logiciel dont il avait pleinement le contrôle, puisqu’il l’avait écrit, sur un ordinateur qui était physiquement devant lui.

P2chap12-1_-_Utilisateur_developpeur_et_PC.png

On le verra, cette situation idéale de contrôle total ne durera pas.

Dans la grande confrérie des développeurs amateurs des premiers micro-ordinateurs, le partage était la norme : devant la rareté des logiciels disponibles, il était normal de partager les logiciels qu’on avait écrits avec d’autres hobbyistes. Le logiciel qu’on venait de recevoir ne fonctionnait pas exactement comme on voulait ? Qu’à cela ne tienne, il suffisait de le modifier pour corriger le problème. Pour cela, il faut comprendre comment fonctionne le logiciel, ce qui est possible s’il est relativement simple et écrit de façon structurée par son auteur.

Mais au fur et à mesure que la micro-informatique est devenue une industrie et que les utilisateurs ont compris le potentiel de l’informatique, que les besoins sont devenus plus complexes avec des enjeux plus importants, certains utilisateurs avancés sont devenus des développeurs de logiciels professionnels à temps plein.

Ce changement, cette professionnalisation, bienvenue pour régler le problème de la complexité croissante des besoins et des logiciels, a créé un un nouveau problème : tandis que jusqu’alors le développeur, l’utilisateur étaient la même personne et avaient donc des intérêts communs, on se retrouve alors avec un utilisateur qui veut un logiciel répondant à ses besoins propres, le développeur cherche au contraire à écrire une seule fois un logiciel qui réponde aux besoins du plus grand nombre, pour pouvoir le vendre à plus de clients possibles et ainsi maximiser son investissement en développement.

Le développeur de logiciels est de fait devenu un « éditeur d’applications » et l’utilisateur dispose de logiciels créés par un tiers : l’utilisateur dépend dorénavant du bon vouloir du développeur.

mercredi 28 janvier 2015

Flicage-brouillon - Partie 2 chapitre 13 - Le code, c'est la loi

Il y a dans l’histoire de l’informatique un événement d’apparence anodine qui a eu une grande importance : le jour où Richard Stallman a eu un problème avec la nouvelle imprimante de son bureau.

En 1980, Richard Stallman est informaticien et chercheur au laboratoire d’intelligence artificielle du MIT (Massachusetts Institute of Technology), célèbre université américaine. Le laboratoire vient de recevoir une imprimante très perfectionnée dont le logiciel comporte, comme tout logiciel, des imperfections, des bogues. Richard Stallman contacte le fabricant de l’imprimante et demande le code source du logiciel en vue de le corriger. Le fabricant le lui refuse. Pour eux, le logiciel est « propriétaire », son contenu doit donc rester secret pour éviter que des concurrents ne le copient et l’améliorent.

Note : code source et code binaire. Dans la plupart des cas, un logiciel existe sous deux formes : du code source, compréhensible par les informaticiens, et du code binaire, compréhensible uniquement par la machine. La transformation du code source en code binaire s’appelle compilation. Il est quasiment impossible pour un humain de comprendre le code binaire : les modifications du logiciel ne se font que sur le code source (sauf très rares exceptions). Les entreprises ont tendance à distribuer leurs logiciels uniquement sous code binaire, rendant ainsi les utilisateurs dépendants des personnes disposant du code source.

Pour Richard Stallman, qui vient du monde universitaire où le partage du code source et la collaboration entre informaticiens sont la norme, cette situation est moralement inacceptable. Il considère que cela limite la liberté des utilisateurs, les rend dépendants des éditeurs de logiciels. Par ailleurs, ces derniers font signer aux utilisateurs de leurs logiciels des contrats de licence qui leur interdisent de les modifier et de les redistribuer. Ce sont ces contrats de licence que l’on accepte trop souvent sans les lire quand on installe un logiciel sur son ordinateur. Pour Richard Stallman, interdire la collaboration et le partage est mauvais pour la société et le progrès technologique.

Pour contrer cela, Richard Stallman, qui a de la suite dans les idées, fonde le projet GNU. Il invente le concept de logiciel libre et crée la licence GNU General Public License (GNU GPL), le contrat de licence le plus utilisé au monde pour diffuser des logiciels libres.

Voici la définition par Richard Stallman d’un logiciel libre :

Un programme est un logiciel libre pour vous, utilisateur particulier, si :

  • vous avez la liberté de l’exécuter comme vous le voulez, pour quel que motif que ce soit ;
  • vous avez la liberté de modifier le programme afin qu’il corresponde mieux à vos besoins (dans la pratique, pour que cette liberté prenne effet, il vous faut pouvoir accéder au code source, puisqu’opérer des modifications au sein d’un programme dont on n’a pas le code source est un exercice extrêmement difficile) ;
  • vous disposez de la liberté d’en redistribuer des copies, que ce soit de manière gratuite ou onéreuse ;
  • vous avez la liberté de distribuer des versions modifiées du programme, afin que la communauté puisse bénéficier de vos améliorations.

Le projet GNU, lui aussi initié par Richard Stallman, vise à créer un système d’exploitation (logiciel de base permettant de faire tourner des applications) qui soit entièrement libre. Aujourd’hui, le projet GNU est surtout connu pour le logiciel GNU/Linux, souvent appelé à tort Linux, utilisé par des centaines de millions de gens dans des smartphones, des « box » ADSL, des serveurs (dont ceux de Google et Facebook), l’essentiel de l’infrastructure d’Internet et des PC.

Richard Stallman a clairement mis en évidence que celui qui écrit le programme peut décider de ce que peut faire ou ne pas faire l’utilisateur. Dans la notion de logiciel libre, c’est finalement l’utilisateur du logiciel qui est libre, plus que le logiciel en tant que tel.

La contribution de Lawrence Lessig

En 1999, dans un livre appelé Code and other laws of Cyberspace, le juriste américain Lawrence Lessig explique comment, dans notre société de plus en plus informatisée, le code informatique a donné le pouvoir aux développeurs aux dépens des utilisateurs. Lessig démontre qu’il fut un temps où la loi décidait de ce que le citoyen avait le droit de faire ou non, mais ce rôle est de plus en plus souvent joué par le code informatique. On peut le constater quand un logiciel nous interdit de faire ce que l’on veut : à moins qu’il ne soit libre et donc que son code soit librement modifiable, l’utilisateur est à la merci du développeur qui a écrit le logiciel.

En ce qui concerne la loi, son écriture et son adoption se font dans le cadre d’un processus démocratique, avec des amendements, des débats contradictoires entre juristes, avant d’être votée par des représentants des citoyens. À l’inverse, le logiciel est souvent écrit par une société commerciale dont les intérêts sont de fidéliser les clients, et il n’y a rien de plus fidèle qu’un client qui ne peut pas partir parce qu’on l’en empêche, par exemple en rendant compliquée l’exportation de ses données vers des solutions concurrentes.

Un utilisateur choisit un logiciel pour répondre à un besoin mais sans comprendre son fonctionnement interne, ni s’interroger sur la possibilité de récupérer ses données s’il choisit plus tard une autre solution..

En plus de la liberté, la transparence

Il existe un autre avantage au logiciel libre : le fait que l’on puisse lire son code source le rend (relativement) transparent. En effet, nous avons vu que le code source d’un logiciel propriétaire n’est pas visible. Il est ainsi très possible que ce logiciel nuise, directement ou indirectement, à l’utilisateur ou à sa sécurité sans que ce dernier ne s’en rende compte. En utilisant un logiciel propriétaire, nous sommes face à une « boite noire » que nous ne contrôlons pas.

Cela a donné lieu à de nombreuses controverses, où plusieurs logiciels très répandus comme Microsoft Windows, la messagerie Lotus Notes ou Skype pourraient avoir des portes dérobées permettant à des espions de la NSA (espionnage informatique américain) d’accéder facilement aux données des utilisateurs. Mais comme le code est opaque, il ne peut être audité facilement. Il est donc quasiment impossible de savoir si de telles portes dérobées ont été créées volontairement par les développeurs à la demande des services secrets américains ou non.

Le logiciel libre, parce que son code source est lisible, est exposé au regard permanent de programmeurs ou d’experts en sécurité et son fonctionnement examiné dans le détail. Au-delà de la liberté de faire ce que l’on veut et au-delà de permettre de contrôler ce que fait le logiciel, cette transparence nous permet d’avoir confiance dans le logiciel libre en question, même s’il est écrit par d’autres.

- page 5 de 12 -