Note: ce billet a été écrit au printemps, mais n'a jamais franchi le cap de la relecture car il ne me satisfaisait pas. Comme il a inspiré plusieurs autres divagations, je finis par le mettre en ligne, mais ça reste un brouillon, une maquette en cours, que je continuerai probablement à décliner quelque temps.

Plongée narcissico-temporelle, accrochez vos vaccins

J'ai eu la chance de vivre déjà deux périodes de démocratisation de l'informatique.

La première, au début des années 80, avec l'arrivée de la micro. Pendant quelques années, tous les ordinateurs étaient livrés avec ce qu'il fallait pour apprendre la programmation: un langage et des manuels pour apprendre. Sans doute parce qu'au vu du faible nombre d'applications alors disponibles, il fallait laisser les utilisateurs créer les leurs. Ou peut-être que pour les pionniers de cette époque, il était évident que la première fonction d'un ordinateur était d'être une plate-forme sur laquelle chacun et chacune pouvait créer ce dont on avait besoin/envie. A moins que ce fût pour des raisons marketing: en ce temps là, les adultes n'étaient pas encore des adulescents, pour convaincre de l'utilité d'un ordinateur, apprendre l'informatique était un argument qui marchait mieux que toute la famille pourra jouer à Mario Kart. Mais au final peu importent les raisons, on avait nos drôles de machines, on avait Hebdogiciel et on passait notre temps libre à découvrir, bidouiller, coder...

Puis peu à peu les applications disponibles sont devenues plus nombreuses, les langages de programmation plus complexes, moins accessibles. Pour rester au même niveau que les jeux commerciaux, il fallait se mettre à l'assembleur, pour les applications de bureau au C et découvrir les bibliothèques de composants graphiques. Parallèlement, les langages et environnement de programmation ont disparu des logiciels livrés par défaut avec la machine, sont devenus des trucs payants, et la programmation est redevenue une affaire de spécialistes. Fin pour moi du premier âge d'or.

Au mitan des années 90 est apparu le web, et avec lui un nouvel environnement, relativement accessible et simple à utiliser pour à nouveau créer. HTML est un langage fondamentalement ouvert, pour l'apprendre il suffisait de consulter le code source des pages, auquel tout le monde pouvait accéder. Pour coder, un simple éditeur de texte suffisait. Les différents langages de la pile étant interprétés, les résultats étaient immédiatement visibles, sans nécessiter de passer par une compilation. HTML était très simple à apprendre, ne nécessitait pratiquement aucune culture informatique. Rapidement des hébergeurs ont fourni à faible coût l'architecture permettant à chacun et chacune de créer son site perso, pas forcément de façon très heureuse, mais avec énormément d'enthousiasme. Côté serveur un langage de script simpliste est apparu quelques années plus tard, PHP. Il ne nécessitait lui aussi qu'un investissement minimal. Un éditeur de texte, un client FTP, et on pouvait commencer à rendre dynamiques nos sites. La documentation bien faite ― elle reste encore à ce jour une des principales forces de PHP ― et rapidement traduite dans de nombreuses langues a contribué au succès du langage. Nombre d'internautes sans aucune notion de programmation ont ainsi pu créer des sites en apprenant peu à peu HTML, JavaScript et PHP. C'est ainsi par exemple qu'est né SPIP.

Et à nouveau, au fil des années on a assisté à une professionalisation, on pourrait dire que le Web s'est refermé. Même si les technologies restaient les mêmes, le ticket d'entrée était de plus en plus cher. Qui veut avoir un site aujourd'hui se tourne vers une solution toute faite hébergée plutôt que de développer ou d'installer la sienne. Avec le Web dit "2.0", on crée des contenus, mais on ne maîtrise pas la fabrication des outils servant à les créer, on utilise une plate-forme devenue une boîte noire.

Bidouilleurs, saison 3

