Genesis
2017, a couple of friends, one of which being a long time friend, came up with a request: they need a developer for their project. They want to run intensive computation on MRI images, quantitative MRI, to reveal more information about patient health: interesting and ethical challenge for a developer. I become an associate in SoQut Imaging that we create.
I have been thinking about a software architecture: it involves a data processing scheduler with a standard RESTful API interface and a dedicated server plug-in on each PACS to send data, launch processes and retrieve results in parallel, to and from the scheduler. The scheduler is designed to run processes from the command line so a wide range of code can be used to process data. Compute Web App (or CWA) is born. At that time, my commitment in the association was crystal clear: use this opportunity to work on my spare time on notions that was not part of the duty of my “job as a living” and give advice to the potential operational development team in the long term.
First part has been entirely fulfilled with a long journey in software development by discovering Node.js®, Vue.js, Bootstrap, RESTfull API concept, Django, Flask, Swagger, Docker, development techniques, complex image processing algorithms, etc… I started developing it early 2017 and the proof of concept was achieved end of 2020: the solution was ready with the first release of Compute Web App on one side and a plug-in for Orthanc on the other side, both perfectly communicating to process quantitative MRI data using a Python version, of my own, of a MATLAB® code.
Second part did not really take place as expected. SoQut Imaging Lyon version was closed in June 2021 to re-open in its Bordeaux version in November 2021 without a tiny detail: the developer. Me. Their decision.
Way to Open source
At this stage, I am alone with my software I developed during three years on my spare time, equivalent to half an annual full-time job. This means lot of personal time and, hopefully for me, I have a supportive family. I tried to focus on how can I value this work, learning about software licence options, contract, advertising, etc… I realised this is not my destiny, other people may love doing it and would certainly do it better than me.
Compute Web App has been initially designed for processing large amount of data like quantitative MRI and can address a large number of use cases. After all, why keeping it for me? Thus, I recalled my first intention and published is source code as Open source on April 2024.
I have followed this work by checking cases on features Compute Web App deserves, trying to make a better and more efficient architecture, going deeper in Python code, discovering how wonderful this code and the involved community are, updating all dependencies I have left for years (oh my!).
And this is it, demonstration instance of CWA is available online for who is interested in testing it: demo.soqut-imaging.fr.
Now what?
This journey has just began and so many features would be nice to be added like:
- Improve code, its documentation, the RESTful API one, achieve tests,
- More data process example using various code (C/C++, rust, julia, Fortan, C#, etc…),
- Make multiple instances of CWA communicating together to take advantage of underlying resources, considering resilience and load balancing,
- Use result data in other processes to chain them,
- etc…
This unfortunate association adventure which I transformed in a “++” training on development skills I did not master until then. Now, I hope that CWA will be used and exploited in the respect of Open source.
For the rest, it is here.
