This is a very timely discussion indeed… I had a recent discussion with several others in the jclouds community about how interesting it would be to rework Cloudstack on an osgi component model. So it seems this is not just a fantasy? ;-) I would love to help with this effort so I will happily participate in the discussion.
Addressing some of your specific requests inline below… -- Chris Custine On Tuesday, May 29, 2012 at 10:29 PM, Alex Huang wrote: > 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? Personally, I would absolutely love to see osgi explored. We have been using osgi with great success for ServiceMix for several years and have learned volumes about the ins and outs. For a controlled server environment like Cloudstack, I think it would be ideal. There are some learning curves, and some extra work involved, but the rewards are plenty. > 2. If OSGi, whether to use Equinox or Apache Felix? > > I am biased having been involved with Felix and Karaf for many years, but I would encourage you to look at Karaf and Felix as a base for the container (eplained more below). You will get assistance from within the Apache community by way of Karaf, Felix, and several other projects that also use these frameworks (Geronimo, Camel, Sling, probably many others now) and those projects will mutually benefit from input and contributions via Cloudstack. > 3. The tool to help integrate the OSGi framework into tomcat (Sling?) > > I recommend considering an inversion of this and instead look at hosting your web server inside the osgi container (or something along these lines). In this way, agents and servers could be modularized similarly. You can certainly use an osgi framework to provide modularity embedded in a standalone java app or Tomcat, but I think you will find a lot of rewards in bootstrapping your jvm with osgi as a container (see Karaf, ServiceMix et al). > 4. Anything we can use to upgrade/downgrade database versions? > > Not exactly sure what you are asking here, but if you mean DB migration, I can;t think of anything osgi related that applies here so I think you will have to roll your own solution. > > Please let me know your feedbacks. > > --Alex