MidPoint 1.7 “Prometheus” was released exactly ten years ago. It was the very first midPoint release, yet the code had an interesting history behind it. This is a story of the first release, going back a decade.
In early 2011 we have ended up with a bunch of code that was developed in OpenIDM project. Our team participated heavily in OpenIDM v1 development. Yet, the OpenIDM development was suddenly stopped in February 2011. There was the code, there was a team that created majority of the code, there were skills, there was will to do something. So we did. We started midPoint project.
We created midPoint as a completely new code base. There was new project structure, new build system, new skeleton, new wiring, we created a completely new application. Then we took the OpenIDM code that we had authored during previous year, heavily reworked it, removed dead parts, added missing pieces and attached it to our new application. Surprisingly, this was easier than expected. I may think that it was easy because I did a good job setting up code architecture in the first place. However, it is much more likely that we have got the right team with the right skills and motivation, a team that was familiar with the code. One way or another, in May 2011, just eight days after official start of the project, we were ready for our first release.
At that time we were afraid that OpenIDM project is dead. There were no source code commits to public OpenIDM repository for several months. We did not know what is going on behind closed doors. That uncertainty was also one of the reasons that we have delayed official start of midPoint project. In May 2011, we were finally convinced that nothing is going to happen in OpenIDM, and we have moved ahead with our plan. As we believed that OpenIDM 1 code was abandoned, we have code-named our first release Prometheus. This was a very symbolic name, as we wanted to bring the “fire” to the people. Similarly to the Titan Prometheus, we wanted to bring back the OpenIDM v1 functionality to the community, albeit in a vastly reworked form. That was also a reason to start with midPoint version 1.7 instead of 1.0. OpenIDM 1.6 was the last released OpenIDM version. We have taken the code of unreleased OpenIDM 1.7 and integrated it into midPoint. Therefore we tried to maintain some continuity and symbolically started with midPoint 1.7 release.
MidPoint 1.7 “Prometheus” was here. This was a huge achievement, despite being far from the ideal. The code was not exactly production-ready, the documentation was pretty much non-existent and even the release notes left a lot to be desired. Also, please note the elegant retro gradient and charming colorful icons in the screenshot above. Yet, the code somehow worked. This was a start, but quite obviously, there was a lot of work ahead of us. We had to learn how to run a project, doing everything ourselves.
Prometheus was followed by several releases in a quick succession, according to the “release early, release often” mantra. The code base grew, old code was continuously reworked, new code was added. In two following years, we completely moved away from OpenIDM past, reworking all the legacy code. That lead to midPoint 3.0 “Newton” release in 2014, which was one the most important milestones in midPoint history. That was the point when midPoint got the form that we know today. Yet, it was Prometheus, released ten years ago, that got us started this journey.