From 050024fd16d6dfd4ed5ff53679dd3358bb6b65e3 Mon Sep 17 00:00:00 2001 From: RochDLY Date: Fri, 24 May 2024 17:11:35 +0200 Subject: =?UTF-8?q?mise=20=C3=A0=20jour=20du=20billet=20sur=20la=20saisie?= =?UTF-8?q?=20du=20texte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correction de coquilles et ajout de la ref d'Alain Mille sur l'histoire d'internet et du web. I lfaut développer sur quelques lignes ... --- ...a-saisie-du-texte-dans-un-nouveau-document.html | 142 +++++++++++---------- 1 file changed, 73 insertions(+), 69 deletions(-) (limited to 'docs/posts/2024-05-06-la-saisie-du-texte-dans-un-nouveau-document.html') diff --git a/docs/posts/2024-05-06-la-saisie-du-texte-dans-un-nouveau-document.html b/docs/posts/2024-05-06-la-saisie-du-texte-dans-un-nouveau-document.html index 4f5b56e..a67148f 100644 --- a/docs/posts/2024-05-06-la-saisie-du-texte-dans-un-nouveau-document.html +++ b/docs/posts/2024-05-06-la-saisie-du-texte-dans-un-nouveau-document.html @@ -129,8 +129,7 @@ Du fait de mon implication dans Stylo, le regard que je porte sur ce terrain n

Le BIOS est donc l’interface entre l’utilisateur et la machine qui nous permet de manipuler les différentes entrées et sorties du système, donc de gérer les périphériques, fonction que le système d’exploitation peut également réaliser une fois que la phase d’amorçage est terminée. Le système d’exploitation (OS pour Operating System), est un niveau d’abstraction supplémentaire et se retrouve à l’interface entre les applications logicielles et la couche matérielle. Un OS est composé d’un ensemble de programmes permettant la bonne gestion des ressources de l’ordinateur : mémoires, calculs, périphériques, les registres, etc. Chaque OS a un fonctionnement qui lui est propre : l’architecture des informations – l’arborescence des dossiers, l’indexation des documents et des fichiers binaires change selon l’OS utilisé –, l’ordonnancement des tâches pour le processeur ou encore l’allocation de la mémoire, etc. Malgré le fait que ça n’ait pas toujours été le cas, les applications logicielles sont maintenant installées à l’intérieur des systèmes d’exploitation et prêtes à être exécutées. Le passage par un système d’exploitation permet aux logiciels de ne plus dépendre d’un modèle particulier du hardware et d’en faire justement abstraction, les rendant ainsi opérables sur différentes machines.

Ce tour d’horizon des particularités de l’écriture numérique et de l’agencement entre logiciel et matériel dans la machine nous montre que la conception de la machine ne permet pas à un auteur d’y inscrire des signes dans sa mémoire, ni de pouvoir les consulter directement puisqu’elle lui est inaccessible à moins qu’un intermédiaire ne servent d’interface. La médiation entre une machine et un auteur se fait au moyen d’un langage compréhensible par les deux parties, que l’on assemble sous la forme d’instructions qui, une fois empaquetées, forment un logiciel. Pour symboliser la médiation du matériel par la mise en place du logiciel à l’interface de l’humain et de la machine, l’entreprise Microsoft emploie la métaphore de la fenêtre (window(s)) à travers laquelle l’usager voit le numérique, et donc l’ordinateur. Pourtant, il ne faut pas s’y méprendre, quelle que soit la fenêtre logicielle, elle ne permet d’accéder qu’à un certain nombre fini d’instructions. Alors qu’en tant qu’appareil programmable qui ne se souci pas de la signification du traitement des informations ni des résultats obtenus, l’ordinateur semble être un environnement beaucoup plus vaste que ce que cette fenêtre ne nous laisse croire (Turing, 1936). Plutôt qu’une fenêtre comme ouverture ou passage vers le numérique, il serait plus juste de considérer cette fenêtre comme une vision du monde parmi d’autres. Cette vision du monde n’est pas seulement une vision particulière que l’humain a de la machine car dans ce cas nous serions dans un paradigme anthropocentré et utilitariste de la machine. En nous déplaçant de l’autre côté de la fenêtre, on se rend compte que la vision que porte la machine sur le monde est différente de la notre : la machine incarne une autre vision du monde sous forme de matrice, où chaque élément qu’elle perçoit l’est sous forme binaire. Le monde n’est alors plus que chiffres, calculs et distances, comme c’est le cas de la proposition de K. Hayles lorsqu’elle remplace Mère Nature par une Matrice (Hayles, 2005).

