Gravelle, Zisly

et les anarchistes naturiens contre la civilisation industrielle

Comme d’habitude, François Jarrige nous livre un ouvrage extraordinaire. L’analyse préalable au recueil de textes est évidemment la bienvenue pour ne pas discréditer préalablement leur contenu comme il est aujourd’hui l’habitude de le faire pour tout opposant au dogmes du monde « moderne », mais c’est surtout la qualité de leur choix qui est remarquable.

La science, le progrès, la croissance sont fortement interpellés par ces textes de plus d’un siècle et qui résonnent pourtant aujourd’hui comme une prémonition de bon sens. Ces textes sont à la fois lumineux et tragiques de l’aveuglement de notre « civilisation actuelle ». À lire absolument.

29. Images en ligne de commande : imagemagick

Rentrons dans le vif du sujet :

Conversion jpg vers pdf

Le problème est de convertir toutes les images jpg situées dans un unique répertoire en un seul pdf.

Deux étapes sont à réaliser :

ls *.jpg | xargs -I% convert % %.pdf 

où le ls crée une liste des fichiers, le « pipe » (|) envoie cette liste à la commande xargs. En effet, la commande convert ne dispose pas d’entrée standard et xargs utilise la commande passée sur son premier argument pour passer le fichier en entrée standard comme argument de la commande convert. Le drapeau -I de xarg, évite de passer tous les fichiers images en une fois à convert (comme de multiples arguments) pour faire le même fichier de sortie. Avec -I on récupère le nom de fichier dans % et on demande de réaliser la commande simple « convert fichier.jpg fichier.pdf » sur chaque fichier fournis par ls.

Puis, il faut créer l’unique pdf à partir des fichiers .jpg.pdf par :

pdftk *.pdf cat output merged.pdf && rm *.jpg.pdf

où, on récupère tous les fichiers d’extension .pdf et demande à pdftk de réaliser un « cat » (catenate), c’est-à-dire une concaténation, de ceux-ci dans le fichier donné en valeur d’argument de output, c’est-à-dire merged.pdf.

Finalement, si et seulement si (&&) le fichier merged.pdf est réalisé sans erreurs, on efface (rm : remove) les pdf de chaque page.


Mais il est apparu d’entrée un problème dont la solution se trouve dans un fichier de configuration d’Imagemagick. En effet, ce dernier refusait d’effectuer la conversion et renvoyait une erreur de « policy » peu compréhensible. Les recherches ont montré qu’il fallait autoriser Imagemagick à créer des pdf dans ce fichier :

/etc/ImageMagick-6/policy.xml

Les modifications se font évidemment en root. Se trouve dans ce fichier la ligne suivante :

<policy domain="coder" rights="none" pattern="PDF">

qu’il montre que le droit de faire des pdf n’est pas présent. Il faut donc la changer par :

<policy domain="coder" rights="read | write" pattern="PDF">

pour résoudre le problème.

Code is Education

Un éditorial de Véronique Bonnet, présidente de l’April, que je reproduit ici pour la grande clarté de son propos et suite à une discussion avec des collègues sur la plate-forme d’enseignement Moodle. Ce texte est en licence libre et je remercie non seulement son auteure, mais l’ensemble des membres de l’April de fournir des textes d’une aussi grande qualité sous de telles licences. Vous trouverez ici l’article original suivi d’un petit commentaire sur Moodle.

« Le monde d’après », qui fait sauter certains comme des cabris, dans la jubilation du « hors-sol », peine à dissimuler ses pilotis idéologiques. À la résultante historique la plus surdéterminée, on prétend refaire une virginité. Telle Vénus surgissant de l’écume des flots, la mythologie de l’abolition du « monde d’avant » multiplie les représentations chaotiques, purement chronologiques, de ce qui arrive. Parler de mondes successifs, comme de vagues successives de la pandémie, pour se référer aux irruptions successives des crises sanitaire, économique, existentielle, écologique, peut faire figure de pis-aller explicatif commode, mais ne doit pas faire disparaître dans les sables la logique des événements.

Dans le monde de l’éducation, l’informatique a été, eu égard au contexte, présentée comme une amie prodigieuse, capable de remédier aux impossibilités du présentiel par la magie soudaine et massive du distanciel. Cette formulation discontinuiste laisse entendre que toute solution logicielle est bonne à prendre. Que sont les John Van Neumann, les Alan Türing, les Ian Murdock, les Aaron Schwartz devenus, dans leur exigence d’une informatique de l’autonomie ? Richard Matthew Stallman, dans les textes de la philosophie GNU concernant l’école, a souligné l’importance de ne pas accoutumer les enfants à une informatique de la docilité, de la subordination, pour que les futurs adultes et citoyens soient confortés dans leur aspiration à comprendre. Restituons ici, par quelques chaînes de raisons, une ascendance pour l’opposer à une autre, pour remettre en perspective « l’informatique de l’après » et la situer par rapport aux idéaux ou aux intérêts de « l’informatique d’avant. »

Dans son article de janvier 2000 publié dans le Harvard Magazine intitulé Code is Law – On Liberty in Cyberspace : Le code fait loi – De la liberté dans le cyberespace, dans la traduction de Framalang https://framablog.org/2010/05/22/code-is-law-lessig/, le grand juriste Lawrence Lessig met en garde contre une l’opinion selon laquelle la loi ne pourrait émaner que d’un État. À l’ère du cyberespace, la loi peut aussi bien être la résultante du code qui, en l’organisant, « fait loi » :

