Yesterday, the Eclipse Virgo project was given a last minute reprieve, as several people put their names forward to prevent Eclipse Virgo from being archived at Eclipse. The Eclipse Virgo project, which grew out of SpringSource's dm Server, had been run by Glyn Normington through its contribution and lifetime at Eclipse. As InfoQ covered in August, Glyn had to step down from the project, and for a while it looked like Eclipse Virgo might be archived. Fortunately, several people have expressed an interest in the project continuing, including several offers to help maintain key components and run the project.
InfoQ caught up with Glyn to ask him about Eclipse Virgo, and started by asking where it came from and how it ended up at Eclipse:
Normington: The Virgo project started life at the end of 2007 as the SpringSource Application Platform. Later it was renamed to SpringSource dm Server. The goals of the project were to provide a better OSGi platform which would be modular and extensible and to simplify the migration of Java EE applications to OSGi. Version 1.0 shipped at the end of 2008 and version 2.0 at the end of 2009.
We decided to move the project to Eclipse to increase adoption and encourage collaboration with other vendors, particularly on the Eclipse-based tooling. We announced the move in January 2010. Later that year dm Server won the Eclipse Community Award for best RT application. Since then we have collaborated with a number of vendors and individuals and added a number of skilled committers who have made major contributions.
InfoQ: Who is using Virgo in the industry at the moment?
Normington:
- SAP use Virgo as the Java server in their SAP HANA Cloud PaaS platform, which has been certified against the Java EE 6 Web Profile TCK. SAP committers have made major contributions to the Virgo runtime as well as the tooling via the Eclipse Libra project.
- VMware use Virgo as a web server in their vSphere product.
- CME Group have three applications running on Virgo with a fourth one coming soon.
- Croatian Telecom host several end-user and internal-use-only applications on Virgo.
- Infor shipped their ION integration product based on the Virgo kernel.
- The Konekti platform for web application development uses Virgo as its web server.
- Virgo was even used by the TINOS research project as a way of isolating experimental network stacks from each other in a single JVM.
InfoQ: What different packages of Virgo are there, and which users/applications/demographic are they aimed at?
Normington: Virgo is built from a tiny OSGi microkernel known as Virgo Nano. This is aimed at DIY shops who want a more rounded OSGi container than straight Eclipse Equinox (the base for Nano). Nano provides extensive diagnostics and a fully-functional web administration console as well as a JMX interface and a ssh/telnet console. Nano also supports hot deployment by dropping bundles into a 'pickup' directory and Declarative Services as a way of enabling bundles to communicate via "microservices".
The Virgo Kernel package adds multi-bundle modularity constructs to Nano, it isolates user applications in a "user region" separated from the kernel itself, and it adds OSGi Blueprint Service and Spring programming models.
There are then three web server packages. Virgo Nano Web adds an Apache Tomcat based web server to Nano. Virgo Server for Apache Tomcat adds the same Apache Tomcat based web server to the kernel. Then there's the kernel-based Virgo Jetty Server for users who prefer Jetty to Apache Tomcat.
Virgo also ships a "Snaps" framework for use on Virgo Server for Apache Tomcat. Snaps enables web applications to be modularised so that individual bundles serve up content for distinct sub-portions of the application's URL space.
In general, Virgo is mature and fully featured and so is usable across a wide variety of applications whether as a modular web server or as a runtime kernel.
InfoQ: Is it necessary to use Spring with Virgo?
Normington: No. Virgo Nano and Virgo Nano Web are independent of Spring. Also applications for the kernel-based Virgo packages don't need to use Spring. They may prefer to use OSGi Blueprint Service as a "microservice" programming model, for instance.
InfoQ: How does Virgo compare with other bundles, like Apache Karaf?
Normington: Roughly speaking, the Virgo Kernel has a similar level of function as Apache Karaf. They even share some components such as the Gogo shell.
InfoQ: You're stepping down from the Virgo project lead. Has there been interest in following it up from some of the commercial users?
Normington: Some users have expressed the desire to see Virgo continue. I estimate that over the past few months, it took me about half a day a week to keep the project ticking over, respond to user queries, etc. I have offered to help anyone who wants to step forward to get them comfortable with the role. It's not that onerous given the skilled committers that the project has.
InfoQ: Why did you step down?
Normington: I now work for Pivotal which is developing a PaaS. Although it's possible to run Virgo on a PaaS, there isn't a natural fit between fine-grained modular OSGi applications with the capability to dynamically start and stop individual bundles and the PaaS model of launching an application with a single "push" operation. Pivotal is operating a bit like a startup and so I can't afford the time to keep working on Virgo.
InfoQ: What are you moving on to do?
Normington: I am working on the Cloud Foundry open source PaaS, developing "buildpacks" for running Java applications. These are written in Ruby, which is fun.
InfoQ: Since Oracle have granted TCKs to test Virgo and EclipseLink, is there anyone who will be following that up and gaining certification, or is that on hold until the next lead takes over?
Normington: It's on hold until there is a new project lead. There is a bit of legal work required by any new project lead and their company. But the technical work should be straightforward given that SAP have already certified their HANA Cloud platform.
InfoQ: What's happening to the SpringSource Enterprise Bundle Repository?
Normington: We've helped to launch the Eclipse Bundle Recipes project, which IBM now leads. This is aimed to provide a community-based source of high quality OSGi bundles. We contributed manifest templates from the SpringSource Enterprise Bundle Repository so that these are available to anyone who wants to use them. We've now frozen the content of the SpringSource Enterprise Bundle Repository but are keeping it available for at least one year.