Un début de relation s’instaure entre l’humain et la machine grâce à l’entremise du logiciel. À travers cette interface, lorsque l’on touche une lettre du bout du doigt, la machine devient alors accessible et l’impulsion (électrique) que cette action génère se transforme en une lettre à l’écran. Pour autant, cette accessibilité est-elle synonyme de mise en visibilité ? Le fait que “ça marche” rendrait-il le document visible ? C’est le rôle de l’interface graphique et des métaphores qu’elle véhicule que de cacher le fonctionnement même de la machine (Jeanneret, 2011). La déliaison convoquée par Bonaccorsi (Bonaccorsi, 2020) prend place dès cet instant dans le processus d’écriture puisqu’il ne s’agit pas seulement de délier le geste de l’inscription mais également de faire abstraction de tout le processus d’écriture au-delà du geste. Ainsi, le logiciel aurait une double fonctionnalité : la première est une médiation qui ouvre le dialogue avec la machine tandis que la seconde en fait abstraction et la cache, ce qui a pour effet de rendre la machine quasiment invisible à l’utilisateur. Cependant, que découvrons-nous lorsque nous retirons ce voile devant la fenêtre ? Là se dévoile un vaste écosystème constitué de formats, des protocoles et leurs flux d’informations et de documents, parfois temporaires, voyageant d’une étape à une autre, prenant forme et se transformant pour suivre un cheminement prédéfini jusqu’à la création d’un document final que l’utilisateur récupère. Chacune de ces fenêtres offre finalement une vision particulière d’un document et un modèle épistémologique qui lui est propre (Vitali-Rosati, 2018).

-

Dans la partie suivante, nous étudions le logiciel Stylo à partir de l’écran comme interface d’échange de signes entre les deux protagonistes, utilisateur et machine, puis, en dépassant cette surface, et en nous dégageant du prisme essentialiste, nous démontrerons que les différents agents d’un environnement – principalement logiciels et humain – sont des dynamiques qui, lorsqu’elles sont agencées dans une configuration particulière, co-construisent l’écriture.

-

[détailler le prisme essentialiste en une phrase ou deux]

+

Dans la partie suivante, nous étudions le logiciel Stylo à partir de l’écran comme interface d’échange de signes entre les deux protagonistes, utilisateur et machine, puis, en dépassant cette surface, et en nous dégageant du prisme essentialiste11, nous démontrerons que les différents agents d’un environnement – principalement logiciels et humain – sont des dynamiques qui, lorsqu’elles sont agencées dans une configuration particulière, co-construisent l’écriture.

Une médiation par l’écrit

Le logiciel comme architexte

Sans l’intervention du logiciel entre l’être humain et la machine, il ne serait pas possible pour un auteur d’écrire sur le support de l’inscription numérique. Si l’on considère l’écriture comme le geste d’inscrire une trace ou un signe sur un support, alors l’écriture numérique n’est plus un fait humain mais un acte réalisé par l’ordinateur lui-même.

@@ -173,27 +172,27 @@ Du fait de mon implication dans Stylo, le regard que je porte sur ce terrain n

On retrouve tous ces textes numériques (logiciels et documents) au même niveau hiérarchique dans l’architecture du système d’exploitation et le traitement qui leur est appliqué par le processeur est identique. La nomination des logiciels en tant qu’« écrits qui permettent les écrits d’écran » par E. Souchier nous mène aussi à cette juxtaposition : finalement le logiciel est de même nature que le texte que nous y rédigeons à l’intérieur.

Toutefois, une distinction persiste. Si le texte peut être remédié dans un autre format – et être imprimé par exemple –, le logiciel quant à lui ne peut exister que dans son environnement numérique. Son code source peut lui aussi faire l’objet d’une remédiation (Bolter & Grusin, 1998) mais il sera dénaturé car sa fonction principale est l’organisation du traitement des informations dans un ordinateur. D’ailleurs, C. Herrenschmidt nous rappelle que le terme de logiciel a été forgé à partir de la contraction du mot “logique” avec le mot “matériel” (Herrenschmidt, 2023, p. 474) , pour justement montrer à la fois l’opposition du logiciel avec l’aspect matériel (hardware) et marquer leur complémentarité : l’ordinateur (hardware) serait très peu accessible (voir inaccessible) sans logiciel, et le logiciel n’existe pas en dehors de l’ordinateur.

Lorsque l’on définit le logiciel en opposition au matériel, on les place tous les deux au même niveau – ils sont des entités équivalentes – et cela nous détache de ce que nous avons vu précédemment sur la place du logiciel aux côtés de n’importe quel document à l’intérieur de la mémoire de l’ordinateur.

