Improve the Quality, Impact ,and Reuse of NASA Software through Open Source Development
Open source development-which allows free access to software source code to allow anyone to make improvements-is revolutionizing the way software is created, improved, and used. The open source software movement is inherently transparent, participatory, and collaborative. Open source at NASA gives the public direct and ongoing access to NASA technology. Its adoption by NASA also helps lower the barrier to entry into space by enabling private industry to better make use of NASA investments. Although open source release has already provided numerous benefits to NASA and the public, the full benefits of open source can only be achieved when we establish the processes, policies, and corporate culture to favor open source development. This would shift our open source activities from its one-way direction of giving the public access to finalized software products, to allowing two-way collaboration as part of the development process. The benefits of allowing the public to assist in development of NASA software include increased software quality, accelerated software development, and a higher rate of technology transfer both to and from NASA.
The rapid growth of the Internet has changed how we use computers. For software developers this has led to new forms of collaboration and code reuse. Perhaps the most exciting development has been the growth of open source software. Open source involves the joint production, release, and distribution of software that is freely and widely available. The number of open source projects and amount of open source code is growing at an exponential rate and in some cases, allows work created for one project to be applied to another.
NASA has used open source to address project and mission needs, to accelerate software development, and to maximize public awareness and impact of our research. The NASA Open Source Agreement (NOSA) is an Open Source Initiative (OSI) approved license to allow public release of NASA-funded software. Since 2003, we have released more than 60 software projects under the NOSA. Part of NASA's charter (Space Act of 1958) is to "provide for the widest practical and appropriate dissemination of information concerning its activities and the results thereof." Open source directly addresses this by facilitating rapid and wide dissemination of software with minimal overhead and cost.
To date, NASA's use of open source has focused on two types of software release:
Recently, however, we have created the NASA Contributor License Agreement (CLA). The CLA allows code from third-parties to be incorporated for future release under NOSA. Moreover, we are starting to distribute released code via popular software forums (e.g., SourceForge), which makes NASA software more readily accessible to open-source developers. Finally, we are developing the capability to host source-code on NASA and public servers for software under development.
Although NASA and the public have already derived numerous benefits from open source release, the full benefits of open source can only be achieved if we establish the processes, policies, and corporate culture for open source development. In short, this means providing a path for non-NASA developers to contribute to on-going NASA projects in real-time. With recent innovations, such as continuous release and the CLA, NASA is ready to adopt policies and the processes needed to support such development.
Open source development makes NASA more transparent by enabling the public to better understand what types of software NASA needs to fulfill its mission. The public can directly see how NASA software is designed, implemented, and improved. Open source development makes NASA more participatory by allowing the public to assist in NASA software development. Students, scientists, and programmers can directly contribute their expertise, skills, and work to NASA projects and missions. Open source development makes NASA more collaborative by providing an efficient and effective means to transfer software to, and from, NASA. This results in higher quality software and increased reuse of software for other purposes.