Skip to content

Artwork: Ariel Davis

Open Source on Mars: Community powers NASA’s Ingenuity Helicopter

Developers around the world contribute to historic flight.

By Klint Finley // April 19, 2021

The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day. Learn more

Today, nearly 12,000 developers will see a new badge on their GitHub profile celebrating their contributions to the specific versions of projects and libraries used by NASA to fly the Ingenuity Helicopter on Mars. Learn more on the GitHub Blog.

The Ingenuity Mars Helicopter departed Earth for its 293 million mile trip to Mars aboard the Perseverance Rover last July. However, Ingenuity’s most important journey was only about 10 feet. That’s the altitude the small helicopter hovered just above the surface of Mars, marking a major milestone for humanity: the launch was the first powered flight on another planet and proof that it’s possible for a helicopter to achieve lift-off on Mars.

In order to fly in Mars’s thin atmosphere—with an atmospheric volume less than 1% of Earth’s—NASA’s Jet Propulsion Laboratory (JPL) had to keep the weight of Ingenuity below four pounds (1.8kg), including blades, a motor, a power supply, solar panels, and enough computing power to monitor instruments and keep the helicopter from deviating from its pre-programmed course. Packing everything Ingenuity needed into such a lightweight rotorcraft was an engineering feat that lived up to the project’s name.

“All the boundaries we have in our engineering disciplines, we couldn’t have them anymore,” Ingenuity Project Head MiMi Aung told the Making Space podcast. “Everybody had to pitch in. Every gram was a challenge.”

The team that built Ingenuity is much bigger than JPL’s 6,000 employees. Behind the 4-lb helicopter were contractors from recognizable companies like AeroVironment, Lockheed Martin, and Qualcomm. And behind its expansive software were thousands of open source developers around the world, unaware of the gravity of their contributions.

The Ingenuity helicopter runs an embedded Linux distribution on its navigation computer. Much of its software is written in C++ using JPL’s open source flight control framework F Prime (F´). Meanwhile, the Python ecosystem played a key role in everything from ground control to flight modeling to data processing.

Behind its expansive software were thousands of open source developers around the world, unaware of the gravity of their contributions.

Illustration of the GitHub profile badge indicating contributions to the open source libraries powering Ingenuity.

Nearly 12,000 people contributed code, documentation, graphic design, and more to the open source software that made Ingenuity’s launch possible. To celebrate this moment in open source history, GitHub added a new badge to profiles of those contributors.

Like the Arctic Code Vault Contributor badge pinned to millions of GitHub profiles last year, the new badge honors the people behind the code that pushes humanity forward.

“Many of the people who are getting a badge probably have no idea their software is being used to fly a helicopter on another planet,” says GitHub Senior Director of Developer Relations Martin Woodward. “We wanted to make sure everyone was recognized for their contributions to this incredible human achievement.”

And Woodward does mean everyone. JPL supplied GitHub with a list of every version of every open source project powering Ingenuity. From there, GitHub could identify all the contributors who made these projects and their dependencies possible.

“What we find is that there’s a hierarchy of dependencies,” he says. “A single project might have 10 or fewer dependencies, but they spider out from there, with each dependency relying on something else. Before you know it, you have an incredibly large number of people who have contributed to a project.”

The same is true for practically all software systems shipping today, 99 percent of which relies on open source components. “Much like dropping a pebble in a lake, your small contribution then ripples out to have a much larger impact,” says Carol Willing, a core contributor to Python. “That’s one of the beauties of open source, someone else can take your good work and make it even more powerful and meaningful.”

We wanted to make sure everyone was recognized for their contributions to this incredible human achievement.

Illuminating the power of open source

“There’s definitely a collective pride on occasions like this,” Linux Foundation executive director Jim Zemlin says. “Linux started as a hobby operating system and now it’s the de facto platform for mobile computing, cloud computing, automobiles, and so much more. Now it’s an interplanetary operating system as well.”

It’s not just a great moment for Linux, but for open source in general. “It’s humbling to step back and think ‘Wow, this helped someone solve a real-world problem,’” Willing says. “You might never know the impact your project has had, or what it’s enabled someone to do.”

Contributions to these projects came in the form of more than just code. Python core team member Mariatta Wijaya focuses mostly on community management, documentation, and building workflow tools that help the Python team automate various processes. Those are all essential responsibilities that make open source projects function and keep the code usable. "Just creating pull requests is not enough," she says. “We still need to review code, document changes, and work with the community to decide what to build and how.”

For many contributors, it’s validating to see even niche and abstract work turned into something so tangible. “After spending a lot of time on bug fixes and maintenance, it’s refreshing to hear about all the cool things Python is enabling,” says Benjamin Peterson, another core Python maintainer and the creator of the Python compatibility library Six. “The language is used for all sorts of things I never would have imagined.”

