Graphe d'appel de fonctions pour Duniter-V2s afin de founir une vue d'ensemble aux nouveaux développeurs

Salut tous, cela fait un moment que nous cherchons avec @vivou comment participer au développement de duniterV2s, et il nous manquait une vision d’ensemble pour comprendre par quoi nous pourrions commencer (étant donné notre niveau de développeer plutot bas).
Nous venons de réussir à tracer un diagramme des fonctions (static callgraph) en utilisant GitHub - koknat/callGraph: A multi-language tool which parses source code for function definitions and calls
Evidemment le résultat obtenu est plutot touffu, et nous cherchons maintenant à éclaircir cela en nous concentrant par exemple sur les fonctions principales pour commencer.
Ce que nous obtenons pour l’instant peut etre vu ici : Diagrammes UML de DuniterPy - #2 by vivou

Donc si vous savez quelles sont les principales fonctions de duniter, dites le nous et nous les regarderons en priorité, pour essayer de fournir une vision graphique de l’ensemble aux nouveaux venus.
En espérant que cela puisse être utile.

6 Likes

Amusant, je savais même pas, alors que je m’occupe de coordonner un peu les développements de Duniter v2s !

Je pense que la première chose serait de devenir forgeron sur la ĞDev, ça permet de prendre en main les concepts, et c’est important pour pouvoir contribuer.
Ça se passe ici → Apprentis forgerons

Ensuite, il y a plusieurs directions possible à prendre, mais ça dépend surtout de vos compétences et de ce que vous souhaitez faire. Ce serait bien de vous inscrire sur le Recensement des compétences informatiques, qui permet de faire un état de l’existant.

Il y a plein d’autres compétences que celles de développeur. Les explications d’architecture que vous faites sont déjà un bon point de départ. Je vous encourage également à lire les fichiers README présents dans le dossier pallet.

Pour continuer sur les schémas de l’écosystème, ça peut être bien de reprendre et détailler ceux qui ont été commencés ici : Architecture technique Ğ1v2

2 Likes

Bonjour Hugo, Effectivement je ne me suis pas trop montré auprès des dev, j’ai simplement été en contact avec @elois en attendant de trouver un point d’entrée utile.
Merci pour les liens que tu nous transmets, c’est très intéressant, et encore un peu trop vaste pour ne pas s’y perdre. Le mieux sera évidemment que nous venions aux prochaines RML…

En attendant, j’aime beaucoup ce diagramme pour sa clarté :
schema
Par contre je n’arrive pas à faire le lien avec les fichiers et fonctions qui se trouvent sur le git duniterV2s. Serait-il possible par exemple de connaitre le nom du fichier et/ou des fonctions éventuelles appelées (et leur répertoire dans le git) de “DuniterV2 authority” ? ou “DuniterV2 mirror” ?
…car pour l’instant je n’arrive pas à faire le lien entre notre callgraph et ce shéma coloré. (En résumé, il nous manque encore les infos permettant de faire le lien entre les fonctionnalités théoriques de duniter, et les fichiers codés dans le git.)
Si tu as un exemple cela nous suffira peut-être (j’espère) pour démarrer.

Je ne pense pas qu’il soit possible ou pertinent de fusionner ce graphe réseau avec un graphe du code source.

Une autorité n’est qu’un nœud possédant des session keys et inscrit dans la liste des autorités.

RPC public ou privé est défini dans la config du nœud, pas dans le code.

Petit résumé de où on peut trouver les différents éléments :

  • appels RPC (client) : crates suffixées -rpc
  • extrinsics (runtime) : blocs #[pallet::call]
  • runtime : runtime/common, runtime/gdev, pallets, en partie primitives
  • client (tout ce qui n’est pas runtime) : node, en partie primitives

Le même logiciel (duniter v2s) peut avoir plusieurs rôles : forgeron, miroir RPC, archive… C’est pour ça que je vous conseille

Ça me paraît compliqué de chercher à comprendre ce que fait le logiciel sans l’utiliser et voir les places qu’il peut avoir dans l’écosystème.

Ça me paraît encore plus compliqué de contribuer au code de Duniter sans l’avoir jamais utilisé soi-même.

Un exemple de quoi ? Un exemple d’utilisation c’est de forger sur la ĞDev.


Par ailleurs, vous ne pourrez pas comprendre le code de Duniter v2s sans comprendre le code de Substrate, le framework sur lequel il est basé. Il me semble que j’en parle dans mon tutoriel niveau débutant pour développer sur Duniter v2s : docs/dev/beginner-walkthrough.md · master · nodes / rust / Duniter v2S · GitLab

1 Like

Merci pour ces réponses, on essaiera de devenir forgeron et de regarder les tutos…
En attendant, voici pour info d’autres diagrammes que nous avons obtenus (même si leur intérêt peut paraitre limité, nous sommes toujours à la recherche des fonctions principales de duniter).

Appels autour des fonctions contenues dans xtask/src/main-rs ;

et autour des fonctions contenues dans node/src/main-rs