Un drôle d’outillage (épisode 8)

Publié le par Paddygenéalo

Alors, c'est vrai, l'épisode précédent, c'est à dire le numéro 7, date un peu. Il date même beaucoup puisqu'il a été publié ici même en 2015!

Un petit résumé, tout petit, des épisodes précédents s'impose donc. Quand j'ai commencé à construire un arbre généalogique, je ne savais même pas qu'il existait des outils informatisés pour cela. Alors, j'en ai construit un moi-même. C'est vrai, c'est un peu mon domaine, ou plutôt ça l'était car si je suis bien ingénieur, si j'ai bien exercé dans ce secteur, il y a belle lurette que je n'ai plus fait directement de développement logiciel de manière professionnelle, disons, même en comptant les années où j'avais une position d'encadrement (certains diraient "managériale"), depuis une petite vingtaine d'années.

Certes, les techniques ont évolué, mais pas les principes de base. Or justement, mon "drôle d'outillage" n'a pas tellement respecté ces principes dont le premier est certainement de savoir où l'on va, de partir du résultat visé pour concevoir et ensuite produire. J'ai fait tout le contraire, sans doute inconscient au départ de l'ampleur de ce que je cherchais à réaliser. D'ailleurs, l'objectif a changé en cours de route: au départ, entre autres, je ne prévoyais pas d'alimenter un site comme Geneanet, via un gedcom. D'ailleurs, je ne savais ni ce qu'était un gedcom ni que Geneanet existait.

Comme je l'ai dit dans les épisodes précédents, j'ai d'abord voulu noter mes ancêtres directs, et très vite j'ai compris qu'il fallait les identifier, et j'ai réinventé la numérotation sosa, en commençant à zéro et non à 1 en bon ancien matheux... Puis j'ai ajouté quelques couches, pour les collatéraux puis pour leurs descendants et tous les autres.  Et ainsi, en 2015, alors que mon arbre devait au plus compter quelques centaines d'entrées, j'avais un outil très personnel, gratuit, et qui me procurait en plus le plaisir d'aller le modifier si jamais cela était nécessaire.

Et il a bien fallu modifier. Comme par exemple lorsque des descendants d'ancêtres ont eu la drôle d'idée de se marier les uns aux autres. A leur décharge, ils n'étaient même pas parents entre eux, juste avec moi. Un nouveau code, quelques lignes de programmation et hop, le tour était joué. Cela s'est renouvelé quelques fois, comme lorsque je me suis aperçu qu'il était utile de pouvoir créer l'ascendance d'un individu qui épousait un cousin, ne serait-ce que pour ces mariages doubles où le frère épouse la soeur du mari de sa soeur.

Ainsi, au fil du temps ai-je ajouté quelques fonctions lorsqu'elles sont devenues nécessaires. Mais voilà, ce qui était bien avec quelques centaines de feuilles est devenu très fastidieux, avec une production de gedcom prenant très, très longtemps. On en était rendu à la vingtaine de minutes. Jamais je n'aurais accepté cela d'un logiciel du marché.

Alors, vers la fin du mois dernier, profitant de ce chômage partiel qui va durer encore(1), je me suis dis qu'il fallait agir. Et modifier la façon dont je produisais le gedcom. L'autre solution, qui est celle des géants du logiciels, aurait été de remplacer le matériel (un très vieux Thinkpad SL510, eh oui il y en a encore). C'est cher et je n'en ai pas l'utilité par ailleurs. J'aurais aussi pu augmenter un peu la mémoire, mais ça, je l'ai déjà fait et il ne me reste pas beaucoup de marge. Alors, j'ai choisi de m'amuser un peu et de redevenir développeur, comme un pro.

Une première analyse que j'ai pu mener en introduisant quelques marqueurs dans mon logiciel, pour mesurer le temps passé à chaque étape, m'a montré que si le parcours des ancêtres directs, puis des colatéraux, restait acceptable, c'était bien la dernière partie, celle qui traite tous les autres, qui était lourde, mais alors très lourde.

Je me suis donc plongé dans le code et j'ai pris des mesures drastiques. Si la production des individus est restée à peu près inchangée, celle des familles (les tags "0 @xxx@ FAM" dans le gedcom) a été complétement refondue. En pratique, je suis passé d'une imbrication des deux processus à deux étapes séparées et donc optimisées chacune pour elle-même. Et au final, j'ai divisé par 10 le temps nécessaire à la production d'un gedcom. Tout en vérifiant quand même que je n'avais rien perdu en route!

Il est bien sûr possible d'améliorer encore cela. Mais je n'en éprouve pas le besoin: mon logiciel est à usage personnel et jamais personne d'autre ne l'utilisera. Il n'est pas fait pour ça, ce n'est certainement pas du développement "pro". J'accepte par exemple les bugs, il y a pleins de détails qui devraient être changés pour que ce soit déjà partageable mais ce n'est pas le but.

A vrai dire, si je démarrais ce développement aujourd'hui, avec une expérience généalogique bien plus grande, j'opterai pour des solutions techniques différentes. Et même si j'optais pour le maintien de l'infrastructure tableur, il est fort probable que je structurerais l'ensemble bien autrement. Je garderais probablement mes systèmes de numérotation pour les ancêtres et collatéraux, ou quelque chose de proche. Et sans doute aussi la numérotation variable pour tous les autres, que j'ai mise en place un peu par hasard et qui s'avère assez puissante mais je pense que j'opterais pour des indexations supplémentaires, même si, parce que les bases professionnelles bien enseignées(2) et donc bien acquises ne s'oublient pas, j'ai dès le départ créé les tables qui me semblaient nécessaires.

Je suis satisfait d'avoir mon propre logiciel. De temps en temps, je m'amuse à le modifier et d'ailleurs cette refonte partielle pour améliorer la performance m'a bien plu.

C'est sympa le logiciel en amateur.

  1. Et non, je ne suis pas retraité mais mon secteur professionnel, le transport aérien, est durement touché par la crise du Covid et nous sommes en activité très réduite, probablement pour les deux années à venir...
  2. En écrivant cela, j'ai une pensée pour certains de ces enseignants, partis trop tôt, comme Philippe Facon ou Alain Cabanes, ou encore notre trésorier perpétuel de l'AS qui était d'abord le secrétaire général de l'école, M Gravelin. Que les autres sachent que je ne les oublie pas, même si je ne les cite pas ici. Et puis, parce que les temps sont durs, je vais aussi rappeler la campagne de levée de fonds de l'ENSIIE
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article