Though NASA is a US government organization, the effort behind Ingenuity is international in nature—people from well beyond JPL’s usual orbit contribute. For example, Andrew Nelson is a scientist working at the Australian Nuclear Science and Technology Organisation. He’s also a maintainer of SciPy, a scientific computing package widely used within JPL, including on the Ingenuity mission. “It’s brilliant to know that what we spend our time doing ends up helping an awesome project like this,” Nelson says. “This is one of the reasons I became a scientist.”

This sort of transnational collaboration will be crucial to the future of many human endeavors. “It proves that working together is always better,” says Zemlin. “There’s simply too much software that needs to be written to deploy an aircraft on a distant planet, or to help to create a zero-carbon economy with smart grids and efficient energy. Any individual, any company, or any nation-state can’t write it all on their own.”

Open source provides a path for people with any background, anywhere in the world to put their skills to use on these important challenges. “The more we can do to be welcoming and to encourage a diverse set of contributors, the better,” Willing says. “We need many different viewpoints to solve the most complex problems out there.”

This sort of transnational collaboration will be crucial to the future of many different human endeavors.

Illustration representing the open source projects that helped NASA’s team build and launch Ingenuity.

Getting more involved

There are many ways that open source contributors can get involved with space exploration projects.

“We’ve used and contributed to open source software at JPL for our projects and missions for many years,” says JPL principal data scientist and Chief Technology and Innovation officer Chris Mattmann. “That includes everything from operating systems to desktop productivity tools.”

But F´ marks the first time JPL has open sourced flight software says Jeff Levison, supervisor of the small scale flight software group at JPL. That’s largely because, previously, there were few applications for JPL’s flight software outside of NASA. “It didn’t make much sense before because our software was so tightly paired with custom hardware,” explains Levison. “There wasn’t really a driving need or benefit in releasing it to the public.”

JPL developed the first version of F´ in 2013. The idea was to create a reusable software framework for a variety of spaceflight projects that could be adapted to practically any hardware, purpose, or destination.

F´ marked a shift in how JPL worked, explains Mars Helicopter Operations Lead at JPL Timothy Canham. Historically, JPL’s software had been difficult to repurpose. It often contained context-specific functionality embedded deep within its code. To be widely reusable F´ had to be modular, not bespoke. For example, the framework doesn’t assume that engineers will use a particular brand of onboard camera—or any camera at all. If you need to take photos, for example, you can add or remove specific components and functionality as needed. The same applies to any sensor or hardware instrument.

F´ isn’t meant to be a spacecraft system in a box, Canham explains. It’s more like a starter kit. There’s a ground control system for sending commands to a device, a sequencer for running those commands, and a component for sending responses back to ground control. Although there’s a standard library of components, you’ll need to write a lot of your own software.

It quickly became apparent that F´ wasn’t just reusable inside of JPL, but outside of it as well. CubeSats, small satellites made with off-the-shelf commercial hardware typically deployed in Low Earth Orbit, are used by a wide variety of academic organizations and private companies. “We’d been giving some talks about it, and we had faculty at Carnegie Mellon and other organizations that wanted to use it for their own CubeSat projects,” Canham says. “We eventually realized it was easier for us to open source F´ than try to put people through the lengthy process of licensing the software.” The team combed through the code to make sure there weren’t any trade secrets or technologies controlled by international treaties, and released it under the Apache License in July 2017.

“Open source is a great way for governments and industries to route around the bureaucracy that would normally stop them from collaborating,” says open source expert Karl Fogel. “You don’t need months or years of negotiations and a memorandum of understanding.”

Since 2017, contributors have improved the system with bug fixes, drivers, and more. Even though Ingenuity doesn’t use any outside contributions—JPL froze its code several years ago—these will help F´ and space exploration to reach new frontiers in the years to come.

Contributing to F´ is just one way to be part of spaceflight. Ingenuity and other space exploration projects are powered by a universe of open source software. There are countless opportunities to advance human progress using the skills you already have. Your code could explore alien landscapes, model climate change, or solve health crises.

Willing encourages anyone interested in open source to take the plunge and contribute what they can. “Go for it,” she says. “There are many projects that would love more contributors, whether it’s in community management, documentation, code, or something else, there’s always a place for everyone to start.”

The ReadME Project

About The ReadME Project

Coding is usually seen as a solitary activity, but it’s actually the world’s largest community effort led by open source maintainers, contributors, and teams. These unsung heroes put in long hours to build software, fix issues, field questions, and manage communities.

The ReadME Project is part of GitHub’s ongoing effort to amplify the voices of the developer community. It’s an evolving space to engage with the community and explore the stories, challenges, technology, and culture that surround the world of open source.

Nominate a developer

Nominate a developer

We’re always on the lookout for inspiring developers who passionately dedicate themselves to their communities. Know somebody whose story deserves to be told? Let us know, and they could end up being featured on The ReadME Project.

Your nominee is a/an (check all that apply):