2023-04-12
Three, two, one, IGNITION! 🚀️
Ce blog est à présent une capsule Gemini et vient de rejoindre le Geminispace !
Si vous n'avez jamais entendu parler du projet Gemini (non, pas celui de la NASA 😛️), vous n'avez probablement rien compris à la phrase précédente... Et bah ça tombe bien, car aujourd'hui je vais vous présenter le projet Gemini, et pour quelles raisons ça m'intéresse.
Attachez votre ceinture, on décolle ! 😁️
À la base, tout est parti d'un constat : le Web s'est fortement éloigné de son esprit d'origine pour devenir de plus en plus lourd et complexe ; le tracking des internautes y est devenu la norme. Pourtant tout avait bien commencé. À ses débuts le Web était relativement simple et avait été conçu pour partager des documents, de la connaissance... Bref, essentiellement du texte. Il se composait alors de trois éléments principaux :
Puis à ces éléments on a commencé à en empiler d'autres afin de rendre le Web toujours plus « puissant » :
Et on ne s'est bien sûr pas arrêtés en si bon chemin ! Aujourd'hui, les navigateurs Web savent :
Je pourrais continuer longtemps comme ça tellement il y a d'API pour tout. Les navigateurs ne sont plus là simplement pour échanger des documents et partager de la connaissance ; ils sont devenus une plateforme de développement d'application. Aujourd'hui on peut presque tout faire dans un navigateur, et certaines applications dites « native » ne sont en fait que des navigateurs déguisés (coucou Spotify, Discord, Slack, Visual Studio Code, SteelSeries Engine 3,...) !
Il n'est aujourd'hui plus vraiment possible ni raisonnable de se lancer dans le développement d'un navigateur Web depuis zéro, même en y mettant de gros moyens : c'est devenu trop complexe. C'est pour cette raison qu'il n'existe plus que deux moteurs de rendus dans tous les navigateurs actuels :
Toutes ces fonctionnalités, en plus d'apporter de la complexité, ont également permis de mettre en place une surveillance généralisée des utilisateurs, généralement à des fins publicitaires. Ce problème a d'ailleurs pris de telles proportions que tous les internautes un minimum informés n'envisageraient même plus de se promener sur le Web sans au moins un, et souvent plusieurs, logiciels de blocage pour lutter contre les pubs et les systèmes de tracking. Certains navigateurs eux-mêmes font ce qu'ils peuvent pour limiter les possibilités de surveillance (notamment Firefox et Brave).
Depuis tout à l'heure je vous parle du Web, et je n'ai donc toujours pas répondu à la question initiale qui était « Mais qu'est ce que c'est donc que ce Gemini là ?! ». Pas de panique, j'y viens ! 😉️
Gemini est un projet lancé en juin 2019 afin de renouer avec les débuts du Web, ou afin de moderniser Gopher, selon à qui vous posez la question. Gemini se compose des mêmes éléments que le Web à ses origines.
À la base on retrouve donc un protocole, nommé Gemini, permettant l'échange de documents entre un serveur et un client. Ce protocole est simple (comparativement à HTTP) et non évolutif. Ce dernier point est important car cela permet d'éviter qu'il ne se complexifie au fil du temps et que des moyens de tracking des utilisateurs ne finissent par apparaitre. Il est aussi important de noter que ce protocole est nativement chiffré à l'aide de TLS (tout comme HTTPS).
Le second élément que l'on retrouve est un format de document hypertexte nommé Gemtext. Il s'agit d'un format texte très minimaliste et très simple à écrire. Il est tellement simple que je peux vous lister ici l'ensemble de ses fonctionnalités :
Et voilà, c'est tout. Pas de gras, pas d'italique, pas de balise d'image,... Juste du texte.
Voici concrètement à quoi ressemble la syntaxe d'un document Gemtext :
# Titre Principal ## Titre de second niveau ### Titre troisième niveau Ceci est une ligne de texte. Ceci est une autre ligne de texte.
Pour finir, Gemini s'appuie sur le même système d'URL que le Web pour localiser les documents qui le composent. Vous pouvez donc accéder à la page d'accueil de ce blog dans le Geminispace à l'adresse "gemini://blog.flozz.fr/index.gmi".
Il est important de comprendre que le but de Gemini n'est pas de remplacer le Web, mais de fournir un espace de liberté pour les personnes qui en ont marre de ses lourdeurs (pub, popup, vidéos en autoplay,...) et de la surveillance généralisée. Il fournit également un terrain de jeu à ceux qui sont intéressés par la décroissance numérique et par le « slow web », que ce soit par choix ou par nécessité : Gemini nécessite en effet peu de puissance de calcul et de bande passante pour fonctionner.
Si vous souhaitez en apprendre davantage sur Gemini, je vous invite à lire :
la FAQ sur le site officiel du projet (en),
Pour ma part, du fait de sa simplicité, Gemini est un terrain de jeu parfait pour explorer divers domaines techniques. Il me donne un prétexte pour me pencher sur différentes briques logicielles que j'utilise au quotidien. Et je ne suis pas non plus insensible au côté « low tech » et DIY du projet.
Pour la propulsion de ce blog dans le Geminispace, j'ai par exemple dû me pencher sur docutils, la bibliothèque en charge de parser les articles de ce blog, qui sont rédigés en reStructuredText, et de les transformer en HTML. J'ai ainsi travaillé sur la bibliothèque rst2gemtext qui s'appuie sur docutils pour le parsing des documents reStructuredText, puis qui les convertit en Gemtext. J'ai grâce à ce projet beaucoup appris sur le fonctionnement de la bibliothèque docutils et sur certaines subtilités de reStructuredText.
J'ai également travaillé sur un plugin pour Pelican, l'outil qui génère le blog que vous êtes en train de lire. Ce plugin, nommé Pelican Gemini Capsule permet de générer des fichiers Gemtext aux côtés des fichiers HTML de chaque article du blog. Il génère également la page d'accueil et une page listant tous les articles. Pour l'instant les « pages », les indexes de catégorie et les indexes temporels ne sont pas encore gérés (mais ça viendra 😜️) ! .
Pelican Gemini Capsule sur GitHub
Pour servir le contenu de ce blog il faut bien sûr un serveur Gemini. J'utilise actuellement Jetforce par facilité : il est en écrit en Python et j'avais déjà de quoi déployer du Python sur le serveur qui héberge ce blog puisque le système de commentaire est également développé dans ce langage. Ceci dit, je compte bien me pencher sur le développement de mon propre serveur Gemini à terme. Ça devrait être assez formateur pour améliorer mes connaissances dans la gestion des sockets et de l'asynchrone en Python ! 😁️
J'ai également bien envie de développer un client Gemini, si possible sous la forme d'un plugin Firefox afin de pouvoir passer de manière fluide du Web au Geminispace... Mais ça risque de me prendre encore un peu de temps pour développer ça ! 😅️
Je vous reparlerais probablement de ces projets dans de futurs articles... 😁️
Si vous avez envie de visiter le Geminispace, il vous faudra commencer par télécharger un Navigateur. Il en existe pour tous les goûts (en ligne de commande, avec interface graphique, proxy Web,...) et pour tous les systèmes.
J'utilise pour le moment essentiellement Lagrange sur mon PC. Il s'agit d'un navigateur Gemini graphique, disponible pour Linux, macOS et Windows.
Site Gemini officiel du navigateur Lagrange
Capture d'écran du navigateur Gemini Lagrange
Sous Linux, le plus simple est d'installer Lagrange via son paquet Flatpak disponible sur Flathub. Pour les autres, vous pouvez vous rendre sur la page de téléchargement.
Paquet Flatpak de Lagrange pour Linux
Page de téléchargement de Lagrange pour tous les OS
Et sur Android j'utilise le navigateur Buran, disponible sur F-Droid.
Capture d'écran du navigateur Gemini Buran
Et si ces clients ne vous conviennent pas, vous en trouverez toute une liste sur le site du projet Gemini :
Ça fait quelques mois maintenant que je me promène dans le Geminispace, et je trouve l'expérience plaisante : juste du contenu à lire, pas de bannières RGPD pleines de darkpatterns pour nous faire accepter le pistage, pas de pub, pas de vidéos qui se lisent automatiquement,... Bref, c'est reposant ! 😄️
Si vous voulez tenter l'expérience mais que vous ne savez pas trop quoi visiter, voici quelques capsules intéressantes :
Le site officiel du projet Gemini
geminispace.info, un moteur de recherche
SPACEWALK, un agrégateur de contenu
Le blog de Ploum, écrivain de science-fiction et penseur du libre
Le blog de FLOZz (que vous êtes en train de lire #autopromo 😜️)
Gemini Francophonie, un agrégateur de capsules francophones
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------