From 1b2eb5ff5126104f5f4059822bb74cd977891539 Mon Sep 17 00:00:00 2001 From: RochDLY Date: Fri, 24 May 2024 21:45:02 +0200 Subject: update du billet sur la saisie du texte ajout d'un paragraphe bref sur Internet et le Web --- ...a-saisie-du-texte-dans-un-nouveau-document.html | 136 +++++++++++---------- 1 file changed, 70 insertions(+), 66 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 a67148f..058d925 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 @@ -180,19 +180,21 @@ Du fait de mon implication dans Stylo, le regard que je porte sur ce terrain n

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 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.

-

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.

+

Alain Mille en dresse l’histoire depuis les débuts d’Internet dans les années 1960 (2014) à partir du réseau filaire ARPAnet développé par le département de la défense américaine. Seulement, comme le souligne A. Mille, il manque une brique pour naisse l’Internet : un protocole de transfert des documents. Le premier protocole a vu le jour en 196914 et a fait l’objet de la première RFC15 (Request for comments) avant de trouver une forme plus aboutie dans le protocole TCP en 1974 et permet avec sa distribution sous forme de paquets la naissance d’Internet. Ce n’est qu’en 1990, au CERN ((Organisation européenne pour la recherche nucléaire)), que Tim Berners-Lee participe à la conception du Web – et du World Wide Web – pour pallier le problème d’échanges de documents numériques rencontré dans cette institution grâce au développement du langage de balisage HTML. Le Web vient donc répondre à un besoin, celui de la compatibilité des informations et de leur interoperabilité dans une structure. En créant un environnement spécifique composés de normes de structuration des informations interprétable par un logiciel – le navigateur, le Web devient agnostique et ne dépend plus de la même couche d’abstraction logicielle qu’un environnement local. L’ordinateur devient un terminal, un client à partir duquel on peut se connecter au réseau et accéder aux informations qui y circulent.

+

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.

+

[Faire une petite transition]

+

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 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 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 Pandoc16 déployée sur un serveur et rendue accessible via une autre API17 fabriquée à partir du framework FastAPI18. Le module d’export intégré à Stylo19 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 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 :

+

L’éditeur de texte, pièce maîtresse de Stylo, s’appuie sur la technologie Monaco20 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)21, 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 applications22 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 suivantes23 :