Applis de traçage : scénarios pour les non-spécialistes

Un document de plus sur les dangers de l’application de traçage ? Nous n’allons pas reproduire ici les 13 pages documentées et augmentées de notes de référence d’une équipe de 14 spécialistes en cryptographie :

Xavier Bonnetain, University of Waterloo, Canada ; Anne Canteaut, Inria ; Véronique Cortier, CNRS, Loria ; Pierrick Gaudry, CNRS, Loria ; Lucca Hirschi, Inria ; Steve Kremer, Inria ; Stéphanie Lacour, CNRS ; Matthieu Lequesne, Sorbonne Université et Inria ; Gaëtan Leurent, Inria ; Léo Perrin, Inria ; André Schrottenloher, Inria ; Emmanuel Thomé, Inria ; Serge Vaudenay, EPFL, Suisse ; Christophe Vuillot, Inria.

… mais ils ont fait un effort tout à fait louable de pédagogie pour qu’au-delà des problèmes techniques réels, nous comprenions tous. Le document s’intitule : Le traçage anonyme, dangereux oxymore, Analyse de risques à destination des non-spécialistes

Nous vous invitons évidemment à en découvrir l’intégralité, mais voici simplement les cas fictifs (hélas réalistes), les scénarios que les spécialistes nous proposent.

Au moment où va peut-être se déclencher une offensive médiatique en faveur d’une application de surveillance de la part du gouvernement ou de Google+Apple, il n’est probablement pas inutile d’avoir des exemples simples et faciles à comprendre pour expliquer notre opposition.

Nous avons ajouté en complément la conclusion de l’ensemble du document qui précise clairement les limites de toute solution technique et les valeurs que doit respecter l’informatique. Que les auteurs soient vivement remerciés de cet exercice d’éducation de tous qu’ils ont eu l’excellente idée de placer sous licence CC-BY 4.0 .

Accéder aux articles déjà publiés dans notre dossier StopCovid



Le joueur de foot Gronaldo doit disputer le prochain match de Ligue des champions. Pour l’empêcher de jouer, il suffit pour un adversaire de laisser son téléphone à côté de celui de Gronaldo à son insu, puis de se déclarer malade. Gronaldo recevra une alerte, car il aurait été en contact avec une personne infectée, et devra rester 14 jours éloigné des terrains

M. Lambda qui, pour éviter la contamination, ne sort de chez lui que pour faire ses courses à l’épicerie du quartier, reçoit une notification de son téléphone. Il en déduit que le responsable n’est autre que l’épicier.

Mme Toutlemonde qui, elle, croise beaucoup de gens dans la journée, reçoit une notification. Il lui suffit de discuter quelques instants avec son voisin de palier et un collègue de bureau, pour savoir que le malade ne fait pas partie de son entourage professionnel, mais qu’il habite l’immeuble. Grâce à ces indices, elle suspecte fortement (peut-être à tort) M. Harisk du 3e étage, qui est ambulancier, d’avoir contaminé tous ses voisins. Elle s’empresse de prévenir le reste des habitants de l’immeuble via les réseaux sociaux.

M. Ipokondriac voudrait savoir si ses voisins sont malades. Il récupère son vieux téléphone dans un placard, y installe l’application TraceVIRUS, et le laisse dans sa boîte aux lettres en bas de l’immeuble. Tous les voisins passent à côté à chaque fois qu’ils rentrent chez eux, et le téléphone recevra une notification si l’un d’entre eux est malade.

L’entreprise RIPOUE souhaite recruter une personne pour un CDD. Elle veut s’assurer que le candidat ne tombe pas malade entre l’entretien d’embauche et la signature du contrat. Elle utilise donc un téléphone dédié qui est allumé uniquement pendant l’entretien, et qui recevra une alerte si le candidat est testé positif plus tard.

M. Paparazzo cherche des informations sur la vie privée de Mme Star. Il soudoie Mme Rimelle, la maquilleuse qui intervient sur le tournage de son dernier film pour qu’elle allume un téléphone dédié et qu’elle le place à proximité de celui de Mme Star. M. Paparazzo récupère ensuite le téléphone. Il recevra une notification si Mme Star est infectée par le virus.

M. Hanty, qui présente des symptômes du COVID-19, est un militant antisystème. Pour dénoncer la mise en place de l’application TraceVIRUS, il attache son téléphone à son chien, et le laisse courir dans le parc toute la journée. Le lendemain il va voir le médecin et il est testé positif ; tous les promeneurs reçoivent une notification.

Le sous-marin Le Terrifiant doit appareiller dans quelques jours, mais Jean Bond est un agent étranger qui veut empêcher son départ. Il recrute Mata-Hatchoum qui présente des symptômes, et lui demande de faire le tour des bars de marins. Mata-Hatchoum va ensuite se faire tester, et 5 marins reçoivent une notification de l’application. Le Terrifiant est obligé de rester à quai.

L’élève Ducovid a un contrôle de français la semaine prochaine, mais il n’a pas lu l’œuvre au programme. Grâce à une petite annonce, il trouve M. Enrumais qui présente des symptômes et accepte de lui prêter son téléphone. Il fait passer le téléphone de M. Enrumais dans toute la classe, puis le laisse traîner en salle des profs. Il le rend ensuite à M. Enrumais, qui va voir un médecin. Le médecin constate que M. Enrumais est malade du COVID et le déclare dans l’application du téléphone. Ceci déclenche une alerte pour toute la classe et pour tous les professeurs, le lycée est fermé !

M. Rafletou veut cambrioler la maison de l’oncle canard. Avant d’entrer, il utilise une antenne pour détecter les signaux Bluetooth. Il sait que l’oncle canard utilise TraceVIRUS, et s’il n’y a pas de signal c’est que la maison est vide.

Le centre commercial La Fayote veut protéger ses clients, et refuser ceux qui n’utilisent pas l’application TraceVIRUS. Comme l’application diffuse régulièrement des messages, il suffit que le vigile à l’entrée utilise une antenne Bluetooth pour détecter les clients qui utilisent l’application, et ceux qui ne l’utilisent pas.

Peu après avoir installé l’applicationTraceVIRUS, Mme Toutlemonde entend parler de l’application GeoTraceVIRUS qui réutilise les informations TraceVIRUS pour localiser les malades. Mme Toutlemonde apprend ainsi qu’un malade s’est rendu samedi dernier au supermarché PetitPrix. Par crainte (peut-être infondée) d’attraper le virus, elle ne fera pas ses courses chez PetitPrix cette semaine.

La chaîne de supermarché SansScrupule utilise des traceurs Bluetooth pour suivre les clients dans ses magasins. Ils relient l’identifiant Bluetooth à l’identité réelle à partir de l’application MySansScrupule, ou avec les cartes bancaires lors du passage en caisse. Pendant que M. Lambda fait ses courses, ils peuvent simuler un contact avec son téléphone, et ils seront donc prévenus si M. Lambda est malade. Cette information sera transmise au service assurance du groupe.

