Image courtesy of NASA

NASA’s Jet Propulsion Laboratory (JPL) uses a host of Atlassian products to build the software used for flight mission planning as well as modeling data sent back from satellites and Mars rovers. I sat down with David Mittman, lead software developer and “default Atlassian guy” at JPL to get a closer look at what they’re up to.

JPL was founded in the 1930s as a place to test new rocket technologies, and—after the creation of NASA in 1958—was chartered with developing the robotic spacecraft needed to explore our solar system. These high-profile programs include the ongoing Voyager mission (which is currently traveling beyond our solar system), the Ulysses solar mission, and the Pathfinder rovers sent to Mars in the 1990s –and that’s just a tiny fraction. JPL also has an Earth-observing program for tracking weather and climate change using robotic observers in space. “We are constantly developing new technologies for exploring space,” says Mittman. Over the next hour, he backed that statement up with example after mind-boggling example.

A Truly “Ensemble” Cast

Developing part of the vast amount of software that allows humans on Earth to operate this panoply of unmanned explorers is a joint effort between JPL in Pasadena, CA, the Ames Research Center near San Francisco, and the Johnson Space Center in Houston. To make this all as efficient as possible (these are our tax dollars at work, after all…), they have created a project called Ensemble to solve the common problems they face such as mission planning, parsing the raw scientific data sent back, and compiling visual maps to represent an explorer’s traverse.

So Ensemble is all about collaboration across disparate geographical areas, which is what led them to the Atlassian ecosystem. “We need an infrastructure to let us develop it efficiently,” Mittman explains “and we’re using Atlassian products.” Their collection currently includes Jira, GreenHopper, Confluence, Bamboo, Fisheye and Clover –which are largely suitable for even JPL’s crazy-advanced purposes right out of the box. Notably absent from that list is Crucible. “We do a lot of pair programming, so code reviews are conducted up front…We may add it as collaboration between the three teams increases.” Fair enough.

Image courtesy of NASA/JPL-Caltech

At present, Ensemble’s biggest project is a Mars rover named “Curiosity,” launched in November 2011 and due to touch down on the red planet this August. Curiosity is an unmanned science lab which will use rock-evaporating lasers, camera/spectrometer hybrids, and high definition stereo cameras to investigate whether it’s landing region could (or did in the past) support microbial life. It will also help scientists understand the radiation environment on Mars in preparation for eventual human missions there, targeted within the next 10-15 years.

As with the Spirit and Opportunity rovers currently calling Mars home, data collected by Curiosity will be sent back to Earth once a day, around the time of the Martian sunset. (Being solar-powered, the rovers are field geologists by day, and happy slumberers by night.) Using Ensemble and a transient, cloud-like computing hive of “about a thousand CPUs,” Curiosity’s operators will crunch through the day’s data, and within a few hours, send up it’s task list for the next day. Now THAT’s agile planning!

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. (Just imagine bragging to your friends that the code you wrote today will be driving rovers on Mars tomorrow! That ain’t science fiction, baby; it’s science fact.) Mittman & team are also moving toward a continuous deploy model for sharing their work with other developers building operational software for the International Space Station.

Ensemble’s Upcoming Performance

Image courtesy of NASA

What’s next for the Ensemble team? Oh not much…only “the first Eclipse RCP-based application to run on the International Space Station,” says Mittman. (!) Using OSGi to pull various components into a single application, this application will operate a SPHERES (Synchronized Position Hold Engage and Reorient Experimental Satellites) robot, as part of NASA’s Human Exploration Telerobotics project. Ensemble’s role will be to command and monitor a SPHERES free-flying robot equipped with an Android “Nexus S” smartphone for data processing. Another project in their pipeline will also be used on the ISS, this time to demonstrate how a human up in the space station can control a robot down on a planetary or lunar surface.

Space robots? Check. Groundbreaking technologies? Check. All in a days work for the guys n’ gals of Ensemble. We at Atlassian are honored and humbled that our tools are supporting this intrepid crew of computer scientists. Preparing for awesomeness in T-minus 5… 4… 3… 2… 1!


For more information on these far-out applications of computer code, check the sites below:

 Special thanks to David for taking time out of his day to share these rare insights with us!

NASA’s Jet Propulsion Lab Launches Atlassian Into Space