Developing software that allows humans on Earth to operate a panoply of unmanned explorers is no small task, and it’s one undertaken jointly by JPL, the Ames Research Center in Silicon Valley, and the Johnson Space Center in Houston. They face problems like efficient mission planning, parsing raw data sent back from space, and compiling visual maps to represent an explorer’s progress; and they do it all without the luxury of working in the same location.
To help these collaborators tackle high-stakes issues across disparate geographical areas, they created a project called Ensemble. Dave Mittman, a lead software at JPL, explains that Ensemble is the right approach for this distributed team, but "we needed an infrastructure to let us develop it efficiently." JPL turned to Atlassian products.
Ensemble uses JIRA and Confluence to stay on the same page with projects and requirements, as well as FishEye, Clover, and Bamboo to keep the code clean and fast. What's more, Mittman says these products were suitable for JPL’s advanced purposes right out of the box.
Ensemble’s latest project is a Mars rover named Curiosity that's captured the heart of millions. The rover, which landed on the red planet in August 2012, is an unmanned science lab using rock-evaporating lasers, camera/spectrometer hybrids, and high-definition stereo cameras to investigate whether the surface of Mars could support microbial life (or ever has in the past). Curiosity’s mission will also help scientists understand the radiation environment on Mars in preparation for eventual human missions there, targeted within the next 10 to 15 years.
Curiosity sends data back to Earth once a day, using a transient, cloud-like computing hive that Mittman describes as having “about a thousand CPUs.” Curiosity’s operators crunch through the day’s data in a matter of hours, then beam up a task list for the next day. How’s that for agile planning?
Behind the scenes, Bamboo is powering a continuous deployment pipeline that delivers software updates to JPL’s 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’s engineers have what may be the best bragging rights in the world (or universe): The code they write on Monday is driving rovers on Mars come Tuesday.