Aujourd’hui je suis tombé sur un truc plutôt sympa, et comme d’habitude quand ça arrive, j'écris et je vous le partage.

Ce truc, c’est Gemini. Né en Juin 2019, il s’agit en gros d’un Web de substitution, défini notamment par un nouveau protocole et un nouveau format, plus simples que ceux existants sur le Web que l’on connaît. On peut le définir comme un Gopher amélioré ou un web de retour à ses sources (dixit le site).

Gemini n’a aucunement vocation (ni même la volonté ou le but) de remplacer le World Wide Web (ou même Gopher)

Ce sous-ensemble de l’Internet que l’on connaît tous, le World Wide Web, est vraiment génial, il n’y a pas de débat. Mais c’est devenu complexe : un ensemble de pages web qui, avec les années et le nombre de technologies qui ont émergé (le JS, les frameworks CSS, le responsive design, les médias, les DRM…).

Du temps du HTML 3.2 et 4 (pour les plus jeunes, c'était en 1997 environ, j’avais 7 ans. Mais je me documente avant d'écrire des articles, fin de parenthèse 😄), n’importe quel bon codeur pouvait prendre ses dix petits dix doigts et écrire seul un navigateur respectant les standards existants et permettant ainsi le bon affichage de n’importe quelle page web.

Aujourd’hui, il ne subsiste que 7 navigateurs à tout casser qui respectent l’entièreté du Web et vous permettent d’afficher sans soucis n’importe quel page ou média web. Et je vous défie (sans vous sous-estimer) d’en coder un respectant tous les standards, DRM, etc…

Revenons-en à Gemini. C’est un système qui reprend certains concepts du Web tel qu’on le connaît et qui a pour but de donner accès à l’information plus simplement. Il est basé sur 3 piliers :

  • Simplicité : un protocole et un format bien à lui (expliqué plus bas), rendant le dispositif accessible à n’importe quel navigateur ou ordinateur si basique soit-il
  • Sécurité : chaque page utilise le TLS, c’est mandatory, et aucun mécanisme de pistage (cookie, header, réponse, etc.) n’est implémenté
  • Inextensibilité : Gemini ne peut pas évoluer, il sera toujours l’ensemble de fonctions qui a été défini à la base

Ce dernier point est censé permettre que ça ne se barre pas en couille totale comme le Net que nous connaissons.

A partir d’ici, je vais parler du Geminispace, l’ensemble des pages et ressources composant Gemini. Ces pages sont accessibles via des urls en gemini://xxx.xxx.xx mais pas via un navigateur classique. Comme il utilise son propre protocole, il utilise également ses propres clients. Le site du projet en propose une liste, et vous pouvez tester ceux en ligne de commande en vous connectant sur kiosk@gemini.circumlunar.space via un client ssh.

Ce Geminispace impose le TLS, c’est à dire que toutes les pages l’utilisent. Pas besoin de se demander si la page est sécurisée ou non, c’est mandatory. Pour se balader sur le Geminispace, il suffit de lancer son client comme on le ferait pour accéder au Net.

Le client lancé, vous disposez de moteurs de recherches :

Et il y a un truc génial, une liste maintenue (manuellement) à jour de tous les serveurs existants du Geminispace : gemini://gemini.circumlunar.space/servers/. Une autre liste est générée automatiquement : gemini://gus.guru/known-hosts.

Voici un exemple de page du Geminispace, visitée par le navigateur Lagrange que j’ai joyeusement compilé sur ma machine.

Maintenant, on va parler vraiment technique : comment créé-t-on un site sur le Geminispace 😄

Comme je vous l’ai dit, le Geminispace et le projet Gemini se veulent bien plus simples que le World Wide Web. Les pages hébergées sur les serveurs portent l’extension .gmi. La bonne nouvelle, c’est que la syntaxe de ces pages ressemblent au Markdown, mais en plus léger : pas d’images, pas de liens inline, par exemple.

Une homepage pourrait donc ressembler (vite fait, ne jugez pas) à :

# Homepage

Vous trouverez mon cv ici : gemini://cv.me.io blablablabla

Un mini wiki ici : gemini://wiki.kharec.space

Pour interpréter ce code, pas d’Apache ou de Nginx, mais des serveurs spécifiques au projet Gemini. Les deux principaux sont Agate et Twins. Ils supportent les VirtualHosts, et prennent en charge les DocumentRoot comme un serveur web classique. Ils écoutent par défaut sur le port 1965.

Note : pourquoi le port 1965 ? Parce que le premier vol habité Gemini 3 emporta les astronautes Virgil Grissom et John Young le 23 mars 1965.

Pour le nom de domaine, vous l’achetez comme d’habitude chez Gandi ou autre (genre kharec.space) et le faite pointer sur votre serveur. Une fois lancé, le serveur logiciel, disons Agate, se charge de faire en sorte que ça réponde sur gemini://.

Voilà, j’espère avoir clarifié pour vous ce qu’est Gemini et pourquoi ce projet a vu le jour. Si vous voulez de la doc, il y a une FAQ très bien faite sur le site du projet (et dont j’ai appris énormément).

Je vous souhaite une aussi bonne fin d’année que possible et n’oubliez pas de matter Mort à 2020, c’est pas de toute beauté mais cette putain d’année a bien mérité un film dystopique à la con.

La bise #CovidCompliant et à 2021 pour une meilleure année.