CloudStack is built as a product with modularity enforced by interfaces. It had its own component management via ComponentLocator. While that framework made it easy for a small group of developers to work together, it has outlived its usefulness. Now that we are expecting more developers to join Apache CloudStack, we're looking for the next component framework to scale code development. This framework needs to manage the following: - life cycles of the components - enforce boundaries between components - easily allow components to be upgraded/downgraded - database upgrades for the component
The most successful of such an application is Eclipse, which uses framework defined by OSGi. We're planning to use that for our component framework. I like to gather opinions about 1. Whether to use OSGi or there should be other frameworks to consider? 2. If OSGi, whether to use Equinox or Apache Felix? 3. The tool to help integrate the OSGi framework into tomcat (Sling?) 4. Anything we can use to upgrade/downgrade database versions? Please let me know your feedbacks. --Alex