Un peu d’histoire…

Génèse

2017, deux amis, dont un de longue date, me sollicitent : ils ont besoin d’un développeur pour leur projet. Ils veulent traiter de façon intensive des images IRM, IRM quantitative, pour en faire sortir plus d’informations sur la santé du patient : défi intéressant et éthique pour un développeur. Je deviens donc associé de SoQut Imaging que nous créons.

J’ai alors réfléchi à une architecture logicielle : elle est composée d’un ordonnanceur de traitement de données exposant une API RESTful et d’un plugin pour chaque PACS conçu pour envoyer les données, lancer les processus de traitement et récupérer les résultats en parallèle, vers et depuis l’ordonnanceur. L’ordonnanceur est conçu pour lancer des programmes en ligne de commande permettant l’utilisation d’une grande variété de codes. Compute Web App (ou CWA) est né. À cette époque, j’étais clair sur mon engagement dans l’association : me servir de cette opportunité sur mon temps libre pour explorer des notions qui ne faisaient pas partie des missions de mon contrat dans une entreprise, et conseiller une potentielle équipe de développement à plus long terme.

La première partie a été honorée avec ce long voyage dans le développement logiciel en découvrant Node.js®, Vue.js, Bootstrap, le concept d’API RESTfull, Django, Flask, Swagger, Docker, des techniques de développement, des traitements complexes d’images, etc… J’ai commencé ce développement début 2017 et la preuve de concept a vu le jour fin 2020 : la solution était prête dans sa première version de Compute Web App d’un coté, et un plugin pour Orthanc de l’autre, communiquant parfaitement l’un avec l’autre pour traiter des données d’IRM quantitative avec une traduction, de mon cru, d’un code MATLAB® vers Python.

La deuxième partie ne s’est pas vraiment déroulée comme prévue. La version Lyon de SoQut Imaging a fermé en juin 2021 pour ré-ouvir dans sa version Bordeaux en Novembre 2021 avec un détail manquant : le développeur. Moi. Leur décision.

La route vers l’Open source

À ce stade, je me retrouve seul avec un travail qui m’appartient : un logiciel développé sur mon temps libre, équivalent à un mi-temps plein étalé sur 3 ans. Ça représente beaucoup de temps personnel et, heureusement pour moi, j’ai une famille qui me soutient. J’ai essayé de voir comment mettre ce travail en valeur, me renseignant sur les options de license, les contrats, la publicité, etc… J’ai réalisé que je n’étais pas fait pour ça, alors que d’autres adoreraient le faire et le feraient bien mieux que moi.

Compute Web App a été initialement conçue pour traiter de grandes quantités de données d’IRM quantitative et peut adresser un nombre important de cas d’usages. Aprés tout, pourquoi le garder pour moi ? Je me suis donc rappelé de mes premières intentions de 2017 et j’ai libéré le code en Open source en avril 2024.

J’ai continué le travail en complétant les fonctionnalités que Compute Web App mérite, me concentrant sur une architecture meilleure et plus efficace, me plongeant dans le code Python, découvrant à quel point lui et sa communauté sont fascinants, mettant à jour des dépendances que j’ai laissé de côté pendant des années (Damn !).

Et ça y est, une instance de démonstration de CWA est disponible en ligne pour ceux qui voudraient la tester : demo.soqut-imaging.fr.

Et maintenant ?

Ce voyage commence juste et bien d’autres fonctionnalités sympathiques restent à rajouter:

  • Améliorer le code, sa documentation, celle de l’API RESTful, finir les tests,
  • Plus d’exemples de processus écrits dans des codes variés (C/C++, rust, julia, Fortan, C#, etc…),
  • Faire communiquer plusieurs instances de CWA pour distribuer les charges de calcul, avec résilience et optimisation de charge,
  • Considérer les données de résultat comme entrées pour d’autres processus et ainsi les chaîner,
  • etc…

C’est une malencontreuse aventure d’associés que j’ai pu transformer en formation « ++ » sur des domaines de développement que je ne connaissais pas jusque là, et j’ai maintenant l’espoir que CWA sera utilisé et ce dans le respect de l’Open source.

Pour la suite, c’est ici.