-

Un courant contemporain de la théorie des médias, l’intermédialité montréalaise11 (Müller, 2000; Tadier & Méchoulan, 2021;   Tadier, 2021), en tant qu’art pour penser les relations (Tadier, 2021), peut être mobilisée pour mieux comprendre les liens entretenues par les agents de notre système, la machine avec elle-même, humain-machine, machine-machine.

-

Ce qui est intéressant dans cette relation – et que certains systèmes d’exploitation cachent depuis plusieurs années – est le fait que logiciel ne puisse exister que dans un environnement très particulier et fragile. Pour fonctionner, le logiciel doit être compatible avec plusieurs composants de l’ordinateur. Les premiers composants sont matériels : est-ce que l’ordinateur a une carte graphique, quel type de processeur ou la quantité de mémoire vive, etc. C’était un fait connu du temps des premiers logiciels comme WordPerfect (Bergin, 2006a;   Kirschenbaum, 2016; F. A. Kittler, 2015) et que l’on voit de moins en moins aujourd’hui, notamment parce que 1) les logiciels à installer sont disponibles pour beaucoup de matériels – exceptés pour certains jeux vidéos ou des programmes que l’on va préférer faire fonctionner sur des “machines plus puissantes” comme des réseaux de neurones – et 2) parce que le développement des téléphones intelligents depuis une vingtaine d’années a donné naissance à un nouveau format d’application : les progressive web apps qui utilisent les technologies du web (HTML, CSS, JS) pour fonctionner et sont donc exécutables sur plus de supports puisqu’elles sont agnostiques12 vis-à-vis du système d’exploitation. L’environnement matériel est donc une première condition pour faire fonctionner un logiciel. La deuxième est le système d’exploitation. En fonction du système d’exploitation – et de sa version – un logiciel pourra y être installé à l’intérieur. Ce deuxième paramètre ne doit pas être sous-estimé car l’écosystème des logiciels fonctionne sur la base d’un système réticulaire : les programmes ne sont pas développées from scratch, ils s’appuient sur d’autres briques logicielles qui elles-mêmes s’appuient sur d’autres briques logicielles. Chacune d’entre elles dépend d’une version particulière de l’autre. Si une version venait a être mise à jour sans vérification préalable, alors le château de cartes pourrait s’effondrer et le logiciel ne plus fonctionner.

+

Un courant contemporain de la théorie des médias, l’intermédialité montréalaise12 (Müller, 2000; Tadier & Méchoulan, 2021;   Tadier, 2021), en tant qu’art pour penser les relations (Tadier, 2021), peut être mobilisée pour mieux comprendre les liens entretenus par les agents de notre système, la machine avec elle-même, humain-machine, machine-machine.

+

Ce qui est intéressant dans cette relation – et que certains systèmes d’exploitation cachent depuis plusieurs années – est le fait que logiciel ne puisse exister que dans un environnement très particulier et fragile. Pour fonctionner, le logiciel doit être compatible avec plusieurs composants de l’ordinateur. Les premiers composants sont matériels : est-ce que l’ordinateur a une carte graphique, quel type de processeur ou la quantité de mémoire vive, etc. C’était un fait connu du temps des premiers logiciels comme WordPerfect (Bergin, 2006a;   Kirschenbaum, 2016; F. A. Kittler, 2015) et que l’on voit de moins en moins aujourd’hui, notamment parce que 1) les logiciels à installer sont disponibles pour beaucoup de matériels – exceptés pour certains jeux vidéos ou des programmes que l’on va préférer faire fonctionner sur des “machines plus puissantes” comme des réseaux de neurones – et 2) parce que le développement des téléphones intelligents depuis une vingtaine d’années a donné naissance à un nouveau format d’application : les progressive web apps qui utilisent les technologies du web (HTML, CSS, JS) pour fonctionner et sont donc exécutables sur plus de supports puisqu’elles sont agnostiques13 vis-à-vis du système d’exploitation. L’environnement matériel est donc une première condition pour faire fonctionner un logiciel. La deuxième est le système d’exploitation. En fonction du système d’exploitation – et de sa version – un logiciel pourra y être installé à l’intérieur. Ce deuxième paramètre ne doit pas être sous-estimé car l’écosystème des logiciels fonctionne sur la base d’un système réticulaire : les programmes ne sont pas développées from scratch, ils s’appuient sur d’autres briques logicielles qui elles-mêmes s’appuient sur d’autres briques logicielles. Chacune d’entre elles dépend d’une version particulière de l’autre. Si une version venait a être mise à jour sans vérification préalable, alors le château de cartes pourrait s’effondrer et le logiciel ne plus fonctionner.

