Geminispace VR
Introduction
En ce moment j’ai l’impression que l’informatique tourne à 100 à l’heure : on a du mal à suivre toutes les évolutions. Voire même tout simplement à savoir si ce sont réellement des évolutions 🤔. Qu’il y ait des outils variés - créés avec ou sans IA (Intelligence Artificielle) - ou bien de nouvelles façons de faire, on ne s’en sort plus. Et pourtant avec ce billet je vais y participer ; tout en vous prévenant que je n’ai pas inventé la roue, l’eau chaude ou que sais-je comme expression ringarde pour dire que je n’ai rien inventé de nouveau. Cette fois, je voulais simplement un peu de fun dans ce monde.
Tout commence par une phrase anodine de Richard Dern pendant une conversation au sujet de la « simplicité » dans l’informatique moderne :
Cela dit, tu as étudié Gemini ?
Il parle bien évidemment du protocole Gemini. D’ailleurs je me demande si je dois le remercier ou non 🤣. D’un côté j’ai découvert énormément de choses et vous en ait fait part dans mon dernier article sur « Étendre un blog Hugo jusqu’au protocole Gemini » ; de l’autre j’y ai passé beaucoup de temps 😅. @Richard Dern si tu me lis, ne m’en veux pas !
Pour en revenir à mon histoire, je me renseigne sur Gemini, j’apprends que c’est une alternative du Web située entre HTTP et Gopher. Et là je me souviens qu’à une époque très lointaine. Très lointaine. Très très lointaine (en 1995). Des développeurs de Gopher avait créé un client Gopher qui incluait un outil de visualisation en 3D. « E que s’apelerio GopherVR ». En 3D. Oui 3D. En 1995, vous imaginez ?

Image trouvée sur un article de LinuxFR concernant les INutilitaires graphiques.
Je me suis permis d’imaginer ! Je me suis dit : je veux fun, j’ai un casque VR simple à disposition, je m’intéresse un peu au Geminispace, les pages Web du Geminispace sont simples, pourquoi on essaierait pas un petit Geminispace VR pour le fun ?
Et en même temps, j’avoue qu’un espace VR serait une sorte de troll comparé au protocole Gemini qui se veut extrêmement simple : faire un Geminispace VR serait un comble, un oxymore. Mais pourquoi pas après tout ?
Je vous propose dans cet article de vous présenter le concept de l’outil, où le trouver pour le tester (même sans casque VR) et ce qui pourrait être amélioré à l’avenir. C’est parti !
Concept et technologies utilisées
L’outillage
En me renseignant sur les technologies VR, je découvre WebXR :
WebXR est un standard web qui permet d’exécuter des expériences de réalité virtuelle (VR ou Virtual Reality) et de réalité augmentée (AR ou Augmented Reality) directement dans un navigateur compatible, sans avoir besoin d’installer d’application ou de plugin.
Cela semble pratique, et couplé à Javascript peut-être encore plus. Un simple site HTML/Javascript pourrait suffire.
Le concept
J’imagine alors une forme de navigation :
- je souhaite visiter un seul site à la fois (sans saisir d’adresse pour le moment),
- une fois sur le site - un Geminispace je le rappelle - je voudrais représenter chaque lien de la page par un polyèdre, chaque dossier, chaque fichier par un polyèdre. Chaque fois avec une couleur différente (vert pour un fichier, violet pour un fichier Gemini, gris pour le reste),
- si je vise un polyèdre quelconque il s’illumine,
- en « tirant/cliquant » sur le polyèdre scintillant, on se déplace dans le contenu pointé par le lien ciblé.

A priori rien de compliqué. Naviguer est une succession de « tirs », tout comme le serait une succession de clics. Parfait !
En revanche, je risque de me perdre dans le site : un dodécaèdre rouge au dessus de notre tête représente la racine d’où nous venons (comme un arbre de fichier avec son répertoire courant). De la même façon si on navigue ensuite sur un autre Geminispace, un second dodécaèdre rouge apparaît au dessus de nous pour représenter le site précédent. La navigation s’effectue relativement bien.