« Nous sommes à l’âge du cyberespace. Il possède lui aussi son propre régulateur, qui lui aussi menace les libertés. Ce régulateur, c’est le code  : le logiciel et le matériel qui font du cyberespace ce qu’il est. Ce code, ou cette architecture, définit la manière dont nous vivons le cyberespace. Il détermine s’il est facile ou non de protéger sa vie privée, ou de censurer la parole. Il détermine si l’accès à l’information est global ou sectorisé. Il a un impact sur qui peut voir quoi, ou sur ce qui est surveillé. Lorsqu’on commence à comprendre la nature de ce code, on se rend compte que, d’une myriade de manières, le code du cyberespace régule. »

D’où sa crainte :

« Cette régulation est en train de changer. Le code du cyberespace aussi. Et à mesure que ce code change, il en va de même pour la nature du cyberespace. Le cyberespace est un lieu qui protège l’anonymat, la liberté d’expression et l’autonomie des individus, il est en train de devenir un lieu qui rend l’anonymat plus difficile, l’expression moins libre et fait de l’autonomie individuelle l’apanage des seuls experts. Mon objectif, dans ce court article, est de faire comprendre cette régulation, et de montrer en quoi elle est en train de changer. Car si nous ne comprenons pas en quoi le cyberespace peut intégrer, ou supplanter, certaines valeurs de nos traditions constitutionnelles, nous perdrons le contrôle de ces valeurs. La loi du cyberespace – le code – les supplantera. »

En effet, alors que dans l’architecture initiale du cyberespace, les protocoles TCP/IP, outils de l’échange de données entre réseaux interconnectés, rendant difficile l’identification de ceux qui échangent et de ce qu’ils échangent, permettent le respect de la vie privée et la liberté d’expression, il se trouve que « le code n’est pas figé », et que cette « architecture peut changer. »

Rappelant que, techniquement, si le code fait la loi, il pourrait faire intervenir des nuances, Lawrence Lessig aperçoit le risque d’une mainmise progressive du code sur les utilisateurs, si des intérêts particuliers tendant vers le profilage des individus prennent le pas sur les idéaux des droits de l’être humain :

« La technologie pourrait permettre de certifier certains faits vous concernant, tout en gardant d’autres faits confidentiels. La technologie dans le cyberespace pourrait fonctionner selon une logique de «  moindre révélation  », ce qui n’est pas possible dans la réalité. Là encore, tout dépendrait de la manière dont elle a été conçue. Mais il n’est pas dit que les choses iront dans ce sens.[…] Il existe d’autres architectures en développement, de type «  une seule carte pour tout  ». Dans la logique de cette architecture, plus il y a d’informations, mieux c’est. Rien ne permet aux individus de faire le choix du moins. La différence entre ces deux conceptions est que l’une garantit la vie privée, alors que l’autre non. La première inscrit le respect de la vie privée au cœur de l’architecture d’identification, en laissant un choix clair à l’utilisateur sur ce qu’il veut révéler  ; la seconde néglige cette valeur. »

On le voit, l’auteur montre que le cyberespace est à la croisée des chemins. De deux choses l’une. Soit les dispositifs de régulation du cyberespace essaient de faire la part des choses, c’est-à-dire d’éviter que l’absence de régulation soit préjudiciable et porte atteinte au individus tout en préservant dans la mesure du possible la vie privée.
Soit ces dispositifs, intrusifs, tentent de faire de l’utilisateur, purement et simplement, un document, en croisant toutes ses métadonnées pour le caractériser intégralement, le profiler.

(Pour le dire dans le contexte qui est le nôtre, en 2020, nous en sommes à essayer d’éviter que sur les réseaux sociaux la liberté d’expression en vienne à permettre l’expression ouverte du racisme, sexisme. Mais au risque, considéré par certains comme une opportunité, de traiter chaque acteur du cyberespace comme ayant à rendre public tout ce qui le concerne, sans possibilité de garder un dimension privée.)

Quoi qu’il en soit, Lessig met, dès 2000, en évidence la montée en puissance insensible du pouvoir de la technologie, nommé par le philosophe Michel Foucault soft power, celui qui s’avance masqué et peut se manifester dans des logiciels apparemment anodins, qu’on soupçonnera d’autant moins qu’ils rendent service sur le court terme :

« La question n’est donc pas de savoir qui décidera de la manière dont le cyberespace est régulé  : ce seront les codeurs. La seule question est de savoir si nous aurons collectivement un rôle dans leur choix – et donc dans la manière dont ces valeurs sont garanties – ou si nous laisserons aux codeurs le soin de choisir nos valeurs à notre place. »

Quatorze ans plus tard un autre juriste, très impliqué dans le registre de la documentation, Lionel Maurel, alias Calimaq, dans un article intitulé : Comment « Code Is Law » s’est renversé en « Law Is Code », https://scinfolex.com/2014/01/24/comment-code-is-law-sest-renverse-en-la…, montre que le changement d’architecture pressenti par Lessig pouvait « machiniser la loi », la rendant insoupçonnable, non interrogeable et implacable :

