Unrealistic, childish dreams show up even far into a career. I can imagine binaries all playing nicely together, no API entanglements, no version overlaps. No Binary Hell.

We all sing 'Kumbaya' together, and the world is a better place!

OSGi was that promise for me. I even experienced the productivity benefits first hand. As a product manager for a major Eclipse release. OSGi kept 700+ competing Eclipse modules in their classpath sandboxes, and it all worked great. 16 major releases in less than 12 months.

I was convinced. OSGi would be taking the world by storm! And I would be a part of it. Little did I know...

I wasn't the only one. Rod Johnson, then of SpringSource, had made a similar bet. NFJS had lots of sessions on OSGi. Virgo was an active Tomcat release, featuring an OSGi container at it's core. Momentum was on our side. One friend lovingly called this OSGi thing "SOA in a JVM".

Introducing MJWA

I created, used and steadily improved MJWA for years. Modular Java Workspace Administration. You maintain a couple of easy metadata files, and presto-change-o you can easily separate your workspace into logical projects - or OSGi modules - and code in little, purpose specific modules. All the boilerplate is generated for you. Even adding a module later took seconds.

I learned all about what worked and what didn't work about classpath based modularity. 

I learned how to automate practically everything, even releases.

I even learned how to keep interfaces and domain and utility modules linked without cyclical dependencies, especially for sharing between the other, more downstream modules. If one pays attention, all of this is obvious. it just takes time and experimentation.

I never released MJWA

  1. The world was beating a hasty retreat from all things OSGi.
  2. I was spending more time on this than I had originally budgeted for.

So MJWA never saw the light of the marketplace outside my door.

To cite an example of how impractical my goals were, I did take OSGi to one shop where I already had a contract, but things were so cowboy there, that even doing unit testing was a bridge too far. Bringing OSGi into a such an environment was a no go, so I quickly retreated.

Modularity - It Really Works

Watch the video, you can get some idea of how easy it is. The code is a bit crusty, I haven't maintained it much in recent years. I'll bet the groovy tools are way out of date. And MJWA is scripting, not production code, so it never was really intended as hard-core stuff.

But it still works pretty well, and I still prefer modular approaches to code development, for some odd reason. Even just putting unrelated code into separate maven projects (instead of just separate packages) still gives my Asbergers-like self some degree of relief from the Ball of Mud Pattern.

SMOSLT as Both Good and Bad Example

Look no further than my own SMOSLT project for everything that is good and bad about this modular approach. 

Examine the code base. Critics could easily claim that it is "template-ware" and way too heavy. And lots of the templates that are there, are not even used - a leftover from when I was not only using OSGi, but Spring-OSGi. That's a dead duck, if there ever was one - Spring OSGi.

What Happens When Jigsaw Shows Up?

Project Jigsaw is Java's own version of OSGi for the java environment. It was supposed to be release with Java 8, but was put off for Java 9.

Personally, I wouldn't be surprised if Jigsaw never came out. Because you have to be quite intentional, with metadata, about which things get to be in a classpath with which other things. Modularity asks more of the developer than other approaches. I could easily imagine how this could kill a whole flock of golden gooses.

But that's mere speculation on my part. And my ability to speculate accurately - at least in this area - is not so well refined.

Undocumented, Incomplete - MJWA 2015

There it is in all it's glory, folks. No guarantees, no explanations. Little or no documentation.

Of course I'd be happy to help, should you wish to buck every trend and actually go modular in your app development efforts. I do love modularity. But that's not my motive for releasing it, here and now. 

I just had to let it go where it wants to go. Maybe that's into the ether. It doesn't matter, it's out of my hands, now. It's been over 5 years.

I'm good with that.