J'ai l'impression d'assister aujourd'hui à une troisième vague de démocratisation, via JavaScript et des outils comme Greasemonkey, Firebug, Ubiquity, Bespin, Jetpack. A nouveau, l'atelier est à la disposition de tous, fourni gratuitement en standard avec ce nouvel OS qu'est le navigateur. Une combinaison de touches, et on crée ses propres commandes, on manipule comme on le souhaite le Web, les données... Petit à petit, les outils se mettent en place pour qu'une nouvelle génération s'ouvre à la bidouille informatique. Mais cette fois-ci, l'enjeu me semble encore plus important. Compte tenu de la place qu'est en train de prendre le Web, avoir des rudiments de programmation me semble aujourd'hui une condition indispensable pour permettre aux individus de s'émanciper, de devenir acteurs et non simples consommateurs de leur vie.

Tous et toutes bidouilleurs !

Personne ne niera l'importance de savoir lire et écrire : c'est une condition indispensable pour comprendre le monde dans lequel on vit et pouvoir agir dessus, pour s'émanciper, devenir autonome et libre. Mais lire et écrire doivent être pris dans un sens plus large. Il ne s'agit pas que de caractères, mais de savoir déchiffrer le monde et le modeler. Comprendre et créer. Lire et écrire des livres, mais aussi des machines. Comprendre le fonctionnement d'un moteur et savoir en créer un, ou au minimum être capable de le bricoler, réparer, améliorer. Et c'est valable dans tous les domaines. Il en va également de notre rapport à nos outils et aux machines qui forment notre entourage : pour ne pas en devenir esclave, pour ne pas être aliénés, nous devons apprendre à les comprendre et savoir les bricoler. C'est valable pour une voiture comme pour un ordinateur. Il est essentiel de comprendre comment fonctionne un ordinateur et un logiciel, de savoir lire et comprendre sa recette (dans le cadre d'un logiciel, son code source), d'être au minimum capable de le bricoler, d'en corriger les erreurs, de l'améliorer. Nous pouvons et pourront à l'avenir de moins en moins nous passer de l'informatique et du Web. Il faut donc que chacun et chacune apprenne la programmation. Ou accepte de devenir esclave de la machine et de ceux qui la maîtriseront.

Dans ses présentations sur l'Open Web, Mark Surman dit souvent que tous les usagers doivent devenir des hackers. Il ne faut bien sûr par entendre ici hacker comme expert en informatique, mais plutôt comme bricoleur, bidouilleur. Pour bâtir un Web Libre, il faut non seulement développer et promouvoir des technologies libres et ouvertes, mais il faut aussi éduquer les usagers[1], les aider à ne pas être de simples consommateurs passifs mais à devenir acteurs de leur vie en ligne, les aider à devenir des bidouilleurs, des bricoleur du dimanche de Web. Heureusement, comme je le disais, les conditions permettant l'appropriation du Web par ses usagers commencent à être réunies, grâce notamment à l'éclosion de nouveaux outils.

Les outils à travers les âges

Les temps immémoriaux

D'après Aaron Boodman, un développeur du navigateur de Google, les trois quarts des extensions des plus populaires de Firefox servent à manipuler les données affichées, et non à ajouter de nouvelles fonctionnalités au navigateur. Ce qui tendrait à prouver que pouvoir manipuler à leur guise les données est un besoin fort des usagers. Or pour cela, nul besoin de créer une extension, ce qui reste complexe. Pour bidouiller des données, bien souvent de petits scripts s'exécutant dans le navigateur suffisent. Des solutions existent depuis longtemps, comme les bookmarklets, les scripts GreaseMonkey, ou Stylish pour la mise en forme. Ce sont des outils simples à prendre en main, un éditeur de texte suffit pour créer des scripts, mais ils manquent un peu de convivialité.

La révolution Firebug

