The lessons of restructuring plugin-based software
Developing systems out of a set of Eclipse plugins (or OSGi bundles) does not necessarily mean your software is wellmodular and nicely structured. We learned this through experience as we restructured the SpringSource Tool Suite into a set of smaller and largely independent projects. We always assumed that our set of plugins was nicely structured and well modularized, so shifting projects around and splitting things up should be easy. But it wasn't. By far not.
In this talk we reflect about the process we went through and extract the interesting and challenging issues we had to face with plugin modularity. Those issues include:
- unexpected and transitive dependencies (the dependency graph is more complex than you think!)
- implicit and non-compiler checkable dependencies between plugins (ever used the ID of a nature, a view, or a builder somewhere?)
- incrementally restructuring a system while keeping it running (one step at a time, but in what order?)
- challenges of migrating project/workspace/user data
The goal of the talk is to share our experiences with the audience in order to help them to avoid these pitfalls in their own plugin-based software.