D’ailleurs, une pratique courante en développement informatique consiste à créer un environnement virtuel – une bulle – à l’intérieur même de son ordinateur pour y installer des versions sélectionnées de dépendances logicielles afin qu’elles ne soient pas victime d’un effet de bord dû à une mise à jour d’un autre programme (et d’autre dépendances).

Le logiciel est un langage de haut niveau qui permet de manipuler des données jusqu’au plus bas niveau de l’ordinateur, au niveau des entrées et des sorties. Toutes ces manipulations sont exécutées en appelant des instructions dans ce réseau de dépendances/logiciels pour que les données puissent descendre les couches et être transformées jusqu’à atteindre leur espace de stockage dans la mémoire morte.

Le nom qui désigne un logiciel comme MS Word, Stylo ou LibreOffice désignent plus que les vagues notions que peuvent être leur fonctionnalité principale, dans ces cas-ci l’édition de texte, et peuvent être définis par la totalité des instructions mobilisées dans la manipulation des informations. À l’instar de McLuhan (1977), l’on pourrait percevoir les logiciels comme des espaces construits – des architectures de l’information (Broudoux et al., 2013) soignées – avec une topologie qui leur est propre et à travers laquelle chaque suite d’instructions forme une route que des unités sémiotiques empruntent pour y être transformées en unités calculables.

Chaque environnement d’écriture incarne un modèle et une vision du traitement de l’information, que l’on peut englober sous le nom de cet environnement. Lors de l’interaction entre un usager et une machine, par le biais de cet environnement, les médiations à l’oeuvre sont des représentations de ce modèle dont les traces présentes dans les documents sont les indices.

-

En prenant le cas de Stylo, nous pouvons détailler ce que nom désigne en fouillant l’architecture logicielle, puisque le code est en libre accès, afin de cibler les traces de cette relation entre l’auteur et son environnement.

+

En prenant le cas de Stylo, nous pouvons détailler ce que désigne cette appellation en fouillant l’architecture logicielle, puisque le code est en libre accès, afin de cibler les traces de cette relation entre l’auteur et son environnement.

Tout d’abord, Stylo représente un espace sur le Web dans lequel nous pouvons écrire en suivant la syntaxe de trois formats de texte brut, le Markdown, le YAML et le BibTeX. Le Web fonctionne différemment d’un environnement local sur son ordinateur personnel.

-

[Faire l’historique du Web en deux phrases, citer les spec du W3C et de HTML jusqu’à HTML5]

+

Alain Mille en dresse l’histoire depuis les débuts d’Internet dans les années 1960 (2014) à partir du réseau filaire ARPAnet …

Sur le Web, les données sont généralement séparées de l’espace d’affichage et sont stockées sur un serveur, dans une base de données. Il y aurait donc au moins deux modules différents, la partie client – ce qui est affiché dans le navigateur – et la partie serveur, soit la base de données. Dans notre cas, nous allons scinder l’ architecture logicielle de Stylo en trois parties.

Les différents modules de Stylo

Tout d’abord, nous retrouvons la base de données où sont stockées toutes les informations et données de Stylo : les comptes utilisateurs, les articles, les espaces de travail, les corpus, etc. Cette base de données est réalisée avec MongoDB, un système de gestion de base de données non relationnelles développé en 2007 et s’appuyant sur des documents structurés en JSON.

-

Le deuxième bloc de Stylo est le module d’export qui permet de transformer les informations saisies et visibles dans l’éditeur en de multiples documents. Tout ce module est développé et maintenu avec le langage de programmation Python par David Larlet. Cette brique technologique est articulée autour du logiciel de transformation et de conversion Pandoc13 déployée sur un serveur et rendue accessible via une autre API14 fabriquée à partir du framework FastAPI15. Le module d’export intégré à Stylo16 permet de convertir et de transformer les textes sources en une multitude d’artefacts, selon les capacités de transformation et de conversion du logiciel Pandoc auquel il est rattaché.

+

Le deuxième bloc de Stylo est le module d’export qui permet de transformer les informations saisies et visibles dans l’éditeur en de multiples documents. Tout ce module est développé et maintenu avec le langage de programmation Python par David Larlet. Cette brique technologique est articulée autour du logiciel de transformation et de conversion Pandoc14 déployée sur un serveur et rendue accessible via une autre API15 fabriquée à partir du framework FastAPI16. Le module d’export intégré à Stylo17 permet de convertir et de transformer les textes sources en une multitude d’artefacts, selon les capacités de transformation et de conversion du logiciel Pandoc auquel il est rattaché.

