Généalogie

J'ai été amené à travailler sur la généalogie en construisant mon arbre généalogique.
Je me suis vite rendu compte que les logiciels classiques de généalogie ne me conviennent pas, pour plusieurs raisons :
  • Ces logiciels utilisent en général des bases de données pour stocker l'information. Les utilisateurs sont donc obligés de passer par des interfaces graphiques pour saisir et modifier leurs données, et je n'aime pas ça. Je préfère utiliser directement un format texte, ce qui me permet de versionner et faire des sauvegardes facilement, de la même manière que lorsque je programme.
  • Tous ces logiciels utilisent le format GEDCOM pour importer ou exporter les données. GEDCOM est un format texte, mais il n'a pas été conçu pour être édité directement "à la main".
    De plus, GEDCOM permet d'exprimer un certain nombre de choses fixées dans la norme, mais ne suffit pas à exprimer toutes les notions que j'ai rencontré en faisant ma généalogie (par exemple, il n'existe pas de tag GEDCOM pour exprimer une union libre ou un PACS).
    Pour pallier à cette limite, la plupart des logiciels définissent des extensions de la norme. Malheureusement, chaque logiciel définit sa propre extension, ce qui limite la compatibilité des logiciels entre eux.
J'ai donc décidé de construire ma propre syntaxe pour fabriquer mon arbre, ce qui me permet à la fois de saisir les données directement dans un éditeur de texte, et de rajouter les notions nouvelles qui apparaissent. Cette syntaxe est décrite dans la page Syntax jth1 (en anglais).

J'ai donc pu construire mon arbre par programme en aggégeant différentes données :
  • Fichiers YAML que j'ai saisi moi-même à partir des actes d'état-civil en utilisant la syntaxe jth1.
  • Fichiers YAML générés par des programmes aspirant des pages web contenant des informations sur des ancêtres ; les informations sont extraites et exprimées dans la syntaxe jth1.
  • Fichiers GEDCOM que m'ont donné des gens de ma famille.

Pour développer la syntaxe jth1, j'ai utilisé de manière assez intensive la spécification de la norme (GEDCOM 5.5.1). Ce document (PDF) n'étant pas très pratique à utiliser, j'ai généré des pages html contenant la liste des tags, classés par ordre alphabétique ou thématique :