💾 Archived View for rdelaage.ovh › blog › 001-ecrire-un-client-gemini.gmi captured on 2021-12-04 at 18:04:22. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-03)
➡️ Next capture (2022-03-01)
-=-=-=-=-=-=-
Si vous n'êtes pas au courant (ce qui est peu probable puisque vous lisez cet article sur un Geminispace), Gemini est un protocole relativement récent qui se propose de poser les problèmes posés par le web et d'essayer de proposer un protocole pour les résoudre.
J'ai pris connaissance de ce protocole sur le blog de Stéphane Bortzmeyer, j'ai vite été conquis par l'idée et j'ai donc décidé de commencer par regarder à quoi ça ressemblait avec un des clients proposés sur le site web du projet Gemini (amfora en l'occurrence). J'ai ensuite tenté la création d'un Geminispace à l'aide du serveur agate, c'est encore lui qui sert ce blog à l'heure actuelle. Enfin m'est venue l'idée d'essayer d'écire un client avec une interface graphique afin d'en apprendre encore plus sur ce protocole.
Geminispace de Stéphane Bortzmeyer
Je ne suis pas le meilleur en programmation surtout lorsque ça touche à du réseau donc j'ai commencé par regarder les clients existant pour m'en inspirer. Je tenais à essayer d'écrire un client de zéro donc je n'ai pas repris un de ces clients comme base mais juste pour avoir une idée de comment on pouvait le faire. Concernant le langage j'ai choisi Python car il est assez simple à utiliser et on peut réussir à implémenter quelque chose rapidement en peu de lignes.
J'ai commencé par implémenter un script qui envoie une requête à un serveur Gemini et affiche la réponse puis j'ai lu les spécifications pour pouvoir interprété correctement tout ça. Finalement je suis assez vite arrivé à quelque chose de fonctionnel. J'ai ensuite décidé d'ajouter une interface graphique par dessus afin de d'en apprendre un peu plus sur la création d'une interface graphique. Finalement le résultat donne ça.
Résultat de cette expérience
Le résultat reste très expérimental mais fonctionnel. Il manque probablement d'un peu de rigueur et les spécifications ne sont surement pas toutes implémentées ni corrrectement comprises. Mais ce projet a été très instructif, il m'a permis de comprendre sur un protocole assez simple comment on implémente un client pour un protocole et comment un protocole est construit, il m'a aussi apporté sur la programmation réseau et la création d'une interface.
La prochaine Ă©tape sera de construire une librairie pour des clients Gemini en C.
Publié le 01/01/2021 par Romain de Laage