Le dernier bloc de Stylo concerne l’interface que les utilisateurs voient affichée sur leur écran. Étant donné que Stylo est accessible via un navigateur web, l’interface a été conçue avec les technologies de cet environnement. On retrouve des objets en HTML, en CSS et en Javascript. Le framework React, une surcouche à Javascript open source développée par Facebook (aujourd’hui Meta) en 2013, a été employé pour faire les différents composants de l’interface et intégrer de nombreuses librairies telle que i18n qui permet d’implémenter le multilinguisme dans l’interface et changer la langue affichée à l’écran en un seul clic.

-

L’éditeur de texte, pièce maîtresse de Stylo, s’appuie sur la technologie Monaco17 développé par Microsoft et rendu disponible sous licence MIT.

-

Ces deux blocs, la base de données MongoDB et l’interface web, ne sont pas en communication directe. Les champs de texte dans la partie HTML ne permettent pas d’écrire directement dans la base de données. En conséquence, un canal de communication devait être établi entre ces deux objets pour que les données puissent être accessibles à la fois en lecture, pour l’affichage dans la page web, et en écriture pour ajouter, modifier ou supprimer des éléments. Pour mettre en oeuvre cette communication, une API (Application Programming Interface) utilisant le langage de requête GraphQL a été mise en place et rendue accessible via le protocole HTTP (Hypertext Transfert Protocol)18, la surcouche du protocole internet utilisée pour le web. Le langage de requête et de manipulation des données GraphQL a également été développé par Facebook à partir de 2012 puis publié en open source en 2015.

-

L’une des particularités d’une API GraphQL, contrairement à une API REST par exemple, est quelle sert l’ensemble des données à une seule adresse (endpoint) alors que plus généralement, les données sont accessibles à des URL très précises, ce qui a pour effet de rendre explicite la structuration des données dans la base. En ne servant les données qu’à une seule adresse, l’API s’échappe de la contrainte de la structuration des données et contourne les problèmes récurrents d’over-fetching ou d’under-fetching que l’on peut rencontrer dans certaines applications19 L’API GraphQL est donc agnostique à l’égard de la forme de la base de données. Par contre, la définition de requêtes adressables à la base de données doit être déclarée pour que l’on puisse faire circuler les informations entre le serveur et le client. Pour effectuer cela, GraphQL à son propre langage de description de schéma (SDL, Schema Definition Language) et permet de déclarer explicitement les différentes façons d’écrire une requête.

-

Par exemple dans Stylo, le champ user contient les informations suivantes20 :

+

L’éditeur de texte, pièce maîtresse de Stylo, s’appuie sur la technologie Monaco18 développé par Microsoft et rendu disponible sous licence MIT.

+

Ces deux blocs, la base de données MongoDB et l’interface web, ne sont pas en communication directe. Les champs de texte dans la partie HTML ne permettent pas d’écrire directement dans la base de données. En conséquence, un canal de communication devait être établi entre ces deux objets pour que les données puissent être accessibles à la fois en lecture, pour l’affichage dans la page web, et en écriture pour ajouter, modifier ou supprimer des éléments. Pour mettre en oeuvre cette communication, une API (Application Programming Interface) utilisant le langage de requête GraphQL a été mise en place et rendue accessible via le protocole HTTP (Hypertext Transfert Protocol)19, la surcouche du protocole internet utilisée pour le web. Le langage de requête et de manipulation des données GraphQL a également été développé par Facebook à partir de 2012 puis publié en open source en 2015.

+

L’une des particularités d’une API GraphQL, contrairement à une API REST par exemple, est quelle sert l’ensemble des données à une seule adresse (endpoint) alors que plus généralement, les données sont accessibles à des URL très précises, ce qui a pour effet de rendre explicite la structuration des données dans la base. En ne servant les données qu’à une seule adresse, l’API s’échappe de la contrainte de la structuration des données et contourne les problèmes récurrents d’over-fetching ou d’under-fetching que l’on peut rencontrer dans certaines applications20 L’API GraphQL est donc agnostique à l’égard de la forme de la base de données. Par contre, la définition de requêtes adressables à la base de données doit être déclarée pour que l’on puisse faire circuler les informations entre le serveur et le client. Pour effectuer cela, GraphQL à son propre langage de description de schéma (SDL, Schema Definition Language) et permet de déclarer explicitement les différentes façons d’écrire une requête.

+

Par exemple dans Stylo, le champ user contient les informations suivantes21 :