Mme Toutlemonde a installé l’application chatsMignons sur son téléphone, sans savoir que c’est un logiciel espion (un « malware ») qui l’espionne. Après avoir déclaré dans TraceVIRUS qu’elle est malade, elle reçoit un message pour la faire chanter, menaçant de révéler sa maladie à son assurance et à son employeur qui risque de mettre fin à sa période d’essai. Une autre activité lucrative du crime organisé, très facile à mettre en œuvre dans certains des systèmes de traçage proposés, consisterait à garantir, moyennant finances, la mise en quatorzaine obligatoire de personnes ciblées.


Don Covideone vend une application InfecteTonVoisin sur Internet. Après avoir téléchargé l’application, il suffit d’approcher son téléphone d’une personne pour qu’elle reçoive une notification lui signalant qu’elle est à risque. Les attaques sont désormais possibles sans compétence technique. Ainsi, Monsieur Bouque-Maeker compte parier lors du prochain match de Ligue des champions. Par chance, il assistera à la conférence de presse de Gronaldo. Il mise alors fortement sur l’équipe adverse, pourtant donnée perdante à 10 contre 1. Il télécharge l’application InfecteTonVoisin et approche son téléphone de Gronaldo pendant l’interview. Gronaldo reçoit une alerte, il ne pourra pas disputer le match. Son équipe perd et Monsieur Bouque-Maeker remporte la mise !

[L’image ci-dessous résume l’ensemble de l’argumentaire de 13 pages, pas seulement les cas de figure plus haut mentionnés.]

résumé : Il n’y a pas de base de donńees nominative des malades. VRAI – Les donńees sont anonymes.FAUX – Il est impossible de retrouver qui a contamińe qui.FAUX – Il est impossible de savoir si une personne précise est malade ou non.FAUX – Il est impossible de d́éclencher une fausse alerte.FAUX – L’utilisation du Bluetooth ne pose pas de problème de sécurité.FAUX – Ce dispositif rend impossible un fichage à grande ́echelle. FAUX

 

Conclusion

Le traçage des contacts pose de nombreux problèmes de sécurité et de respect de la vie privée, et les quelques scénarios que nous avons présentés n’illustrent qu’un petit nombre des détournements possibles. À cet égard, la cryptographie n’apporte que des réponses très partielles.

Nombre des situations que nous avons présentées exploitent en effet les fonctionnalités de ce type de technique, plutôt que leur mise en œuvre. Dès lors, l’arbitrage de ces risques ne pourra pas être résolu par la technique. Il relève de choix politiques qui mettront en balance les atteintes prévisibles aux droits et libertés fondamentaux et les bénéfices potentiels qui peuvent être espérés dans la lutte contre l’épidémie. À notre connaissance, l’estimation des bénéfices d’un éventuel traçage numérique est aujourd’hui encore très incertaine, alors même que les scénarios que nous avons développés ici sont, eux, connus et plausibles.

Un principe essentiel en sécurité informatique est que l’innocuité d’un système ne doit en aucun cas être présumée en comptant sur l’honnêteté de certains de ses acteurs. Ce même principe apparaît dans l’évolution de notre droit en matière de protection des données à caractère personnel. Si, avec la loi « Informatique et libertés » de 1978, c’était de la part des pouvoirs publics, et singulièrement de l’état, que des dérives étaient redoutées, les acteurs privés puis, à travers le RGPD, tous les acteurs de la société ont été associés à ces craintes. Les atteintes que les systèmes de traçage peuvent faire subir aux droits et libertés de chacun et chacune d’entre nous peuvent venir non seulement des pouvoirs publics qui en recommandent le développement et la mise en œuvre, mais aussi d’autres acteurs, collectifs ou individuels, qui sauront tirer profit des propriétés de ces systèmes comme autant de failles.

Le premier alinéa de l’article 1 de la loi de 1978 a survécu à toutes ses révisions et évolutions. L’urgence que nous ressentons collectivement face à notre situation actuelle ne doit pas nous le faire oublier : L’informatique doit être au service de chaque citoyen. […] elle ne doit porter atteinte ni à l’identité humaine, ni aux droits de l’homme, ni à la vie privée, ni aux libertés individuelles ou publiques.




Une appli de traçage du COVID 19 qui échappe à Big Brother ?

Ou plutôt pas de traçage du tout ? Oui bien sûr, ce serait sans doute la meilleure solution compte tenu des inévitables « glissements » que redoute comme nous Hubert Guillaud dans cet article.

Accéder aux articles déjà publiés dans notre dossier StopCovid

 

Mais à l’heure même où se profile l’appli gouvernementale, véritable agneau innocent qui sera inévitablement converti un jour prochain en outil d’espionnage pur et simple, voici une proposition alternative de protocole qui permettrait de freiner la diffusion de la pandémie et d’échapper à la surveillance invasive.

Voici pour comprendre le principe de cette application une bande dessinée, qui est l’œuvre de Nicky Case (son siteson patreon), elle est destinée à expliquer le fonctionnement du protocole DP-3T à un public plus large. Elle n’est pas une représentation exacte du protocole, comme elle le précise :

Cette BD présente des aspects qui vont au-delà des spécifications de notre protocole, tels qu’un score de risque lié à une instruction de rester à la maison, un exemple ludique de ce à quoi pourrait ressembler un algorithme de calcul de risque local.

Bien que notre protocole soit conçu pour protéger la vie privée et pour contribuer à protéger un large éventail de libertés contre les détournements de fonction, il nécessite un déploiement réfléchi dans un environnement avec des politiques informées et protectrices des droits de l’homme afin de fonctionner pour tous les membres de nos communautés.

La bande dessinée ne doit donc pas être lue comme fournissant des suggestions de politiques au-delà du protocole de l’équipe DP-3T.

Pour celles et ceux qui veulent aller plus loin, beaucoup de précisions sur son fonctionnement, ses limites et ses conditions sont dans cette étude proposée par un pool de scientifiques dont la lecture demande un certain bagage technique.

La présente publication ne signifie pas que Framasoft promeut une quelconque application ni ne la présente comme une solution miracle. Il s’agit seulement d’éclairer le fonctionnement d’un protocole.

Bande dessinée originale en anglais : https://ncase.me/contact-tracing/

La traduction française que vous pouvez parcourir ci-dessous est due aux efforts conjugués et patients de Michel « Meï » Mancier, et de Samuel Hackwill. Qu’ils en soient vivement remerciés !




Only You & SQL : un nouveau Framabook

Ce nouvel ouvrage vous entraîne dans les coulisses de nos usages numériques quotidiens et nous fait découvrir en profondeur la gestion des bases de données et le langage qui sert à interagir avec elles.

Vous n’avez jamais vu une base de données ? Moi non plus, mais comme vous, dès que je veux faire un achat en ligne ou simplement mener une recherche sur le Web, mon appareil s’adresse à une base de données.

devant son ordi il se vante d’être génial avec un grand sourire car il a réussi d’un seul coup à retrouver laliste de tous leslibristes albinos du tarn et garonne et qui utilient gentoo. derrière lui, l’éléphant bleu de postGresql fait "humpf, heureusement que je suis là, hein… "

