Pour info, on discute de ça avec @HugoTrentesaux par échanges de mails depuis quelques jours. Je voulais contribuer à sa PoC, mais il m’a conseillé de plutôt créer ma propre PoC de mon côté. Ça permet de réfléchir en parallèle, de confronter des choix différents et de retenir les meilleurs.
J’utilise également les briques techniques Iroh + ProllyTree. En revanche, j’ai fait des choix différents pour le reste dès le départ. J’espère pouvoir vous partager ma PoC très bientôt, mais voici déjà quelques choix structurants sur lesquels je suis parti :
- Pas de couche SQL : ma PoC expose directement une API GraphQL, avec un moteur GraphQL interne qui requête directement les ProllyTrees.
- Intégration des données blockchain dès le départ. Mon objectif à terme est aussi de remplacer l’indexeur Squid, pour n’avoir plus qu’une seule API GraphQL qui expose toutes les données. Cela permettra aux hébergeurs de nœuds de n’avoir à héberger qu’un nœud Duniter miroir + un pod.
- Tous les documents d’indexation pointent vers un bloc on-chain, ce qui permet de les rattacher à une epoch. Cela optimise le pruning et la découverte P2P (grâce à des racines de ProllyTrees par epoch).
- Tous les blobs (photos et autres) restent en staging tant qu’ils ne sont pas référencés par un document d’indexation. Les soumissions de nouveaux documents/blobs passent par une API dédiée, ce qui permet de ne propager un blob que lorsqu’au moins un document d’indexation le référence.
- Les règles d’indexation sont dynamiques, définies dans un langage de script, afin de les rendre personnalisables par pod sans perdre l’effet réseau (un seul et même réseau P2P).
Je reste court pour le moment et je continue d’itérer, en espérant que ça servira ![]()