Why use cFS?

The Core Flight Software ecosystem is high-quality, certified by NASA, and freely available. It would take teams of programmers years to develop the same capability on their own. 

If your organization already has flight software and you're considering porting it over, you can take comfort in knowing you're not alone and that others have converted legacy code to this more flexible and robust system. Helping you on your journey is a vibrant community. Once you've adopted it, you will benefit from numerous freely available applications and tools. In addition, you can start to reuse your own applications across missions.

So the primary costs to you are educational. Our experience is that college students pick it up in a few weeks and professionals with experience get the hang of things even faster. If you can stomach getting used to someone else's code, you'll save yourself thousands of hours of your own development.

Perhaps your embedded software system isn't destined for space? This architecture may still be for you! In fact, NASA packages cFS up in their ICAROUS platform intended for drones. And there are teams looking at using it in other embedded software applications such as underwater vehicles, embedded simulators, and robots. 

One type of system it won't work with is microcontrollers with limited resources like Arduinos. cFS requires a multi-tasking real-time operating system like freeRTOS or RTEMS. One team was able to get it running on 800 kB of memory with freeRTOS on a CubeSat so it can be small, but not tiny.

 

Quality

The open-source framework provided by NASA is the same framework used on multi-million and even billion-dollar space programs. The code you download from Github is the same code they're using on their new space station. It's such a good value that many people have a hard time believing they can have it for free.

Because NASA uses it on big "can't fail" programs, cFS is a highly reliable and stable codebase. Their success with it on many science missions helped them select it for their lunar space station. And, because that will host humans, NASA has to certify it to an even higher standard. They're winding through the certification process now, spending millions of dollars and years of labor. cFS is already a premiere architecture and it will continue to strengthen.

NASA has also released applications that provide common mission functionality. If you're a newcomer to the space business, some of this functionality may not be obvious and you'll reap the benefits of the painful lessons learned by others. Instead of struggling with those lessons yourself, you can focus on your mission-specific requirements and applications, reducing your cost and schedule risks.

Finally, all of the NASA framework and application code come with requirements, design documents, unit tests, and functional tests. The NASA open-source software is managed by a Configuration Control Board that approves all future changes. You can be assured that the cFS will evolve in a manner that is aligned with long-term goals and that the quality of the software will remain high.

 

Portable and Extendable Architecture

Many spacecraft are uniquely designed for their objectives but they often require similar avionics functionality. NASA got tired of every new program starting over with new code, which is one of the reasons cFS was created. Right from the start, the framework was designed to provide an application runtime environment that allows application code to be rebuilt and run on different platforms. You can develop on Linux, host on a Raspberry Pi with Raspbian, and then host on a custom board running RTEMS without changing any of your mission logic.

The framework accomplishes portability with a layered architecture. The bottom layer talks with the operating system and platform. The middle layer controls the flow of information. And the top layer hosts your apps and mission logic. Many programs have minimal to no work needed on the two bottom layers. And NASA provides free apps to make things easier for you on the top layer, too.

NASA maintains open source releases for multiple platforms and over a dozen applications that are common to many missions. The number of user-contributed platform abstractions and applications continues to grow.

 

Permissive Licensing

All of the NASA components are released under the Apache 2.0 license, which means you can do just about anything (including selling the code) as long as you retain the copyright notices and give source credit. It used to be released under the NASA Open Source Agreement (NOSA) Version 1.3 but it's all been converted over as of 2020. 

 

A Vibrant Community

Since NASA released the complete cFS code base as open source in January 2015, the cFS has grown to an international community. The cFS was originally developed as NASA Class B software for a variety of science missions. Since then we are seeing a wide range of adoption from manned space to CubeSats and even unmanned aerial vehicles (UAVs).

The cFS mailing list has over 150 participants and online catalogs are being maintained for user-contributed platforms, applications, and tools.

As the community grows, the cFS continues to get easier to adopt and use. Distributions provide out-of-the-box systems that can be tailored for your needs. If you need to port the cFS to a platform, browse the catalog or ask the community. Chances are someone has solved a problem similar to your own.