Bon, SQL et SGBD, SGBDRO, les sigles ça fait peur, mais Vincent Lozano et Étienne Georges qui ont fait un travail remarquable ont prévu un précieux glossaire (la table des matières est à l’avenant).

Mais peut-être êtes-vous plutôt en train d’arborer un sourire un peu condescendant, parce que vous, vous nagez dans les bases de données avec l’aisance d’une anguille dans la mer des Sargasses. Eh bien, il y a fort à parier qu’au-delà des chapitres d’initiation, ce nouveau Framabook va vous faire découvrir ou redécouvrir des aspects méconnus de ce domaine vaste et évolutif.

 

Voici d’ailleurs quelques observations de Nailyk, qui a déjà parcouru l’ouvrage avec intérêt :

Un gros volume de 350 pages tout de même, mais les chapitres sont digestes. Pas trop longs, bien ordonnés et très bien regroupés.

Je trouve réducteur de le cantonner aux SGBD. Les notions de ses chapitres concernant le stockage des informations me semble être tout à fait appropriés pour d’autres sujets.

Même si vous n’êtes plus un débutant et bien que tout soit parfaitement détaillé, il faut parfois s’accrocher dur.

Heureusement, les touches d’humour font un bien fou à la lecture. La mise en forme, les typos et les schéma rendent la lecture vraiment agréable. Excellent livre que je m’empresserai de recommander à plusieurs personnes ! On sent le travail minutieux et c’est très agréable!

Couverture du framabook : un symbole d’empilement de base de données, un engrenage et en légende "tout ce que vous avez toujours voulu savoir sur les SGBD sans jamais avoir osé le demander" suivi des noms des auteurs et de la mention Framabook

Quatre questions à Vincent, co-auteur de l’ouvrage

Comment en es-tu arrivé là ? Tu es tombé dans le SQL quand tu étais petit ?

En 1993, dans le cadre de qu’on appelait le « service militaire » au service informatique d’une base aérienne, via un logiciel de la société Borland qui se nommait Paradox. Puis en 1999, lorsque j’ai été nommé maître de conférences à l’Énise, j’ai découvert PostgreSQL. J’ai développé pas mal d’applications de gestion en PHP puis jQuery qui s’appuyaient sur ce SGBD libre. L’Énise s’est ensuite équipée de la Rolls (!) des systèmes de gestion de bases de données : Oracle.

Qu’apporte ce livre si l’on considère qu’il existe déjà une littérature relativement abondante sur le sujet ?

L’idée forte est de retranscrire dans le manuel toute la chaîne de conception d’une base de données à partir de zéro. Ce qui va au-delà de ce que suggère notre titre, car il ne s’agit pas uniquement du langage SQL lui-même, mais des différentes étapes qui vont mener, à partir de l’idée « d’informatiser » un système, à la création d’une base. C’est ce qu’on appelle la modélisation conceptuelle et le livre l’aborde à partir de différentes études de cas.

Puisqu’il est question de bases de données, l’autre parti pris est de montrer comment sont stockées les informations basiques que l’on manipule tous les jours : les entiers, les nombres à virgule, les caractères, avec les petites subtilités pas forcément connues comme la précision des flottants et l’encodage UTF-8. Dans le même ordre d’idée, pour rester dans les principes fondamentaux, sont exposées dans le livre, quelques rudiments pour comprendre les algorithmes de tri et de recherche qui se cachent derrière le SELECT de SQL.

Enfin, concernant SQL lui-même, un accent est d’une part mis sur l’aspect traitement (procédures, triggers, vues) et sur le fait que les SGBD savent gérer les accès concurrents (plusieurs processus qui accèdent aux données en même temps), et sur l’aspect contraintes d’intégrité qui font la force et la particularité des SGBD relationnelles.

Il existe des livres sur les bases de données SQL très théoriques, sur l’algèbre relationnelle notamment, pourquoi pas dans ce livre ?

Ni Étienne, ni moi ne sommes des informaticiens de formation. Nous avons été tous deux formés en tant qu’ingénieurs généralistes et sommes des autodidactes en informatique, ce qui ne nous pas empêché d’en faire notre métier. C’est sans doute ce qui explique que ce livre n’est pas un livre orthodoxe, bâti comme un cours magistral, avec des théorèmes et des propriétés. Il y a un parti pris de didactique non dogmatique, qui amène à découvrir les concepts par l’exemple notamment.

En quoi ce projet est relié aux logiciels libres ?

Il l’est évidemment parce que PostgreSql est LE logiciel libre de gestion de bases de donnée relationnelles mais il l’est aussi dans l’esprit. Être capable d’analyser un système d’information existant, le modéliser et bâtir une base grâce à Sql constituent aujourd’hui des atouts maîtres pour être relativement libre, libre de développer ses propres applications notamment.

 

Pour découvrir l’ouvrage rendez-vous sur la page Framabook qui lui est dédiée




Un jeune libriste part à l’asso des mauvaises habitudes

Neil vient de finir un stage d’étudiant au terme duquel il a réussi à faire adopter des outils libres à une association. Il livre ici le récit de ses tribulations, c’est amusant et édifiant…

On aimerait bien qu’il y en ait beaucoup comme lui pour s’engager de façon aussi déterminée et efficace. Nous espérons entamer une série d’interviews de libristes qui comme lui sont particulièrement impliqué⋅e⋅s dans la diffusion des valeurs et des pratiques libristes.


avatar de Neil, un pigeon sur la tête
Avatar de Neil, image d’après Tunaniverse

Bonjour à tous,

N’ayant encore qu’assez peu d’expérience dans le domaine du libre et s’agissant de mon premier article sur Internet, je sollicite votre bienveillance et vous invite à me signaler toute éventuelle erreur ou mauvais usage des termes dans cet article.

Contexte

Les études

Avant de commencer, un peu de background. J’ai 20 ans et je suis en première année de BTS SIO (branche SLAM), formation post-bac orientée sur l’informatique de gestion et le développement d’applications.

Au bout d’un mois dans cette filière, j’ai senti qu’elle n’était pas pour moi en constatant notamment un retard assez grave dans les notions du référentiel. Mais pour des raisons financières (bourses, appartement, etc.) j’ai dû finir mon année, ce qui implique l’obligation de trouver un stage d’un mois en juin.

Le choix de l’association

J’ai donc choisi une association que je vais appeler Ciné-Asso, qui propose des tarifs réduits pour des séances au cinéma pour les établissements scolaires et ses adhérents. Ses responsables disaient avoir besoin de retravailler leur système d’information.

