Happy birthday mbeddr 🎉

Today marks the 10th birthday of the mbeddr open-source project. On the 18 January 2012 at 15:07:23 CET, Bernd made the first commit in the mbeddr open-source repository. During that time the project was primarily developed by Bernd Kolb, Daniel Ratiu, Domenik Pavletic, and Markus Völter. mbeddr started as a government-funded research project and was continued as an open-source project by itemis and individual contributors.

It should take another one and a half years until my first appearance in the history of the project. I’m going to use this anniversary to look back and a little bit ahead. This blog post is a much more personal one than the usual more technical and experience-driven ones.

I joined the MPS team at itemis in August 2013, at that time the team was essentially 3 people. For me, it was my first job that involved open-source contributions as part of my work. In my previous software engineering positions, I was a user of open-source software. Sometimes I open-sourced examples or the code of experiments I did as part of my work but nothing that was a real open source project. But in my spare time, I did lots of open source work: I was a maintainer at CyanogenMod, an open-source Android distribution, for the Samsung Galaxy S, S2, and Galaxy Ace. Getting the Linux Kernel to boot on these devices and all the hardware running was a fun challenge.

At the time I join the MPS team time I had used MPS to create prototypes but we would never use it in production. We often took the ideas we generated by experimenting with MPS and implemented them with a different technology stack for production use.

Soon after me, Sascha would join us with his awesome work on the tables and rich-text editors for MPS. He would soon be starting his work on the diagram editors. I for myself was working on various mbeddr extensions for customer projects. Through my work on mbeddr, I had the opportunity to write a magazine article about mbeddr. A thing I was utterly excited about. With the help of Bernd and Markus, I wrote for the german iX magazine. I still have a copy of the issue.

Over the next years, we would slowly grow the team, primarily by recruiting people internally and persuading them to join the MPS rebellion. During that time we did endless talk and publications about mbeddr and MPS to push the technology we all believed in forward. We likewise created the “mbeddr platform” as reusable artifacts. We wanted to help others to build their own tools based on MPS. MPS-based customer and research projects in various domains were funding our open-source platform efforts at that time.

During those times my main work was on customizing MPS. So that it doesn’t look like as much as an IDE as it usually does. I streamlined our build infrastructure and was writing complex model-to-model transformations for a controls engineering product based on MPS. It was the time were we as the mbeddr team largely shifted our focus from the mbeddr c part to the generic platform components.

Over the years we tried several approaches to import C code into mbeddr. From LLVM over commercial tools until Tamas finally got grip on the problem and managed to create something that worked for us based on TypeChef.

Today it has become silent around mbeddr, the last news entry on the website is from 2016. Does it mean mbeddr is dead? By no means! The C part of mbeddr is alive and in use but hasn’t gotten new features for quite a while. The reusable platform parts of mbeddr have moved to a new home in the MPS-Extensions repository which we created in 2018 together with JetBrains. Most of the platform is maintained there now. The mbeddr repository still hosts some reusable parts like the interpreter framework where there is active development. The codebase gets regular migrations to new MPS versions and bug fixes.

Many of the ideas and experiences we gained while building mbeddr have influenced other open-source projects like IETS3. IETS3 is using the platform components. I think the most valuable experience from mbeddr is by far: how to build consistent text like projectional editors. Which in itself lead to the development of grammar cells by Sascha to make creating such editors much easier.

I think it is fair to say that the success of the mbeddr C implementation was not what I had hoped for. Embedded software engineering is a conservative domain that isn't easy to convince of new technologies and tools even if they provide obvious benefits. Workflows and processes in these domains, especially when safety-critical, were crafted over decades and aren't easily changed. A small group of people with crazy-sounding ideas and no large reference project to back these claims isn't exactly the perfect vehicle to introduce such change either.

Why is nobody using it if it's so great and provides such benefits?

This should become the de facto mantra we were faced with in many language engineering projects in the future. It has taken great efforts and commitment by everyone in the community to build a track record of successful projects to prove that these things actually work. We are only now seeing this less and less of a problem. 10 years into the journey.

But in retrospect, all of this was quite successful. We have moved MPS, together with JetBrains, from a total niche tool used by just a handful of people to a viable language engineering option used by many projects. We have grown the team at itemis from three to now more than 25 people. I’m by no means saying that this is my achievement alone. All of this has been a teams effort by the enthusiasts that believe in MPS and projectional editing! Over the years mbeddr and MPS allowed me to work with tons of talented and motivated people like Bernd, Dan, Domenik, Joao, Markus, Sergej, and Tamas. And of course Alex and the MPS team at JetBrains. But two people stand out from that group: Bernd and Markus. Both of them were early believers in the idea and pushed it forward! Thank you for putting your time and energy into this project and making it possible! You both have been great mentors over the years that help me to learn and grow inside the team.

From a research perspective, mbeddr and the MPS platform have been a huge success: over 30 papers were published, at least three Ph.D. were awarded and to my knowledge four master/bachelor thesis written in the context of the project.

Now you might ask: What is next? This sounds like a farewell message to the project and MPS?! And yeah it kinda is, at least for me personally. I won’t be leaving the ecosystem or MPS completely but my focus will shift. MPS will of course stay inside my toolbox and I will continue to work with it. It would be strange to offer MPS mentoring and not a month later decide to leave MPS alone. 🤨 But the next big step, as you might have guessed is the web.

From this year on my primary focus will be on modelix. The open-source language engineering platform we are developing at itemis and the community. MPS is an integral part of the platform for the language engineer to create languages. At runtime, we are moving to different technology stacks.

Why this shift? Is MPS dead? By no means it is. MPS and its ecosystem are healthy and more people than ever are using it. For me after over 8 years as my primary tool, it’s time for something new. I don’t want to be the most experienced person in the room, well virtual rooms these days, anymore. I want to have the challenge of learning and understanding new things.

My goal is to replicate what we did with MPS and mbeddr as part of the modelix team. I want to grow a team and business around the technology at itemis. But most importantly I want to build a community around the project early on, an aspect that we missed in mbeddr and MPS extensions at the beginning.

If you liked the content consider subscribing to the email newsletter below. The newsletter delivers all posts directly into your inbox. For feedback on the topic feel free to reach out to me. You can find me on Twitter @dumdidum or write a mail to kolja@hey.com.