« parce que le Code d’Internet a été construit sur des bases antagonistes avec celles de la propriété intellectuelle, l’axiome de Lessig tend aujourd’hui à se renverser : « Code Is Law » devient de plus en plus « Law Is Code ». Les principes du droit d’auteur peuvent en effet être transcrits en langage machine et interprétés automatiquement par des algorithmes. C’est la logique depuis longtemps à l’œuvre derrière les DRM (Digital Rights Management), première tentative technique d’agir sur le Code pour le mettre en conformité avec la loi. Mais au-delà des DRM, le « Droit de Regard de la Machine » déborde aujourd’hui les simples verrous numériques pour déboucher sur des systèmes de surveillance et de contrôle à grande échelle. ContentID, le Robocopyright de YouTube qui compare constamment les vidéos à des empreintes fournies par les titulaires de droits, donne par exemple une image de ce que peut devenir une application mécanisée du droit d’auteur déployée au niveau de l’une des plus grandes plateformes au monde. Faite à l’origine pour être interprétée et appliquée par des humains, la loi aujourd’hui se machinise ; elle peut entrer « dans le code » et ce mouvement provoque des conséquences susceptibles d’altérer en profondeur l’équilibre des libertés en ligne. »

Toutes proportions gardées, construisons deux analogies. Si la proposition « Code is Education », peut être portée par le mouvement du logiciel libre, montrons qu’il serait préjudiciable de le transformer en « Education is Code », c’est-à-dire de confier l’acte éducatif émancipateur à n’importe quel support qui serait porteur, dans ses rouages techniques, de dispositifs de confiscation. Soit de réduire le droit de regard de l’éducateur et de l’éduqué au droit de regard d’une technologie invasive qui introduirait dans ses mécanismes des couches logicielles intrusives.

Montrons, d’une part, que l’architecture de codage du logiciel libre est, en soi, éducative.
Mais montrons, d’autre part, qu’il ne faudrait pas prendre la partie pour le tout. Ni croire que toute séquence de code, toute plateforme logicielle, serait en soi éducative, que tout code serait éducation.

Code is Education. L’architecture de codage du logiciel libre est, en soi, éducative.

