Open source software and code
Find everything you need to know about sharing software and code from your research project
What is open source software?
Open source software is distributed under a license that allows anyone to use, modify, and distribute the software and its source code. Sharing software as open source enables other researchers to:
- Inspect your software
- View the source code
- Understand how you produced your results
As a result, open source software supports transparency, reproducibility, and reusability.
Open source software can be developed collaboratively online and can continuously evolve. Researchers that reuse open source software can make changes in new versions, such as adding features they need for their research or fixing bugs. They can also contribute these improvements to the main project so the wider community can take advantage of them.
Importantly, successfully sharing research software in a reusable way requires more than just releasing it under an open license. Only well-designed and well-documented code is easy to reproduce, reuse, or modify for new applications by other researchers.
DOWNLOAD OUR FREE GUIDE
How to choose an open source license
Fill in the form below to determine the best open source license for your research software.
What is research software?
F1000 supports the FAIR for Research Software (FAIR4RS) Working Group definition of research software.
When we talk about research software, we refer to:
- Source code files
- Algorithms
- Scripts
- Computational workflows
- Other executables created during the research process or for research purposes

Making research software and code FAIR
You might already be familiar with the FAIR Principles as they apply to research data, but what about research software and code? For research to be transparent, reproducible, and reusable, research software must also be Findable, Accessible, Interoperable, and Reusable.
To improve the sharing and reuse of research software, FAIR4RS revised and extended the existing FAIR Data Principles. They determined that open research software should be:
Findable
Software and its associated metadata are easy for both humans and machines to find.
Accessible
Software, and its metadata, are retrievable via standardized protocols.
Interoperable
Software interoperates with other software by exchanging data and/or metadata, and/or through interaction via application programming interfaces (APIs), described through community standards.
Reusable
Software is both usable (can be executed) and reusable (can be understood, modified, built upon, or incorporated into other software).
Before sharing your software and code, consider how you can ensure you meet the FAIR principles outlined above.
How to make your software and code open source
Create a software management plan
A software management plan (SMP) is a document that details the steps you will take to ensure your software is accessible and reusable. A basic software management plan includes what software you will produce, who is responsible for releasing the software, which version control system you will use, and which license you will apply to each output.
Upload your software and code to an open repository
A repository is a space online for researchers to store data, code, and other research outputs. Open source repositories enable others to find and view hosted software and source code. Repositories support researchers by creating general dissemination guidelines and descriptive metadata.
Apply an open license
Uploading your software to a repository will enable others to find it, but you need to apply an open license for them to use and build upon it. Plus, if the software you’ve created is helpful to other researchers, open licenses establish authorship so you can get the credit and recognition you deserve.
Permissive vs. copyleft licenses
The most common open source licenses can be categorized as copyleft or permissive. The difference lies in the license’s requirements and restrictions on those who want to reuse the software.
Copyleft licenses are a method for making a software program freely available and requiring all modified and extended versions of the program to be free, according to the GNU. As such, any software created using an open source component with a copyleft license must also use a copyleft license—even if it only reuses a small part of the code.
Permissive licenses guarantee the freedom to use, modify, and redistribute while requiring minimal restrictions on how others can use open source components. A permissive license permits others to use the source code in proprietary derivative works with no obligation to make future works open source. Permissive licenses typically require users to include a copy of the license text and the original copyright notice in any redistribution of the licensed code.
It’s perhaps unsurprising that permissive open source licenses continue to be the more popular choice among those sharing their software. In 2021, 78% of open source components had permissive licenses.
Most popular open source licenses
Many open source licenses are available, making it difficult to know where to start when selecting a license for your software. The Open Source Initiative (OSI) is a global non-profit organization that acts as a standards body to maintain a shared definition of “open source” and accredit licenses. At F1000, we strongly advise our authors to use OSI-approved licenses to distribute their work.
Some of the most popular OSI-approved licenses include:
- Apache License 2.0 (Apache 2.0)
- MIT License (MIT)
- GNU General Public License (GPL)
- Berkley Software Distribution License (BSD)
- GNU Library or “Lesser” General Public License (LGPL)
Benefits of open source software
Depositing your research software and code into a repository is an extra step to consider as part of your research project—so what is the value in sharing?
Where can I publish articles on my scientific software?
F1000 publishing venues offer a unique article type, known as Software Tool Articles, that allows you to describe new software you have created to support or conduct research in any field. These articles explore:
- Why you developed the software
- Details of the code, method, and analysis used
- Examples of data input sets
- Examples of outputs and how to interpret these
- Tips on how to maximize the tool’s potential
We also welcome articles describing tools created from existing software, web tools, apps, containers, packages, and workflows.
Expand your open research knowledge

Peer review is an integral part of scholarly communication and academic publishing. A key player in this process is the peer reviewer, who is typically a recognized expert in the…