Nous sommes au début du projet, je dois dire que cette forme d’expérimentation est intéressante. Et inhabituelle pour moi.
Au fur et à mesure de l’usage, j’ai ajouté quelques règles/éléments :
- sur les pages ayant énormément de liens, la population de polyèdres affichés explose les compteurs. Pour pallier à cela j’ai ajouté une légende sur votre droite qui permet de désactiver les liens par type (dossiers, fichiers *.gmi et liens HTTP(S)),
- on affiche un panneau central avec le contenu du fichier index.gmi du répertoire courant,
- à droite et à gauche du panneau central se trouvent des pyramides couchées bleues qui représentent « page suivante » et « page précédente »,
- si la navigation sur une page contient un ou plusieurs liens, ils sont symbolisés par une sphère (une couleur différente par type de lien) sur le bord gauche du panneau central. Pointer la sphère fait qu’elle s’illumine. Au tir/clic : on s’y rend,
- j’ai ajouté un message de validation Oui/Non au départ du site (si le lien nous fait naviguer vers d’autres rivages que le site actuel,
- si on valide le départ, un second dodécaèdre rouge apparaît pour représenter le site d’où nous sommes partis.

Ce n’est pas une interface dite agréable en soi, mais c’est très amusant de « tirer » sur des liens et essayer de s’en sortir dans tout ce bazar 🤣.
Où trouver GeminispaceVR et comment le tester ?
Ledit « projet »
Les sources de cette expérimentation sont disponibles sur Gitlab dans l’espace odtre/gemini-vr. Ce projet est sous licence A-GPL.
Une démo est disponible sur demo.geminispace-vr.dossmann.net.
Ce projet a aussi été le cœur d’un test de Fable 5.1 (modèle provenant de chez ClaudeAI) pour voir l’autonomie d’une AI sur un projet à partir d’un prompt plus conséquent. 3$ plus tard c’était déjà utilisable. Et les corrections ont consommé 25$ de plus. Heureusement que les 100 premiers dollars étaient offerts 😅.
Tester / utiliser
Ainsi l’usage de Geminispace VR se fait via un navigateur compatible. Autrement dit :
- Mozilla Firefox,
- Google Chromium/Chrome,
- Microsoft Edge.
Ou tout simplement le navigateur de votre casque VR, par exemple Meta Quest Browser.
Voici quelques uns de mes tests d’usage.
Navigateur Firefox et Chromium sur PC fixe
- Au centre de l’écran se trouve un cercle qui représente un pointeur (j’appelle ça la mire 🤷),
- un clic gauche maintenu, puis un déplacement de la souris va permettre de « regarder » ailleurs,
- si vous déplacez correctement le cercle au centre sur un polyèdre, il s’illuminera et un clic permet de valider le choix « ciblé »,
- en bas à droite un rectangle arrondi permet de mettre en plein écran. Inutile je trouve.
Mon expérience n’est pas très concluante sur le navigateur d’un PC fixe. Il manque clairement un dispositif de pointage.
Navigateur Firefox sur téléphone mobile
- Il faut accepter au départ l’usage des senseurs du téléphone mobile pour une expérience plus sympathique,
- et mettre l’écran en mode « paysage »,
- un mouvement du téléphone (par exemple vers le haut) va faire comme si le téléphone était une fenêtre sur un nouveau monde,
- de là, une simple pression sur l’écran peut faire l’effet d’un « clic » pour valider une cible visé,
- mais cette simple pression en continu peut aussi faire avancer dans le monde (comme si on aggrandissait),
- une pression avec deux doigts fait l’effet inverse : cela recule !
La navigation est plus agréable ainsi. Et toujours pas satisfaisante. Bonne chance pour arriver à cliquer sur le rectangle arrondi en bas à droite qui n’apparaît pas car il est hors champ de l’écran. Nul.
Naviguer casque VR avec le navigateur intégré
- On lance le navigateur, on saisit l’URL, on met en plein écran,
- le cercle au centre qui représentait un pointeur devrait disparaître,
- vos dispositifs de pointage devraient faire apparaître des lasers qui permettent de cibler des polyèdres en tous genres,
- à l’appui sur votre gachette du dispositif de pointage, cela devrait valider la cible,
- si vous utilisez les joysticks des dispositifs de pointage vous pouvez vous déplacer dans cet « univers graphique » (mais le déplacement rend malade).

Clairement l’expérience est bien plus satisfaisante sur un casque VR. Usage totalement inutile et pourtant c’est le fameux fun que j’attendais 🥳. J’en suis content.
Améliorations possibles
Bien que le projet ait été fabriqué pour tester différentes choses comme WebXR, Fable 5.1 de chez ClaudeAI, une application sur casque VR et la navigation possible en 3D dans un Geminispace, je pense qu’on pourrait améliorer certaines choses :
- l’affichage du panneau central est à parfaire. Je parle notamment de reconnaître tout ou partie de la syntaxe des fichiers Gemini (*.gmi),
- l’arrivée sur une page contenant énormément de liens fait ralentir l’affichage, il serait bon de trouver une alternative (j’en imagine déjà plusieurs : désactiver automatiquement dans la légende le polyèdre correspondant si on dépasse un seuil critique de liens ou alors stopper l’affichage des liens à partir du seuil ou encore disposer les liens à la GopherVR en spirale),
- il pourrait être sympa d’afficher en couleur les titres d’une page, par exemple rouge pour le titre
#, vert pour##et bleu pour###(ce sont des titres de la syntaxe Gemini), - décaler le texte des citations,
- afficher les images ou un système pour les consulter/voir,
- améliorer l’affichage des boutons « page précédente » / « page suivante »,
- améliorer l’affichage du panneau central,
- etc.
J’avais aussi pensé ajouter un champ de saisie pour aller sur un site défini, mais cela demanderait la gestion d’un clavier et aussi la vérification de ce qui est saisi. On s’éloigne du fun à mon sens.
À vous d’imaginer ce qui pourrait être amélioré 😉.
Conclusion
Initialement parti d’une recherche sur le protocole Gemini, je me suis retrouvé dans une tornade d’idées provenant de mon imagination et dans un projet assez différent de mon habitude. J’ai apprécié modeler le concept initial et s’essayer à la 3D et l’AI - même si finalement je n’ai fais que diriger les opérations.
Je ne m’attendais pas à réussir quoique ce soit et j’avoue que ça commence petit à petit à être utilisable 😄. Jamais je ne me serais imaginé arriver à ce degré d’usage, bien qu’on puisse encore améliorer le concept !
Je me suis amusé à le faire tester à d’autres personnes, des adultes, des adolescents, etc. C’est très drôle de voir à quel point le seul concept d’une arborescence de dossiers et fichiers fait la différence entre quelqu’un qui saura s’en sortir ou quelqu’un qui sera totalement perdu. Promis, je ne suis pas sadique, je leur ai expliqué pendant l’expérience 😉.
N’hésitez pas à forker le projet, améliorer les éléments qui vous semblent pertinents, proposer des PR (Pull Request), créer des tickets, le refaire de 0 dans un autre langage, etc. Partagez également l’outil, c’est là pour s’amuser, alors amusez-vous !
Liens utiles
Voici les liens de l’article par ordre d’apparition :
- Blog de Richard Dern
- Le protocole Gemini suivant Wikipédia
- Article sur « Étendre un blog Hugo jusqu’au protocole Gemini » d’après Olivier
- GopherVR expliqué par Wikipedia (en)
- Article de LinuxFR concernant les INutilitaires graphiques
- WebXR suivant Wikipedia (en)
- Code source de Geminispace VR
- Pourquoi la licence A-GPL ?
- Démo de Geminispace VR