Dans son texte de la philosophie GNU, sur le site de la Free Software Foundation, intitulé Pourquoi les écoles devraient utiliser exclusivement du logiciel libre (https://www.gnu.org/education/edu-schools.fr.html) Richard Stallman rappelle les fondamentaux :

« L’école a une mission sociale celle de former les élèves à être citoyens d’une société forte, capable, indépendante, solidaire et libre. Elle doit promouvoir l’utilisation de logiciel libre tout comme elle promeut la conservation des ressources naturelles et le vote. En formant les élèves et étudiants au logiciel libre, elle donnera leur diplôme à des citoyens prêts à évoluer dans une société numérique libre. Cela aidera la société toute entière à échapper à la domination des multinationales. En revanche, enseigner un programme non libre revient à implanter la dépendance, ce qui va à l’encontre de la mission sociale de l’école. Les écoles ne doivent jamais le faire. »

En effet, le logiciel libre qui promeut les quatre libertés que sont la liberté d’exécuter le programme, la liberté d’étudier le programme pour éventuellement le modifier, la liberté de le copier et la liberté d’en distribuer des copies, modifiées ou non, permet au discernement et à la créativité de ceux qui apprennent une libre expression :

« Le logiciel libre permet aux élèves et étudiants d’apprendre comment les programmes fonctionnent. Certains programmeurs-nés, une fois adolescents, ont soif d’apprendre tout ce qu’il y a à savoir de leur ordinateur et de ses logiciels. Ils sont extrêmement curieux de lire le code source des programmes qu’ils utilisent tous les jours. »

Alors que les logiciels non libres verrouillent le code source, à plus forte raison lorsqu’ils captent des données de navigation à l’insu de l’utilisateur, jouent sur une crédulité et vont jusqu’à dissuader de connaître. Richard Stallman se réfère à la soif d’apprendre des programmeurs-nés ( natural-born programmers) , soit des jeunes qui sont très doués qui progressent rapidement dans cette discipline, soit plus largement au adolescents dont la curiosité est restée intacte et agit en véritable moteur pour un exceptionnel potentiel de progression dans l’écriture du code.

« Le logiciel privateur rejette cette soif de connaissance ; il dit : « Le savoir que tu recherches est un secret – apprendre est interdit ! » Le logiciel privateur est par essence l’ennemi de l’éducation, aussi ne doit-il pas être toléré à l’école, sauf comme objet de rétro-ingénierie. »

Code is Education au sens où une certaine informatique peut donner de l’appétit, et des ailes :

« Le logiciel libre encourage tout le monde à apprendre. La communauté du logiciel libre rejette ce « culte de la technologie » qui maintient le grand public dans l’ignorance de son fonctionnement ; nous encourageons les élèves et étudiants de tous âges et toutes origines à lire le code source et à apprendre autant qu’ils veulent savoir. Les écoles qui utilisent du logiciel libre permettent aux apprentis programmeurs doués de progresser. Comment les programmeurs-nés apprennent-ils à être de bons programmeurs ? Ils ont besoin de lire et de comprendre de vrais programmes que les gens utilisent réellement. On apprend à écrire du code bon et clair en lisant beaucoup de code et en écrivant beaucoup de code. Seul le logiciel libre le permet. »

Savoir technique-pratique, donc, mais aussi plus que cela. Richard Matthew Stallman fait état du pouvoir humanisant de la pratique du code, si le code est effectivement éducatif ; il amène les apprenants à se dépasser, en exerçant leur libre arbitre et leur sens de l’autre :

« La raison la plus profonde d’utiliser du logiciel libre dans les écoles concerne l’éducation morale. Nous attendons de l’école qu’elle enseigne aux élèves et étudiants des connaissances de base et des compétences utiles, mais c’est seulement une partie de sa mission. Sa mission la plus fondamentale est d’enseigner la bonne citoyenneté, y compris l’habitude d’aider les autres. Dans le domaine de l’informatique, cela signifie apprendre aux élèves à partager les logiciels. Il faut qu’on leur dise dès la maternelle : « Si tu apportes un logiciel à l’école, tu devras le partager avec les autres élèves. Tu dois montrer le code source à la classe, au cas où quelqu’un voudrait s’instruire. »

Le texte se conclut alors par un appel à tous les partenaires de l’éducation :
« Si vous êtes dans le milieu de l’enseignement – que ce soit comme élève, étudiant, enseignant, employé, administrateur, donateur ou parent – il est de votre responsabilité de faire campagne pour que l’école migre vers le logiciel libre. Si une demande faite en privé ne permet pas d’atteindre ce but, portez la question sur la place publique dans ces communautés ; c’est ainsi que les gens prendront conscience du problème et que vous trouverez des alliés dans votre campagne. »

Lorsque le 17 mars dernier, le professeur que je suis a dû très rapidement reconfigurer sa pratique pédagogique pour continuer à préparer les étudiants de seconde année aux concours des grandes écoles scientifiques et économiques, ceux de première année à la seconde année, mon enseignement, comme celui de mes collègues, a reposé tout entier sur des lignes de code, permettant une continuité entre les apprentissages et exercices accomplis in vivo et les modalités de substitution, à distance, qu’elles soient en audio ou en vidéo. En prenant bien soin de n’utiliser que des plateformes irréprochables, non intrusives, respectueuses de l’autonomie du professeur et de ses élèves, pour éviter l’appropriation indue de données d’autant plus sensibles qu’elles concernent le lien entre un enseignant et des adultes en construction qui ont besoin de pouvoir s’exercer à écrire et à parler sur des dispositifs hautement sécurisés. Par exemple, la plateforme education.apps (https://apps.education.fr/), proposant des outils logiciels libres est soucieuse de bonnes pratiques ; elle écrit sur sa page d’accueil :

« Vous y trouverez les outils essentiels et communs à tous les métiers de l’Éducation nationale. Les utilisateurs sont propriétaires de leurs données et sont, de fait, en charge de leur gestion. »

Mais toute informatique n’est pas éducative. Education is not Code.

Il ne faudrait pas prendre la partie pour le tout. Ni croire que toute séquence de code, toute plateforme, est en soi éducative, que tout logiciel peut être, les yeux fermés, proposé à des élèves ou des étudiants. Certes, avec la meilleure intention du monde, certains ont pu, dans l’urgence, ouvrir pour leurs classes des dispositifs informatiques sans en contrôler les licences ni les certifications d’innocuité. Et s’apercevoir que certaines caractéristiques pouvaient s’avérer toxiques, comme permettre le siphonnage sans vergogne des métadonnées des élèves. Il est alors essentiel de rectifier le tir. L’éducation ne saurait s’en remettre à n’importe quelle informatique.

Dans le Protagoras de Platon ( https://fr.wikisource.org/wiki/Protagoras_(trad._Chambry ), de 313c à 314b, le personnage Socrate demande ainsi à son interlocuteur de fiction, Hippocrate, homonyme du fameux médecin, s’il ne prend pas un risque considérable à confier son esprit au sophiste Protagoras dont les discours sont peut-être empoisonnés.

« Est-ce qu’un sophiste, Hippocrate, n’est pas une sorte de marchand et de trafiquant des denrées dont l’âme se nourrit ? […] aussi faut-il craindre, ami, que le sophiste, en vantant sa marchandise, ne nous trompe comme ceux qui trafiquent des aliments du corps, marchands et détaillants ; ceux-ci en effet ignorent ce qui, dans les denrées qu’ils colportent, est bon ou mauvais pour le corps ; mais ils n’en vantent pas moins toute leur marchandise, et leurs acheteurs ne s’y connaissent pas mieux, à moins qu’il ne s’y trouve quelque maître de gymnastique ou quelque médecin. »

Platon joue ici sur les deux sens du terme grec pharmakon, qui signifie aussi bien le remède que le poison.

« Si donc tu sais ce qu’il y a dans ces marchandises de bon ou de mauvais pour l’âme, tu peux sans danger acheter les sciences et à Protagoras et à tout autre ; sinon, prends garde, bon jeune homme, de hasarder sur un coup de dés ce que tu as de plus cher ; car le danger est beaucoup plus grand dans l’achat des sciences que dans l’achat des aliments ; si en effet on achète des vivres et des boissons à un détaillant ou à un marchand, on peut les emporter dans les vases appropriés, et, avant de les introduire dans le corps en les buvant et en les mangeant, on peut les déposer chez soi, consulter, et faire appel à quelqu’un qui sait ce qu’il faut manger ou boire, et ce qu’il ne faut pas, combien il faut en prendre, et à quel moment, de sorte qu’on ne court pas grand danger à les acheter ; mais les sciences, on ne peut les emporter dans un autre vase, il faut, le prix payé, loger dans son âme même la science qu’on apprend et s’en aller, empoisonné ou conforté. »

Il en va de certains pourvoyeurs de logiciels comme des sophistes. Sous couvert de panacée, de remède universel, ils prétendent que l’éducation peut se fier à n’importe quelle informatique, que toute informatique fait du bien à qui l’utilise. Qu’un logiciel ne peut jamais faire de mal puisqu’un élève doit au moins apprendre à s’adapter à lui.

Préférons alors à ces outils logiciels peu soucieux d’éveiller le libre arbitre une informatique capable de se comporter effectivement en amie prodigieuse. L’informatique libre par laquelle « Code is Education ».

Si « Code is Education », il faut cependant rester très méfiant. Car, si l’exigence d’une informatique libre est nécessaire, elle n’est pas suffisante. Les extraordinaires capacités de suivi des élèves par Moodle montrent que des limites peuvent apparaître dans la relation entre les valeurs de l’utilisateur et celles du créateur de code. À l’instar de l’incroyable utilisation des logiciels libres par les GAFAM, il faut relever que l’utilisation de logiciels libres au sein du monde de l’éducation ne garantit pas une éducation libre.

27. Git et les branches

Git est un formidable outil de suivi de version que j’utilise quotidiennement pour mes scripts (LaTeX, python, bash, …). Il n’est pas nécessaire de faire de la programmation pour l’utiliser. Je vais ici présenter la manière de réaliser un travail sur deux branches d’un script LaTeX versionné sous git.

La raison du passage sur une autre branche que « master » tient dans l’évolution du module « siunits » vers la version plus performante « siunitx ». Ces deux modules sont incompatibles, car la commande principale « \units{…}{…} » du premier a été remplacée par « \SI{…}{…} » dans le second. Or, le nombre d’occurrences de cette commande dans mon script étant important et des spécificités d’écritures propres au module « siunits » étant possibles, il était dangereux de travailler directement sur la branche « master ». On va donc créer une branche « unites », travailler sur celle-ci et quand toutes les modifications seront faites et que la compilation sera à nouveau fonctionnelle, on fusionnera les modifications faites dans la branche « unites » dans « master ».

Voici comment on peut procéder. Avant de créer une nouvelle branche, on vérifie qu’il n’existe que la branche master grâce à la commande :

git branch

qui devrait retourner « master » (en pressant sur Q on revient à l’invite de commande). On peut voir l’ensemble des branches avec leur dernier commit grâce à :

git branch -v

Avant le nom de la branche se trouve une étoile (*) qui montre la branche sur laquelle on se trouve actuellement.

On crée alors la nouvelle branche ainsi :

git branch unites

La commande « git branch » précédente retourne alors non seulement « master » mais aussi « unites ». La branche « master » reste cependant la branche de travail, comme le montre la présence de l’étoile devant celle-ci.

La branche « unites » est donc créée. Mais si on effectue des modifications sur les fichiers du dépôt, ces modifications seront reportées sur la branche « master ».

Pour changer de branches, il faut utiliser :

git checkout unites

La commande « git branch » présente alors une étoile devant la branche « unites ». On est sur la nouvelle branche.

On peut alors effectuer des modifications sur les fichiers du dépôt, comme par exemple, ajouter une ligne de commentaire : « % blabla » dans le fichier principal, main.tex par exemple.

Ensuite, on vérifie que les changements existent pour cette branche :

git status

Puis, on les ajoute pour le commit :

git add .

On effectue le commit :

git commit -m 'Ajout commentaire'

Et on verse ce commit au dépôt :

git push -u origin unites

et non :

git push -u origin master

puisque sur le dépôt « origin », on veut atteindre la branche « unites ».

Si maintenant, on veut revenir à la branche « master », il faut savoir qu’il est nécessaire d’avoir réalisé toutes les opérations de commit précédemment. Sans quoi le changement ne sera pas autorisé.


Et là on assiste à un miracle. Oui, oui, un miracle. Car en revenant à la branche « master » par :

git checkout master

et en éditant le fichier main.tex, on peut constater la disparition du commentaire.

Pour moi, c’est simplement fou, car cela signifie qu’en changeant de branche, l’ensemble des modifications réalisées sur la branche « unites » a été annulé. Toutes les modifications ont disparu. Et quand on retourne sur la branche « unites », le miracle continue, le commentaire réapparaît, ce qui signifie que toutes les modifications sont revenues.

On peut ainsi, sur la branche « unites » effectuer une compilation, qui peut bien ou mal se dérouler, quand on reviendra sur la branche « master », tous les fichiers issus de la compilation du main.tex de cette branche seront restaurés et une nouvelle compilation se déroulera correctement.

Il faut renouveler le WAHOO du miracle qui s’est accompli et évidemment les milliers de merci à tous les développeurs qui nous fournissent avec bienveillance cet outil formidable.


Après qu’une branche ait été créée, en n’oubliant pas de s’y placer par un checkout, on peut donc travailler en toute tranquillité sur celle-ci. Dans mon cas, j’ai remplacé le module siunits par siunitx dans un fichier contenant le préambule de mon fichier .tex principal. Puis, dans plein d’autres fichiers, j’ai du changer la commande LaTeX \unit{…}, propre au module siunits, par la commande \SI{…} propre au module siunitx. De plus, pour écrire un symbole d’unité pour l’ampère, par exemple, siunits permet \ampere, alors que siunitx demande \si{\ampere}. Enfin, les chiffres ne pouvant être notés comme \SI{10’000\cdot 10^3}{\metre}, par exemple, en raison du séparateur des milliers et du \cdot, il a fallu convertir cela en \SI{10000e3}{\metre} pour que la compilation fonctionne. Ce fut long.

Entre temps, je pouvais à loisir continuer de travailler sur la branche master pour avancer à la rédaction de mon cours. C’est incroyablement pratique.


Et enfin venu le moment où j’ai fini les modifications liées au module siunitx. Sur la branche unites, j’ai fait une dernière compilation pour vérifier que tout se passait bien et ai considéré la migration du module siunits vers siunitx comme terminée.

Il fallait maintenant fusionner les deux branches, ou plutôt, fusionner la branche unites dans la branche master. Pour ce faire, il faut d’abord de placer sur la branche dans laquelle la fusion doit être réalisée :

git checkout master

Puis, très simplement, faire la fusion :

git merge unites

En quelques secondes tout était prêt. Aucun conflit n’ayant été détecté, j’ai simplement compilé le fichier .tex principal de mon cours pour voir si tout avait bien fonctionné. Ce fut le cas. Tout les changements effectués sur la branche unites étaient passés dans la branche master et celle-ci compilait parfaitement.

Restait une dernière étape à réaliser. Comme aucun changement n’étaient plus à faire sur la branche unites, il fallait la supprimer :

git branch -d unites

Restait en fin à pousser tout cela sur le dépôt distant :

git status
git add .
git commit -m 'Fusion de la branche unites réalisée'
git push origin master

Ce fut une vraie partie de plaisir que je vous souhaite.

23. Email, mon amour !

Je reproduit ici un magnifique texte d’un écrivain électronique @ploum qui, non content de nous livrer une pensée fort intéressante, la publie sous différents formats, mais en licence libre (CC-By BE). Se trouve après celui-ci une critique qui, me semble-t-il, permet de dépasser son propos.

Je me suis surpris à envoyer un long email à une personne que je suis depuis plusieurs années sur les réseaux sociaux. J’ai pris le temps de rédiger cet email. De le relire. De le corriger. De l’affiner. J’y exprime une idée simple que j’aurai pu lui envoyer sur Twitter, que ce soit en le mentionnant ou en messagerie privée. Je lui dis, tout simplement, que je ne souhaite plus interagir sur Twitter.

Le fait de prendre du temps, de réfléchir, de me relire m’a procuré un énorme plaisir. J’avais l’impression d’avoir apporté un petit quelque chose au monde, une clarification de mes idées, une main tendue, une piste de réflexion partagée. J’ai construit quelque chose d’intime, où je me révèle.

En tentant de regagner le contrôle de mon cerveau, j’ai retrouvé, sans le vouloir, l’art désuet de la relation épistolaire.

Nous avons oublié l’importance et la facilité de l’email. Nous l’avons oublié, car nous n’en avons pas pris soin. Nous laissons notre boîte aux lettres pourrir sous des milliers de messages non sollicités, nous perfectionnons volontairement l’art de remplir nos boîtes de courriels inutiles, inintéressants, ennuyeux sans plus jamais prendre le temps d’y déposer un courrier utile, écrit, intime.

Nous croyons que le mail est ennuyeux alors que ce sont nos pensées qui sont obscurément désertes. « Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément », disait Boileau. Force est de constater que nos cerveaux sont désormais d’infernaux capharnaüms assiégés par d’innombrables tentatives de les remplir encore et encore. Anesthésiés par la quantité d’informations, nous ne trouvons d’échappatoire que dans la consommation.

Souhaitant soigner ma dépendance à Twitter, j’avais décidé de ne plus suivre que quelques comptes sélectionnés dans mon lecteur RSS grâce à l’interface Nitter. En quelques semaines, une froide vérité s’est imposée à moi : rien n’était intéressant. Nous postons du vide, du bruit. Une fois ôtées les fonctionnalités affriolantes, les notifications, les commentaires, le contenu brut s’avère misérable, souffreteux. J’avais pourtant sélectionné les comptes Twitter de personnes particulièrement intéressantes et intelligentes selon mes critères. Las ! Nous nous complaisons tous dans la même fange d’indignation face à une actualité très ciblée, le tout saupoudré d’autocongratulation. Réduite à quelques caractères, même l’idée la plus enrichissante se transforme en bouillie prédigérée conçue pour peupler un hypnotique défilement ininterrompu.

Un soir, alors que je profitais de ma douche pour articuler un concept théorique qui m’occupait l’esprit, j’ai réalisé avec effroi que je pensais en threads Twitter. Mon esprit était en train de diviser mon idée en blocs de 280 caractères. Pour le rendre plus digeste, plus populaire. J’optimisais spontanément certaines phrases pour les rendre plus « retweetables ».

En échange d’un contenu de piètre qualité, Twitter déformait mes pensées au point de transformer mon aquatique méditation vespérale en quête semi-consciente de glorioles et d’approbations immédiates. Le prix payé est inimaginable, exorbitant.

Ayant bloqué tous les sites d’actualité depuis belle lurette, je décidai que Twitter et Mastodon allaient suivre le même régime que Facebook et Linkedin : ne plus suivre personne. Je nourris désormais ma sérendipité d’écrits plus longs grâce à l’ancienne magie vaudoue du RSS.

Libéré, aéré, le cerveau retrouve soudain de la souplesse, de l’amplitude. Au détour d’une blague dans un forum que je suis, je crois deviner qu’un politicien a été mis en prison. L’information m’agresse. Elle occupe une place imméritée dans mon cerveau. Je n’avais pas envie de savoir cet inutile artefact qui sera vite effacé de la conscience publique. Comme un ancien fumeur soudainement allergique à la fumée, mon cerveau ne peut plus supporter les déchets pseudo-informationnels dont nous sommes abreuvés par tous les pores, par tous les écrans, par toutes les conversations.

Une fois débarrassé de cette gangue d’immondices, je me surprends à penser. Mes doigts se surprennent à vouloir écrire plutôt qu’à rafraîchir une page et réagir avec une émotion préfabriquée. Au lieu d’une démonstration publique de mon égotique fierté travestie en succédané de communication, j’ai envie de forger des textes, des histoires, de faire passer une information dans un contexte plus large, de lui donner le temps d’exister dans l’esprit des récipients. Et tant pis si ces derniers sont moins nombreux, moins enclins à m’injecter leurs likes chargés de dopamine.

Devant ma boîte aux lettres, immaculées grâce à une stricte observance des mes règles inbox 0 et de désabonnement, je guetterai la réponse comme un adolescent attend le facteur lui tendant une enveloppe parfumée. Et si elle ne vient pas, ma vie continuera sans que je sois obnubilé par un compteur de vues, de likes ou de partages.

L’outil de communication décentralisé web 5.0, 6.0 et 12000.0 existe déjà. C’est l’email. Nous n’avons tout simplement pas encore vraiment appris à l’utiliser. Nous tentons vainement de le remplacer ou de l’améliorer à grands coups d’interfaces et de fonctionnalités multicolores, car il expose la vacuité de nos interactions. Il met à nu que nous devrions faire un effort, changer notre cerveau et notre volonté. Tant que nous nous évertuerons à produire et consommer le plus de bruit possible en insatiables gloutonneries, tant que nous mesurerons notre succès avec d’autocrates statistiques, aucun système ne nous permettra de communiquer. Parce que ce n’est pas ce que nous cherchons. Parce que nous nous sommes perdus dans l’apparence et la quantité, jetant aux oubliettes l’idée même de qualité. Nous critiquons la faiblesse d’esprit et le court-termisme de nos politiciens sans réaliser que nous moquons notre propre reflet.

Lorsque nous serons assez mûrs pour tout simplement vouloir échanger de l’information de qualité, nous découvrirons que la solution était sous nos yeux. Si simple, si belle, si élégante, si décentralisée.

L’email.

@ploum

Il faut relever que si ce texte met en évidence une autre manière de considérer le mail que comme un moyen d’envoyer de petits messages et relève bien le plaisir qu’il y a prendre le temps d’écrire des textes longs, la stigmatisation de l’écologie réalisée dans un autre texte par son auteur montre que les raisons de son intérêt pour l’email sont exclusivement celles d’un écrivain et que son efficacité en terme de relation entre le contenu et l’énergie dépensée n’est pas comprise.

Dans un autre texte sur le « Minimalisme numérique », dont l’objectif n’est pas une décroissance des besoins, mais une meilleure efficacité de besoins, en admettant que chacun définisse ceux-ci selon son bon vouloir, il adopte certes un point de vue intelligent parce qu’une absence d’efficacité est stupide, mais il néglige les modifications salutaires que des changement de pratiques peuvent avoir sur nous. Ainsi, son point de vue est de retrouver le plaisir d’écrire par l’utilisation d’email long, mais pas de trouver celui-ci dans la recherche d’un minimalisme énergétique. Les outils qu’il décrit ensuite, comme son utilisation d’un mac et d’un téléphone android en spécifiant simplement que les autres portables sont trop lourds et que le fairphone ne le convainc pas, montrent que l’idée de minimalisme qu’il soutient limite considérablement son évolution et que les principes du libre n’ont pas pour lui de conséquences écologiques.

Ce qui limite la porté de ce néanmoins beau texte.

22. Éditer du texte en ligne de commande : vi

Ne tournons pas autour du pot, nous allons parler de vim et pas de emacs, même si les idées de RMS sont dans mon cœur.

Pendant longtemps, j’ai utilisé vi comme éditeur de texte en étant persuadé je j’utilisais vim. Puis un jour, après avoir configuré mutt (maileur en ligne de commande) pour utiliser vi, j’ai eu besoin de la correction orthographique. Or, tout ce que j’ai tenté de faire pour y parvenir n’a pas fonctionné jusqu’au moment où j’ai regardé si vim était bien installé. Il ne l’était pas. J’utilisais vi dans sa nudité la plus pure sous Debian. J’ai donc installé vim et beaucoup de choses sont apparues qui m’ont donné envie d’écrire cet article.

Configuration

La configuration de vim se fait dans le fichier ~/.vimrc. Voici une configuration très simple qui permet de voir comment cela fonctionne :

ab moi Machin Truc <machin.truc@chose.org>
" Un commentaire
set mouse=a
set number
set spell
set t_Co=256
map <F2> :set spell!<CR>
set spelllang=fr,en
hi SpellBad ctermfg=Red ctermbg=NONE

La première ligne crée un alias. En tapant « moi » dans vim suivi d’un espace, le texte « moi » sera remplacé par « Machin Truc <machin.truc@chose.org> ».
Ensuite se trouve un commentaire, annoncé par des guillemets « .
mouse=a précise que la souris peut être utilisée pour placer le curseur. C’est très utile, car dans vim, on se déplace dans la ligne et non de haut en bas à travers les lignes.
number spécifie qu’on veut des numéros de lignes.
spell spécifie qu’on peut utiliser un correcteur orthographique.
t_Co=256 fait passer la console en mode 256 couleurs.
map … lie la touche F2 à une bascule qui permet de passer au ou de revenir du mode de correction orthographique.
spelllang précise évidemment la ou les langues utilisées.
hi configure la couleur du texte (rouge) d’un mot mal orthographié et de son fond (ici aucun).

Correction orthographique

Un bon article sur la correction orthographique sous vim : http://www.jdhp.org/docs/tutoriel_vim_spellfr/tutoriel_vim_spellfr.html

La correction d’un mot se fait en tapant «z=». Des propositions sont faites alors et il faut choisir l’une d’entre elle dans la liste par son numéro.

On peut corriger toutes les occurrences d’un mot avec la commande «:spellr».
On passe de faute en faute vers le bas avec «]s» et vers le haut avec «[s ».
On peut désactiver et réactiver la correction orthographique, avec «:set spell» et «:set nospell».

Éditeur de texte

Déplacements

Ici, vi et vim se confondent. Ce sont des éditeur dédié au clavier et clairement orienté vers la logique de la structure. Celle-ci fait clairement la différence entre la structure logique du texte qui fait le sens d’un paragraphe et ce que l’on voit à l’écran. Un paragraphe logique peut s’étaler sur plusieurs lignes à l’écran. À la fin de celui-ci se trouve un saut de paragraphe. Pour l’écran, il y a plusieurs saut de lignes dans ce paragraphe. Si l’éditeur de texte ne fait pas la différence entre ces sauts et un saut de paragraphe, quand vous le copierez dans un éditeur ou le texte brut est nécessaire, en HTML par exemple, le paragraphe formera plusieurs lignes et la justification sera mauvaise. De plus la numérotation ne sera pas celle des lignes logiques, c’est-à-dire celle des paragraphes, mais celle arbitraire due à la largeur de l’écran.

Cela a une grande importance pour le déplacement à l’aide des touches clavier. Pour se déplacer dans une ligne, les flèches gauche et droite ou les touches H et L respectivement permettent de se déplacer d’un caractère vers la gauche ou la droite respectivement. Entre les lignes les flèches bas et haut ou les touches J et K respectivement permettent de se déplacer d’une ligne vers le bas ou le haut respectivement.

← ou H : un caractère vers la gauche
↓ ou J : une ligne vers le bas
↑ ou K : une ligne vers le haut
→ ou L : un caractère vers la droite

Pour les déplacement dans la ligne, il faut avoir recours aux touches suivantes :

0 : curseur sur le premier caractère de la ligne
17→ ou 17L : curseur 17 caractères plus loin vers la droite
5← ou 5H : curseur 5 caractères plus loin vers la gauche
^^ : curseur sur le premier caractère de la ligne
$ : curseur sur le dernier caractère de la ligne
w : saut d’un mot vers la fin de la ligne (séparateurs de mots non alphanumériques)
b : saut d’un mot vers le début de la ligne (séparateurs de mots non alphanumériques)
W : saut d’un mot vers la fin de la ligne (séparateur de mots : espaces)
B : saut d’un mot vers le début de la ligne (séparateur de mots : espace)
( : saut vers le début de la phrase ou le début de la phrase précédente
) : saut vers le début de la phrase suivante

gg : curseur au début de la première ligne
G : curseur au début de la dernière ligne
7G : curseur au début de la 7e ligne
{ : saut vers le paragraphe précédent
} : saut vers le paragraphe suivant

H : curseur en haut de l’écran
M : curseur au milieu de l’écran
L : curseur en bas de l’écran

Viewport

Il existe beaucoup de versions de vim. Certaines sont liées à des interfaces graphiques, comme GTK par exemple. Or, la gestion d’un press-papier permettant d’échanger des éléments entre les logiciels est prise en charge par l’interface graphique. Cela signifie qu’avec une version de vim qui n’est liée à aucune interface graphique, il n’existe pas de possibilités de réaliser un simple copier-coller à l’extérieur de vim. Cela peut poser des problèmes.

Pour les contourner, il faut utiliser la notion de wiewport.

Dans vim, on peut utiliser différents wiewports. Il s’agit de scinder vim en différentes parties. Ainsi, pour scinder vim horizontalement, il suffit de lancer la commande :

:sp nom_de_fichier

Si on omet le nom de fichier, on split la fenêtre de vim en deux parties, ouvertes sur le même document. On peut ainsi travailler sur deux parties différentes du document.

Si on met un nom de fichier, on peut ouvrir deux fichier différents dans la même instance de vim. Ainsi, on peut copier coller des éléments entre ces fichiers.

On peut aussi scinder verticalement le viewport avec la commande :

:vsp nom_de_fichier

Diverses commandes existent alors pour gérer les viewports :

Ctrl w successifs : change de viewport
Ctrl w puis + : agrandit le viewport
Ctrl w puis - : réduit le viewport
Ctrl w puis = : égalise les viewport
Ctrl w puis r ou R : échange les viewports
Ctrl w puis q : ferme le wiewport

Mouvements internes

Pour copier-coller à l’intérieur du traitement de texte vim, il suffit de sélectionner une portion de texte, de placer le curseur en mode commande sur l’endroit où on veut coller et de presser le bouton du milieu de la souris.