A forthcoming case study from Atlassian looks at Ensemble, a project jointly developed by NASA’s Jet Propulsion Laboratory (JPL) in Pasadena, CA and the Ames Research Center near San Francisco. It’s described by the space agency as: “a platform for the development, integration, and deployment of mission operations software that can be reconfigured or upgraded as required during the course of a mission.” In other words, it’s an agile software platform for rocket scientists.
[Update: the case study is here]
Ensemble, founded in 2004, is used for mission planning software, parsing raw data sent to earth from unmanned spacecrafts and visualizing travel paths of those machines. Ensemble’s biggest current project is a Mars rover called “Curiosity,” which according to the Atlassian case study is “an unmanned science lab which will use rock-evaporating lasers, camera/spectrometer hybrids, and high definition stereo cameras to investigate whether its landing region could (or did in the past) support microbial life.” The Ensemble team needs to be able to receive data sent from Curiosity and use that data to create a task list every single day.
Forthcoming Ensemble projects include commanding and monitoring a “free-flying robot equipped with an Android ‘Nexus S’ smartphone for data processing” and a demonstration for the International Space Station of how a human could control a planetary or lunar robot from a space station.
To support all these projects, Ensemble uses Eclipse not just as an IDE but as an application platform. By using Eclipse and Eclipse plug-ins, the Ensemble team is able to present a consistent interface with reusable and inter-operable components.
Besides Eclipse, Ensemble is also using most of Atlassian’s major products. According to JPL Lead Software Developer David Mittman, the JPL team started using JIRA in August 2004, added Confluence in 2005, Bamboo in 2007, Clover in 2009, FishEye in 2010 and GreenHopper for JIRA in 2011.
According to an earlier release on Ensemble the projects main tenets are:
- Divide large applications into interoperable and reusable components.
- Deliver to a mission only those components it needs.
- Allow reconfiguration so the work process can evolve as experience is gained.
- Make use of existing software as services that can be called by Ensemble plug-ins.
- Use continuous automated build and test systems.
Here’s how it works in practice, according to the case study:
Behind the scenes, Bamboo is powering a continuous deployment pipeline that makes the whole works even more agile by delivering software updates to their private cloud as fast as the Ensemble engineers can crank them out. Code from six active branches is built using custom scripts that sit on top of Eclipse and SVN, and invoked by Bamboo. Each successful build is then deployed to, and rigorously tested on, two preliminary environments before going into operation.
Ensemble demonstrates both the value and feasibility of agile development and operations. It’s especially heartening to see this at a government agency, not a tech startup. Many types of organizations can benefit from continuous deployment, including in mission critical operations.
The use of Eclipse as a development platform, not just a development environment, is also extremely interesting. Has anyone else seen anything else like it?
Mars rover photo via Bruce Irving