Skip to content

A brief history of time

Niels Dekker edited this page Jun 21, 2024 · 6 revisions

The development of elastix started half to late 2003. At that time it was intended to facilitate the image registration research we did at the Image Sciences Institute, under supervision of Josien Pluim. elastix was small scale and we did not consider making it available at a wider scale. Those days we used CVS for version control! We soon switched to subversion in September 2004. With the initial versions of elastix we played around with different software structures, and finally decided for the components-based organization you still find in elastix today. elastix was still quite monolithic however, and to improve the compilation burden we decided to put the separate components in separate libraries. This resulted in major version 3.0 in November 2004. At that point we felt comfortable releasing the software, so we created a website with help of Gerard van Hoorn and released elastix.

In those first few years we stabilized the software, making it much more robust and user-friendly. We started a scheme of regular releases, occasionally refactored small parts of elastix, and started to pay attention to memory usage and runtime performance. As a result we learned a lot about programming, compilers, and best software development practices. Our research was consistently implemented in elastix, giving us a nice vehicle for experimentation. Everything was steady, and still mostly focused on our own needs.

Around 2008 / 2009 we became more and more aware elastix could be useful for a larger community and started to work on outreach. Stimulated by Max and Josien, we created a first version of a manual and generally improved documentation on the website and in the code (using doxygen). We (finally) adopted a real software license, the BSD license, to tidy everything up. We decided to write a paper about elastix and stimulated by the reviewer comments we created a mailing list and a database with good registration parameter settings for specific applications (around April 2009). Especially the mailing list has proven to be important for growing a community, getting great feedback, and a good place for sharing ideas and user support. November 2010 we opened up the SVN repository for reading. In May 2017, we moved elastix and the complete development structure to GitHub. We believe this step makes the development process more transparent, and makes it easier for everyone to get fixes, changes and features into elastix.

// when did people starting to contribute to elastix? first small commit, first big real component?

Major changes in the period 2008 - 2017 are that in 2008 (v3.9) we started to use statically linked components instead of dynamic. In 2009 we moved the svn repository from the ISI to a BIGR-hosted server and got the paper accepted. In 2010 (v4.4) we started including GPU accelerations using CUDA, and 4D groupwise registration was added by Coert Metz. Only in 2011 we initiated nightly testing using CDash. 2D/3D registration was contributed in v4.5 by Martijn van der Bom. 2014 (v4.7) brought us multi-threading to the core parts of elastix, substantially accelerating the registration. Where elastix used to be a solely commandline driven program, a library interface was contributed by Chris Bouwman and improved by Coert Metz in 2014. This allowed elastix to become embedded in other software, and integration in commercial software started then. Today, we know elastix is adopted by the Philips Imalytics software, by Pie Medical Imaging, Quantib and Medis medical imaging systems bv , and in the open source image analysis and visualization platform Slicer3D (YouTube demo). Kasper Marstal created SimpleElastix in 2015, thereby making elastix natively available in many scripting languages. In v4.8 (2015) we switched to the more modern Apache 2.0 license. OpenCL was also adopted in favor of CUDA, with a much more mature GPU offloading architecture.

elastix repository statistics

Just for fun, we generated a movie of the commit activities in the elastix svn repository from 6 September 2004 until 20 October 2009. The movie was generated using Code Swarm and can be downloaded from here (high resolution) or here (low resolution).

The ohloh project provides some more statistics.