Osmorc

I started using JetBrains’ IDEs before they called themselves JetBrains. I think that was in 2001 or maybe 2002. Back then and until now I preferred those IDEs over any other IDEs, but in many projects I had to use Eclipse because that was what the customers for whom I worked on site used. In such settings you’re not allowed to bring your own tools.

Although I didn’t like Eclipse I came to like its plugin system as we used that as one of our basic building blocks in a big project. I thought that many applications would gain in maintainability and extendability by using it. Problem was that IDEA had no support for this system. So I set out to create a plugin to add that support.

I realized that the names of my former IDEA plugins were boring and came up with the name Osmorc which is an abbreviation for “OSGi Module Layer and Eclipse RCP support”. OSGi is the base for that plugin system and has provided a module system for Java long before anyone there came up with an idea about the Java Module System. Eclipse RCP extracts that plugin system and makes it usable outside of Eclipse.

The first mission was to provide editing functionality for the manifest extensions provided by OSGi. This was a fun part of the project as I learned to write a lexer and parser and syntax highlighting for an admittedly simple language. Even with those extensions manifest files are simple compared to normal programming languages. Somewhat more complicated was transforming the dependencies stated in the manifest file into IDEA module dependencies.

The next task was to enable running OSGi applications from IDEA. Somewhere at that point I was joined by a collaborator who had an interest in adding support for Maven based OSGi configurations. We added support for Eclipse RCP, Felix and some other OSGi frameworks and Maven support was also added a bit later.

I wrote blog posts about the initial release and about when Osmorc won a prize in an IDEA plugin contest.

After that prize we got contacted by JetBrains. They wanted to bundle the plugin in regular IDEA releases. We were amazed and naturally agreed. We also got a direct contact with an IDEA developer whom we could ask questions. Back then IDEA’s plugin API was not as extensive and well documented as it is now.

Code I wrote for Osmorc is actually the oldest of my code I know of that is still around even after 10 years. Osmorc is still bundled in current IDEA Ultimate releases. And someone seems to still maintain it although I don’t know who and how. I left Osmorc when my interest shifted away from Java to developing iOS apps.