Ensuite est né Firebug, et le Web n'a plus été le même. Firebug est un outil génial pour expérimenter, sans doute l'un des meilleurs. Car il inclut directement dans le navigateur des outils pour afficher la structure des pages, le HTML, les styles, le fonctionnement sous-jacent du réseau, étudier les scripts en en suivant le déroulé pas à pas. C'est l'outil indispensable pour étudier le Web, pour mieux le comprendre. Mieux, Firebug comprend, toujours à l'intérieur du navigateur, tout ce qu'il faut pour expérimenter : un éditeur et une console. On n'a plus besoin d'aucun logiciel externe. On tape des commandes, on commence à rédiger des scripts dans l'éditeur, le résultat est visible immédiatement dans la page, en direct, pas besoin de compiler, redémarrer ou quoi que ça soit, la console affiche des messages d'information ou d'erreur... Oui, cet outil est génial et il est grand temps qu'il ne soit plus réservé aux développeurs, car pour moi Firebug a un formidable pouvoir pédagogique : il permet d'étudier, comprendre, expérimenter. Pour être parfait, il ne lui manque à vrai dire que la possibilité d'enregistrer les scripts que l'on crée, de les transformer en commandes intégrées au navigateur.

Les Mozlabs à la rescousse

Les Laboratoires Mozilla l'ont bien compris, qui ont marié GreaseMonkey et Firebug pour le meilleur et deux superbes enfants, Ubiquity et Jetpack. Avec l'aide du cousin Bespin, qui est en cours d'intégration aux deux précédents, on disposera nativement dans le navigateur de tous les outils pour bidouiller et le Web et la plate-forme, Firefox : un éditeur moderne, avec tous mes mécanismes d'assistance nécessaire (coloration syntaxique, auto-complétion, détection d'erreurs de syntaxe à la frappe, etc); une ligne de commande intuitive qui permettra littéralement de dialoguer avec Firefox, et dans sa langue natale (en terme d'accessibilité au plus grand nombre, c'est indispensable); et des bibliothèques de haut niveau qui permettront d'effectuer des tâches complexes en quelques instructions (allez voir comme Jetpack simplifie le développement).

Envoi

Ce ne sont bien sûr que des outils, mais des outils qui créent des possibles, qui abaissent chaque jour davantage la barrière à franchir pour oser commencer à bidouiller le Web. Bricoler la toile devient chaque jour plus simple, plus accessible. Maintenant que les outils sont là, il faut bien sûr toujours des mécanos pour continuer à les améliorer, mais il faut aussi davantage d'évangélistes, de pédagogues, pour expliquer que la bidouille n'est plus une affaire de spécialiste, qu'elle est à la portée de chaque internaute. C'est aussi comme cela que j'entends le projet Drumbeat : faisons ronfler les Djembés pour faire sortir la bidouille du ghetto geek.

L'enjeu, je le répète, est de permettre à chacun et chacune de s'émanciper, de ne plus être esclave des machines mais de devenir autonome, libre. Le Web Libre et sa bidouillabilité ne sont pas que des débats techniques réservés aux techniciens. Cela a avant tout à voir avec le rapport de l'homme à son environnement. Le Web Libre concerne quiconque s'intéresse à l'émancipation et à la liberté.

Oui je suis follement amoureux de ce navigateur et je vous soûle à chanter ses louanges à longueurs de billets kilométriques, mais franchement il le mérite. Je pousserai le compliment jusqu'à qualifier la MoFo de FSF du Web Libre. A vrai dire, il ne manque à la MoFo qu'un ou une évangéliste aussi sexy que RMS ;)

Réclame : je me suis intéressé à l'aspect plus technique de la bidouillabilité dans plusieurs récents billets, sur l'utilisation de Web Hooks pour bricoler des applications existantes, sur les perspectives ouvertes par le retour d'intérêt pour JavaScript sur le serveur, et dans un questionnement sur le choix d'un langage unique. Ces billets, et peut-être encore un ou deux en gestation, sont des déclinaisons pratiques d'icelui, et offrent peut-être des pistes de réflexion complémentaires.

Ailleurs : je parle beaucoup dans ce billet d'outils, voire de convivialité. Les outils conviviaux sont un élément de la pensée d'Ivan Illich. Certains aspects du présent monologue y font probablement écho. J'aimerais y revenir à l'occasion, mais vous invite à jeter un œil au concept. Vous pouvez pas exemple commencer par Ekopedia (reprise de l'article de Wikipedia sans certaines digressions) et lire Le web, outil convivial à tendance toxique d'Eric Mainville, ou le récent article Vive la bidouillabilité d'Adrien Saumier.

Notes

[1] le Web étant un bien public, j'ai décidé de privilégier désormais usager à utilisateur