C’était pour moi une chance que de pouvoir mettre mes connaissances à disposition d’une association, ce qui m’attirait bien plus que les stages choisis par mes camarades de classe (stage en banque, en dépannage/réparation informatique, au supermarché, en startup French Tech qui développe sous WinDev1. Choix judicieux que de choisir un stage WinDev en BTS SIO : WinDev fait partie des logiciels étudiés et utilisés tout comme WordPress, Microsoft Visio, Win’Design, PC Wizard 2015 et plein d’autres. (Vous comprenez pourquoi je n’aime pas cette filière ?)

Et je préférais travailler pour une asso en rapport avec l’art et la culture. Le choix était donc déjà fait.

Un peu de technique

En ce qui concerne les outils utilisés, mon ordinateur tourne sous Debian Buster (prerelease) depuis Janvier 2018. Je code exclusivement sous Vim, mon éditeur préféré. Pour le développement web, j’utilise Apache et MariaDB côté serveur (en local, donc sur mon propre poste). J’utilise souvent MySQL Workbench (la version sous licence GPL par Oracle) pour éditer la BDD, sinon en CLI. Je travaille tout le temps avec draw.io (licence Apache), un logiciel vraiment pratique pour réaliser des schémas en tous genres, des cartes mentales aux modèles relationnels. Je m’estime par ailleurs libriste et refuse, lorsque la situation le permet, de travailler avec des logiciels propriétaires. Vous allez voir que défendre ses valeurs n’est pas facile…

Tâches assignées

Principalement deux tâches me seront confiées durant ce stage d’un mois :

  • Retravailler le site web de Ciné-Asso Leur site web tournait sous une très ancienne version de Joomla ! et franchement, ce n’était pas beau à voir. Bref, un site des années 2006. Ma mission sera de développer un site vitrine pour le remplacer, avec une gestion d’évènements planifiés (de séances de films, en l’occurrence) pour l’association. Cela inclut évidemment la formation des bénévoles à l’outil ;
  • Retravailler la base de données, reconstruire la base de données utilisée pour enregistrer les adhérents et les donateurs de l’asso. La base de données actuelle a été créée il y a 10 ans sous Access 2003 (si ce n’est 98…) et elle est encore utilisée jusqu’à présent. La base n’est pas relationnelle alors qu’elle devrait l’être. Résultat : 35 champs dans une table avec les adhérents et donateurs mélangés, des doublons, des couples sur un seul enregistrement et de sérieuses limites. Je vais donc devoir créer une nouvelle base, migrer toutes les données et former les bénévoles.

Le tout, donc, en un mois, avec la contrainte personnelle de n’utiliser que des logiciels libres.

capture de la liste des entrées de la base de données ancienne
La base d’adhérents au départ…

Présentation de Ciné-Asso

Je vais donc vous présenter brièvement l’équipe de Ciné-Asso. De faux noms leur seront attribués afin de préserver leur anonymat.

M. Touron est le président de l’association. Un esprit juste et logique.

Mme Nougat est la trésorière et celle que je dois convaincre. Elle est très réticente à l’intégration de mon travail au sein de l’asso. Elle sera aussi l’une des principales utilisatrices du logiciel de gestion de base de données. J’ai donc intérêt à faire du bon travail afin de satisfaire ses attentes.

M. Réglisse s’occupe de la communication auprès des adhérents. Il utilise tout le temps l’outil informatique dans son travail, pas toujours comme il le faudrait.

Mme Caramel est une jeune bénévole qui soutient mes idées. Elle s’occupe principalement du site web.

M. Calisson est un bénévole octogénaire et maintient la base de données Access. C’est un autodidacte de l’informatique. Il racontait fièrement qu’il avait programmé en COBOL pour le gouvernement à une époque désormais révolue.

M. Prunelle est un prestataire de services extérieur à l’association et jouera un rôle crucial.

Une réunion est organisée entre deux ou trois bénévoles et moi deux fois par semaine afin de présenter l’avancée de mon travail et de m’ajuster à la demande. En dehors des réunions, je travaille en autonomie.

Un détail important à relever : aucun membre de Ciné-Asso n’est assez compétent en informatique pour s’occuper du côté technique du site après mon départ.

Le site web

J’ai consacré les 15 premiers jours à la réalisation du site web. Et parmi tous les CMS possibles, j’ai choisi… Allez, devinez… WordPress.
Vous avez le droit de jeter vos tomates pourries ; mais je n’avais aucune expérience, ni avec Drupal, ni avec Joomla! et je n’avais clairement pas le temps de tester les solutions (rappelons que j’ai seulement 15 jours pour finaliser le site, formations incluses). De plus, je connaissais déjà bien WordPress pour l’avoir utilisé par le passé. Et croyez-moi, j’ai regretté de ne pas avoir été assez curieux, car ces 15 jours mêlèrent ennuis et souffrance.

Le décor

On commence par le design. J’ai choisi la version gratuite d’un thème qui leur plaisait bien. Je leur conçois une jolie bannière d’en-tête (avec GIMP, bien évidemment). Au final, j’ai dû la refaire 16 fois dans une réunion de 4 heures pour satisfaire aux demandes de M. Touron, président. Mais passons. J’ai dû bidouiller le CSS afin de convenir à leurs attentes, au risque de tout casser à la prochaine mise à jour. En guise de solution, je leur ai demandé de tout mettre à jour, sauf le thème.
C’est sale, ça contourne le problème, mais je ne vois pas d’autre option dans le temps imparti ; de plus, les thèmes souffrent rarement d’une faille de sécurité. J’ai donc jugé le pari suffisamment sûr.
Travailler sur WordPress n’est pas jouissif. Ça me servira de leçon pour mes stages futurs.

Les plugins

Je choisis le plugin WP Theater pour programmer les séances de cinéma.
Évidemment, les fonctions les plus intéressantes sont payantes. Je me contente des fonctions de base et réussis à convenir à leurs demandes. M. Touron m’a proposé d’acheter la version payante du plugin, mais j’ai insisté en disant que n’était pas nécessaire et que pour le prix de la fonctionnalité, ça relevait plutôt de l’escroquerie.

Les deux semaines s’écoulèrent (trop) paisiblement avec quelques ajustements par-ci par-là. La formation fut terminée en une après-midi. L’intéressée, Mme Caramel, appréciait l’interface conviviale du logiciel.

Choses vues

En un mois, j’ai appris à connaître les membres de l’association : leur personnalité, leur empathie et surtout, leur usage de l’outil informatique. J’ai tout de même quelques anecdotes qui font peur.

M. Réglisse et Micro$oft Office

J’apprends que l’un des membres de l’association, M. Réglisse, utilise MS Office 2003 pour travailler sur les documents de l’asso. Malheureusement, ce logiciel de Micro$oft n’arrive plus à exporter en PDF sur son poste, pour une raison inconnue (tout autant à lui qu’à moi). Sans compter que Office 2003 ne lit pas les nouveaux formats MS Office (depuis 2007 : xlsx, docx, etc.) ni les formats libres (odt…). Et ainsi, à chaque fois que M. Réglisse souhaite lire ou éditer un fichier incompatible, il envoie ce fichier par mail à sa collègue qui le convertit en PDF (à l’aide d’Apache OpenOffice) et qui lui renvoie par mail, et ce depuis longtemps.
Il fallait quand même que je me retienne de sourire en écoutant ça.
On me demande conseil.
En bon libriste, j’explique que le logiciel est trop vieux et qu’il faut passer à LibreOffice gratuitement ou acheter le pack Office tous les 3 ans, en insistant bien sur la première option.
« Oui, mais j’ai déjà essayé, ça marche pas, y’a des bugs et c’est pas toujours compatible… » Finalement, j’ai réussi à le convaincre. Ça a changé un peu la mise en forme de ses fichiers et il ne s’est pas gêné de me faire remarquer qu’un pixel dépassait par-ci par-là, mais il devrait s’en satisfaire pour le moment.

Vive le libre !

M. Réglisse et le mailing

Dans les aventures de M. Réglisse, j’ai aussi celle où il souhaite envoyer une newsletter à tous les adhérents de l’association. Il ouvre sa base Access 2003, et demande au logiciel de lui donner tous les mails des membres de l’asso. Il ouvre Thunderbird en parallèle, crée un nouveau groupe… et ajoute tous les mails en les réécrivant un par un à la main ! On m’explique que c’était parce que certains mails peuvent avoir été entrés dans la base de données avec des erreurs (une virgule au lieu d’un point, par exemple…) et que copier coller pose alors des problèmes… Car la base de données ne détecte pas les erreurs de saisie…

Je promets à M. Réglisse que le mailing sera beaucoup plus facile avec ma solution.

La réunion à mi-chemin

Les réunions furent assez régulières avec moi au sein de l’asso, mais celle-ci fut de très loin la plus importante. Je rencontre M. Prunelle, expert en informatique, retraité. Il s’agit d’un prestataire de services extérieur à l’association, contacté par Mme Nougat dans l’idée de contrôler mon travail et de m’aiguiller. Pour la première fois, M. Calisson, mainteneur de la base de données, est présent. M. Prunelle commence donc par parler de son parcours ; il a fondé une entreprise d’informatique pendant sa jeunesse et a déjà programmé en COBOL et en assembleur, raconte-t-il avec nostalgie.

M. Prunelle joue un rôle crucial : il s’engage à maintenir mon travail à mon départ en tant que bénévole si le projet correspond à ses attentes. Il s’agit donc d’une personne avec laquelle je devrais collaborer.

Les deux premières heures

On parle beaucoup du site web. Je l’ai présenté, il était déjà globalement fini, prêt à être basculé en production. M. Prunelle approuve mon choix du CMS WordPress et raconte qu’il a de l’expérience avec. On discute des quelques bidouillages sur le CSS (peu nombreux mais hélas impératifs conformément aux demandes).
Mon code étant commenté et mes modifications légères et peu nombreuses, il les approuve et se propose même de les maintenir si ça casse après une mise à jour. Super, ça m’arrache une épine du pied !

Les deux dernières heures

J’aborde le sujet de la base de données. Il faut savoir que la trésorière, Mme Nougat, s’oppose assez fortement au fait que je travaille sur la BDD. Elle souhaite que je me consacre pleinement au site et veut plutôt confier la base à un intervenant extérieur aux frais de l’association. C’est d’ailleurs pour cela qu’elle a fait appel à M. Prunelle…

J’explique mon projet. Un intranet maison, développé from scratch, une BDD relationnelle. Le tout fait à la main. J’avais déjà préparé un schéma relationnel que je lui montre.

« Ta base m’a l’air bien, relationnelle, tout bien comme il faut, c’est du bon travail. Par contre, je ne suis pas trop d’accord avec ta solution pour l’hébergement de la base de données, Maria DB… Je connais de nom mais ce n’est pas très utilisé dans le domaine professionnel… »

Il sort son cahier. Puis son stylo. Je le remarque alors… Un stylo rose fluo, avec le fameux logo de WINDEV dessus. Gulp. Je sais ce qui m’attend.

M. Prunelle me demande alors d’aller voir sur une page cachée d’un site web sur lequel il avait récemment travaillé. Il m’épelle l’adresse, quelque chose du genre « xalex-xpert.com/xalex_expert ».
S’affiche alors une vieille interface de connexion sans TLS, et je reconnais rapidement WEBDEV, de la même boîte. Je fais la moue. J’explique alors que je ne souhaite travailler qu’avec des logiciels libres, par éthique. Un sourire en coin s’affiche sur le visage de M. Prunelle :

« Ha ha ha, moi aussi, quand j’avais ton âge, j’étais un rebelle et je votais à gauche ! Mais aujourd’hui sur le marché du travail, dans un contexte professionnel de l’industrie informatique, jamais je ne me permettrais de présenter une verrue de Linux chez un client ! »

Hein ? L’industrie professionnelle de l’informatique ? Le marché du travail ? Qui a parlé de Linux ? Une verrue ?
La rébellion gauchiste ? Ce n’est pas un #MercrediFiction ni une exagération. C’est mot pour mot ce qu’il m’a dit. Je suis resté bouche bée pendant quelques secondes avant de passer à l’offensive en défendant mes arguments.

Et là, tout de suite, la grosse condescendance. En puissance. Limite, s’il m’avait versé un coulis de caca sur la tête, ça aurait été plus respectueux.

« Non mais de toute façon voilà, c’est comme ça qu’on débute, on fait tous des erreurs, on progresse ensuite, moi j’en ai vu, c’est pas le premier, je sais comment ça se passe »

Et alors évidemment Mme Nougat s’incruste et en rajoute une couche…

« Moi je pense qu’on a la chance d’avoir un professionnel parmi nous, M. Prunelle sait ce qu’il faut faire. Quand on est jeune, on ne connaît pas le marché du travail, on ne sait pas comment bien faire les choses pour répondre aux demandes du client, c’est normal »

(Allez-y, pissez-moi dessus encore, j’aime ça.) Mais avant que je ne me fasse totalement recaler, M. Touron et Mme Caramel interviennent au moment opportun et insistent pour me laisser une chance. Ouf, c’est sauvé. Par contre, du coup, inutile de compter sur lui pour maintenir ma « verrue de Linux ». Plus qu’à me débrouiller tout seul.

Résultat, les deux solutions seront proposées au conseil d’administration et c’est le conseil qui tranchera. J’ai intérêt à bien faire le boulot.

La veille technologique, ou comment j’ai changé d’avis

Ok, j’ai donc 15 jours pour réaliser une solution convaincante à partir de rien, migrer la solution actuelle vers la mienne et enfin former les nouveaux utilisateurs… Bon, j’ai des bouts de code de prêts pour ça, je suis assez expérimenté en PHP pour me débrouiller comme un grand. Mais 15 jours…

État des lieux

Tout d’abord, le lendemain de la réunion, M. Calisson (mainteneur octogénaire de la BDD) s’est présenté à moi. Il a fait l’effort de se déplacer dans les locaux pour me proposer personnellement son aide.
Face à une telle bienveillance, je ne pouvais refuser. Il m’a donné une documentation utilisateur d’une vingtaine de pages (datant de quelques années), très détaillée, qui m’a beaucoup appris. Il a ensuite pris le temps de m’expliquer chaque détail flou de la base actuelle et décrit les attentes particulières de Mme Nougat, qui attend d’être convaincue par ma solution.

Il n’était pas obligé de faire tout ça et je lui en suis grandement reconnaissant. Avant de le rencontrer, je pensais que ça allait être un esprit conservateur qui considère que sa solution (une table, 35 champs, rappelons-le) est la meilleure de toutes… et je me suis bien trompé. Comme quoi, le code ne fait pas le développeur…

À l’aide, Mastodon !

Dans le doute, je fais appel au réseau des réseaux. Et dans la panade, je fais appel au Fediverse.

Appel à l’aide sur Mastodon…Voyez tous les conseils reçus suite à ma demande !

 

Amis, camarades, connaissances, merci à vous. Vous avez été d’un précieux soutien dans cette situation difficile, vous m’avez aiguillé quand M. Prunelle m’avait lâché. Je savais que je pouvais compter sur vous ! Et j’ai attentivement écouté vos conseils.

Alors que choisir ?

Je peux dire beaucoup de mal (à tort et à raison) de mes professeurs de BTS SIO, mais c’est l’un d’eux qui m’a conseillé Galette en premier (en l’occurrence, ce professeur revendique des valeurs libristes mais enseigne WinDev et Win’Design aux élèves, ironiquement. Il enseigne Merise aussi, en 2018. Mais passons !)

Galette est un CMS libre de gestion d’adhérents pour les associations, inscrit sur Framalibre, l’annuaire contributif où j’aurais dû chercher en premier. Le logiciel a été créé en 2004 et est toujours maintenu à l’heure actuelle via des mises à jour régulières. Il est utilisé par des dizaines d’associations et reste un choix à considérer pour un déploiement rapide et efficace.

La Fediverse m’ayant conseillé (entre autres) Galette, j’ai décidé de m’y intéresser de plus près. Je connaissais déjà Galette (de nom seulement) avant que mon professeur m’en parle, mais tout écrire de soi-même avait l’air tellement plus amusant…

Et la solution avait l’air vraiment sympa. Il m’a fallu quelques jours pour m’assurer qu’elle collait bien au cahier des charges de Mme Nougat, mais tout avait l’air d’aller comme il faut. Et comme je n’ai plus le temps, il vaut mieux choisir cette option plutôt que de partir de zéro et rendre un travail insatisfaisant ou incomplet.

Partons donc pour Galette !

Galette

Abordons un peu l’aspect technique. La formation WordPress et quelques autres tâches ayant un peu débordé sur le planning, il me reste 10 jours pour déployer la solution et former les utilisateurs.

Le cahier des charges

Je rencontre un problème. Le cahier des charges n’est pas respecté sur un point : les statistiques. L’asso a besoin de stats assez précises pour la comptabilité et Galette ne fournit que deux ou trois pauvres camemberts. Galette tournant sous PHP, je prends la décision d’écrire un plugin.

Le plugin

C’est ce qui va prendre le plus de temps. Je travaille dans un environnement avec lequel je ne suis pas familier du tout, même si c’est du PHP, car je n’ai jamais touché à des frameworks PHP ni utilisé une API conçue pour des plugins. Ma première rencontre avec Zend Framework se passe… mal. Très mal, au point où j’interroge directement la base de données avec des requêtes en dur pour faire le boulot.
J’aurais aimé apprendre comment m’en servir, mais « je n’ai pas le temps ». Bon, j’ai moins d’excuses pour le switch à 90 cases avec des requêtes SQL et les 80 lignes de HTML dans un string… Mais chut…

Blague à part, je commence à être vraiment à la bourre. Plus que quelques jours de stage déjà, et c’est fini. Je me débrouille comme je peux pour coder quelque chose qui fonctionne. Qui a parlé de maintenabilité ?
Le prochain qui passera derrière moi sera probablement un stagiaire de BTS SIO, ça lui fera les pieds 🙂 (Il va me retrouver et me tuer pour avoir écrit ça, et je ferai moins le malin quand je tomberai sur un cas similaire. Bon au moins, j’ai mis plein de commentaires)

La demande de dernière minute

J’ai présenté le plugin de stats à Mme Nougat et il a fallu s’adapter à une demande de dernière minute. Totalement justifiée cela dit, ça faciliterait grandement la comptabilité. Il s’agit encore de stats.
J’applique des quickfixes sur le code dégueulasse que j’ai pondu juste avant. Il me reste trois jours. (Comment ça, ce n’est pas une excuse ? Au moins ça fonctionne !)

Bon allez, on plie ça vite fait et on passe à l’importation, qui n’est même pas commencée !

Préparation pour la migration

Un peu plus de technique.
La base de données est sous forme de fichier. MDB (Access), format propriétaire. Elle pèse 8.5 Mo. J’ai des frissons dans le dos. J’utilise le paquet mdb-tools pour convertir la structure et les données en requêtes SQL et je crée une nouvelle DB en local (MariaDB) et j’importe le tout.
Vive le libre.

Voilà la table à 35 champs… Ma première tâche va être de séparer les entrées des couples (M. et Mme) qui ont été enregistrés en une seule entrée.
Sur le coup, LibreOffice Calc est mon ami. J’importe tous les enregistrements où Sexe=« M. et Mme » et je les sépare à coups de Chercher/Remplacer. Une fois le boulot fini, j’importe tous les autres adhérents enregistrés dans la base jusque là sur le tableur, c’est plus facile que sur Workbench. Et nous y voilà, un total de 1275 lignes.

La grande migration

Allez, c’est parti. Je saisis 1275 adhérents à la main, depuis l’interface de Galette.

Bien sûr que non. Vous croyez vraiment que j’allais faire ça manuellement ?
Je me remémore ce que disait l’un de mes professeurs de BTS SIO :

« Un développeur, c’est un branleur. Une quiche molle. Alors à un m’eng donné, il faut savoir optimiser son traitemeng ou on va se retrouver avec une KYRIELLE de travail à faire. »

Il reste 2 jours. Comptant un jour de formation et d’installation du logiciel, j’ai 24 heures pour réaliser la migration. Admettons que je prenne trois minutes par entrée (adhérent + contribution). (1275 x 3) / 60= 63h45 de travail. C’est hors limites !

La seule solution est donc d’automatiser le tout. Mais il ne s’agit pas d’un simple INSERT INTO dans une table, hélas. Galette utilise un système de champs dynamiques qui permet d’avoir des champs personnalisés par l’association. Il les gère d’ailleurs assez mal : lorsqu’on supprime un adhérent ou une contribution, les champs dynamiques associés ne se suppriment pas avec. Encore un bug à signaler, tiens. Mais passons.

Formatage des données

Je commence par ajouter un adhérent et une cotisation annuelle pour ce dernier et j’identifie dans la BDD les tables mises à jour. Il y en a trois : galette_adherents, galette_cotisations et galette_dynamic_fields.

Ensuite, ça reste quand même assez trivial. J’identifie à quoi correspondent les champs dans les tables et je prépare mes inputs selon mes besoins. Je n’oublie pas de m’adapter au logiciel. Exemple, Galette interdit les adresses mail dupliquées dans la BDD. Je supprime tous les duplicatas depuis LibreOffice avant de commencer quoi que ce soit. Puis vient le plus
pénible. Le formatage des inputs. LibreOffice est pratique pour ça, mais je préfère tellement Vim qui s’avère bien plus efficace quand on a l’habitude du logiciel.

Vérification des données

Je vérifie encore mes inputs. Les erreurs les plus courantes :
– Doubles espaces (un coup de regex et c’est fini)
– Accents dans les adresses mail
– Virgules à la place de points un peu partout
– Formatage pas toujours standardisé du numéro de téléphone… J’étale le champ adresse, unique jusque là, sur deux lignes. C’est long et pénible, un bon travail de stagiaire. Par superstition, j’enlève les guillemets placés inutilement dans les adresses physiques.
– Au passage, je découvre des adresses Yahoo, AOL, Cegetel, Alice, Wanadoo, Neuf et même quelques .gouv.*.
Ça fait un peu peur.

– Le champ galette_adherents.login_adh contient des caractères aléatoires servant d’identifiant pour l’adhérent. L’asso n’utilise pas cette fonctionnalité, mais pour ne pas contrarier Galette, je vais insérer des caractères aléatoires dedans : SUBSTRING(MD5(RAND()) FROM 1 FOR 15)
Ce n’est pas censé être un identifiant hexadécimal, mais ce n’est pas grave.

Enfin, je prends soin de distinguer les champs vides des champs NULL. On peut maudire SQL pour ça, je suppose.

Je termine la migration le 28 juin au soir, soit 24 heures avant la fin du stage. La journée de demain commencera à 09h00.

Déploiement de la solution

Ah oui, à ne pas oublier. Avant de former les utilisateurs, il faut d’abord déployer Galette sur leur réseau (en intranet). Je choisis l’utilisation de XAMPP sur l’un de leurs postes Windows.
Je configure le serveur DHCP de leur box pour que l’IP du poste en question soit fixe. Ma méthode est probablement discutable mais je ne vois pas d’autre option possible, surtout qu’héberger Galette sur le “cloud” ne leur aurait pas servi car ils ne travaillent sur la BDD qu’en local. Enfin, je déploie Galette, j’exporte la BDD depuis mon poste et je l’importe sur le leur. Je transfère aussi les fichiers de mon plugin. Évidemment, l’opération ne s’est pas déroulée sans accroc – surtout sur des postes Windows. J’ai perdu une à deux heures dans la migration.

L’imprévu fatidique

En formant l’une des deux bénévoles, on s’aperçoit ensemble que de nombreuses données de l’ancienne base sont erronées depuis quelques mois (suite à une maintenance de M. Calisson) et que ces erreurs ont été (évidemment) reportées sur la nouvelle base. Nous arrivons à une conclusion terrifiante : il faut repasser manuellement derrière chacune des 1275 adhésions à partir des bordereaux d’adhésion, conservés par précaution. Cette opération nous a coûté 4 à 5 heures. La bénévole a eu la gentillesse de m’apporter une pizza pour que je puisse finir mon travail d’esclave le plus vite possible sans sortir du bureau.

fig.1 Travailler en équipe pour résoudre un problème. La théorie.

fig.2 Travailler en équipe pour résoudre un problème. La réalité.

La formation

Vous imaginez qu’il ne me reste plus beaucoup de temps pour former les utilisateurs. La première bénévole était assez familière avec l’informatique, mais la deuxième ne l’était pas du tout – au contraire, elle détestait l’informatique. J’ai dû abréger beaucoup de points que je préciserai dans une documentation utilisateur à rédiger après mon départ. Ce fut très laborieux, mais l’essentiel a été vu. Il est 18h00, mon stage se termine et ma mission avec. Je remercie M. Touron qui m’offre une gratification de stage de 150 euros.

Le suivi

Le libre, c’est bien, mais quand il est encadré et suivi, c’est mieux. Le site web de l’association est hébergé par la Ligue de l’Enseignement, ce qui leur permet de profiter de tarifs très préférentiels. J’ai pu rencontrer l’un de leurs membres avec M. Touron dans le cadre de la migration du site de Joomla ! vers WordPress.
Ce monsieur, aux antipodes de M. Prunelle, était clairement fâché de mon choix de WordPress, en disant que les webmasters oublient souvent de mettre à jour le CMS et qu’il est généralement considéré comme une usine à gaz trouée par des failles de sécurité. Je ne peux qu’être d’accord avec lui sur ces points-là, malheureusement.
M. Touron aborde finalement la question de la gestion de la base de données (Galette, donc) et ce monsieur semble non seulement connaître le CMS, mais exprime sa satisfaction quant au choix d’un logiciel libre. Quand je lui ai dit que ce choix était par éthique, nous sommes rapidement partis dans une discussion libriste mentionnant La Quadrature du Net, l’April, Framasoft, les RMLL 2018 qui approchent à grands pas…

C’était ma première discussion avec un libriste dans la vraie vie et elle ne pouvait pas tomber à un meilleur timing. La personne idéale pour reprendre le projet était déjà trouvée, je peux dormir sur mes deux oreilles !

Ressenti personnel

Cet article est déjà beaucoup trop long, mais je tiens à exprimer mon ressenti sur ce stage. La rencontre avec M. Prunelle fut très parlante pour moi : j’ai réalisé à quel point les esprits peuvent être conservateurs dans le domaine de l’informatique.

Être libriste, c’est avant tout avoir des convictions que l’on défend au quotidien. Je ne m’attendais pas à entrer en conflit d’éthique avec qui que ce soit pendant ce stage, tout comme je ne m’attendais pas à rencontrer des personnes défendant les mêmes valeurs que moi. C’est aussi inciter les utilisateurs moins familiers vis-à-vis de l’outil informatique à découvrir les outils libres, faire face à leurs réticences dues à la peur de l’inconnu, à leur habitude d’utiliser des outils propriétaires et parfois, à leur manque de confiance en votre personne au prétexte de votre jeune âge et de votre supposé manque d’expérience.

Ce stage fut un véritable combat au nom de l’éthique et de mes propres convictions, mais il fut aussi porteur d’espoir : les libristes sont plus nombreux que je ne le pensais, et mon déplacement à mon tout premier meeting (les RMLL 2018) va probablement m’aider à mieux connaître (et sympathiser !) avec les différentes communautés et me permettre de définir plus précisément mon parcours professionnel en vue, dans l’idéal, d’un métier dans ce domaine.

Vive le libre !

@Neil@shelter.moe




Des routes et des ponts (3), de quoi est fait un logiciel

Après l’introduction du livre Des routes et des ponts de Nadia Eghbal (si vous avez raté le début…) que le groupe Framalang vous traduit au fil des semaines, voici un aperçu tout simple des composants de base d’un logiciel.

Nos lecteurs les plus au courant n’y trouveront rien qu’ils ne sachent déjà, mais l’intérêt de cette présentation c’est justement qu’elle rend abordables et compréhensibles au grand public des objets techniques qui peuvent s’avérer très complexes à comprendre (…et maîtriser !). On peut dire que la démarche choisie ici, pragmatique et imagée, ne manque pas de pédagogie.
Merci à nos lecteurs soucieux des valeurs du libre de noter que l’auteur n’introduit les notions que progressivement : c’est seulement dans quelques chapitres qu’elle établira clairement une distinction claire qui nous est chère.

Vous souhaitez participer à la traduction hebdomadaire ? Rejoignez Framalang ou rendez-vous sur un pad dont l’adresse sera donnée sur Framasphère chaque mardi à 19h… mais si vous passez après vous êtes les bienvenu.e.s aussi !

De quoi sont faits les logiciels

par Nadia Eghbal

Traduction framalang : Luc, woof, Diane, xi, serici, Lumibd, goofy, alien spoon, flo, salade, AFS, lyn., anthony

Tous les sites web ou les applications mobiles que nous utilisons, même les plus simples, sont constitués de multiples composants plus petits, tout comme un immeuble est fait de briques et de ciment.

Imaginez par exemple que vous désiriez poster une photo sur Facebook. Vous ouvrez votre appli mobile Facebook, ce qui déclenche le logiciel de Facebook pour vous afficher votre fil d’actualités.

Vous téléchargez une photo depuis votre téléphone, ajoutez un commentaire, puis vous cliquez sur « Envoyer ». Une autre partie du logiciel de Facebook, en charge du stockage des données, se souvient de votre identité et poste la photo sur votre profil. Finalement, une troisième partie de ce logiciel prend le message que vous avez saisi sur votre téléphone et le montre à tous vos amis à travers le monde.

Bien que ces opérations aient lieu sur Facebook, en réalité, ce n’est pas Facebook qui a développé toutes les briques nécessaires pour vous permettre de publier sur son application. Ses développeurs ont plutôt utilisé du code libre, public, mis à disposition de tous sur Internet par des bénévoles. Facebook ne publie pas la liste des projets qu’ils utilisent, mais une de ses filiales, Instagram, le fait et remercie certains de ces projets sur sa page d’accueil et dans son application mobile

Utiliser du code public est plus efficace pour des entreprises comme Facebook ou Instagram que de développer à nouveau tous les composants par elles-mêmes. Développer un logiciel est comparable à la construction d’un immeuble. Une entreprise du bâtiment ne produit pas ses marteaux et ses perceuses, et n’ira pas non plus chercher du bois pour découper les troncs en planches.

Elle préférera les acheter à un fournisseur et se fournir en bois auprès d’une scierie pour finir le travail plus rapidement.

Grâce aux licences permissives, les sociétés telles que Facebook ou Instagram ne sont pas obligées de payer pour ce code, mais sont libres d’en profiter grassement. Ce n’est pas différent d’une entreprise de transport (Instagram) qui utilise les infrastructures routières publiques (code public) pour acheminer ses produits à des fins commerciales (application Instagram).

Mike Krieger, un des co-fondateurs d’Instagram, a insisté sur ce point en 2013 et encouragé d’autres entrepreneurs à :

emprunter plutôt que construire à chaque fois que c’est possible. Il existe des centaines d’excellents outils qui peuvent vous faire gagner du temps et vous permettre de véritablement vous concentrer sur le développement de votre produit. (source)

Voici quelques-uns des outils utilisés par une entreprise de logiciels :

Frameworks (environnements de développement)

Les framewoks offrent une base, une sorte d’échafaudage, une structure. Imaginez cela comme un schéma pour toute une application. Comme un plan, un framework définit la manière dont l’application se comportera sur mobile, ou comment ses données seront sauvegardées dans une base de données. Par exemple Rails et Django sont des frameworks.

rubyrails
Ruby on Rails, RefineryCMS & Heroku, image par Erin Khoo (CC-BY 2.0)

Langages

Les langages de programmation constituent l’épine dorsale de la communication des logiciels, comme la langue anglaise (NdT : aux USA bien sûr) qu’emploient les ouvriers du bâtiment sur un chantier pour se comprendre. Les langages de programmation permettent aux divers composants du logiciel d’agir et de communiquer entre eux. Si par exemple vous créez un compte sur un site internet et que vous cliquez sur « S’enregistrer », cette application peut utiliser des langages comme le JavaScript ou le Ruby pour sauvegarder vos informations dans une base de données.

Parmi les langages de programmation les plus populaires on peut mentionner le Python, le JavaScript et le C.

Bibliothèques

Les bibliothèques sont des fonctions pré-fabriqués qui accélèrent l’écriture du code d’un logiciel, tout comme une entreprise du bâtiment achète des fenêtres préfabriquées au lieu de les assembler à partir des composants de base. Par exemple, au lieu de développer leur propre système d’identification pour les utilisateurs de leur application, les développeurs et développeuses peuvent utiliser une bibliothèque appelée OAuth. Au lieu d’écrire leur propre code pour visualiser des données sur une page web, ils ou elles peuvent utiliser une bibliothèque appelée d3.

Bases de données

Les bases de données stockent des informations (profils d’utilisateurs, adresses électroniques ou codes de cartes bancaires par exemple) qui peuvent être utilisées par l’application. À chaque fois qu’une application a besoin de se souvenir d’une information qui vous concerne, l’application la stocke dans la base de données. Parmi les systèmes de gestion de bases de données (SGBD) les plus populaires on trouve notamment MySQL et PostgreSQL.

database
Database par gnizr (CC BY 2.0)

Serveurs web et d’applications

Ces serveurs gèrent certaines requêtes envoyées par les utilisateurs sur Internet : on peut les voir comme des centrales téléphoniques qui répartissent les appels. Par exemple, si vous saisissez une URL dans la barre d’adresse de votre navigateur, un serveur web vous répondra en vous envoyant la page concernée. Si vous envoyez un message à un ami sur Facebook, le message sera d’abord envoyé à un serveur d’applications qui déterminera qui vous essayez de contacter puis transmettra votre message au compte de votre ami.

Parmi les serveurs web très répandus, citons Apache et Nginx.

Certains de ces outils, comme les serveurs et les bases de données, sont coûteux, surtout à l’échelle d’une entreprise, ce qui les rend plus faciles à monétiser. Par exemple, Heroku, une plate-forme sur le cloud (sur un serveur distant) qui fournit des solutions d’hébergement et de bases de données, propose une offre de base gratuite, mais il faut payer pour avoir accès à plus de données ou de bande passante. De grands sites reposent sur Heroku comme ceux de Toyota ou de Macy, et l’entreprise a été rachetée en 2010 par Salesforce.com pour 212 millions de dollars.

Il est plus difficile de faire payer d’autres types d’outils de développement, tel que les frameworks, de nombreuses bibliothèques et langages de programmation, qui sont souvent créés et maintenus par des bénévoles.

Ce type d’outils ressemble plus à des ressources qu’à des services qui peuvent être activés ou désactivés : les rendre payants limiterait fortement leur adoption. C’est pourquoi n’importe qui, que ce soit une entreprise milliardaire ou un adolescent apprenti développeur, peut utiliser gratuitement ces composants pour créer ses propres logiciels.

Par exemple, selon la page d’accueil d’Instagram, l’une des bibliothèques utilisées par l’entreprise est Appirater. Il s’agit d’une bibliothèque qui facilite les fonctions de rappels automatiques pour l’évaluation d’une application, à destination des utilisateurs d’iPhone. Elle a été créée en 2009 par Arash Payan, un développeur indépendant basé à Los Angeles. Le projet n’apporte aucun revenu à Payan.

C’est comme si des scieries, des centrales à béton et des magasins de matériel donnaient leurs matériaux de base à une entreprise du bâtiment, puis continuaient à approvisionner cette entreprise.