Making your research truly reproducible and reusable
Without a license, your code is legally unusable by others:
A license gives explicit permission for others to use your work
“But it’s on GitHub, so it’s open, right?”
❌ Wrong! Public ≠ Open Source
License | Best For | Key Features |
---|---|---|
MIT | Maximum adoption | Simple, permissive, commercial use OK |
Apache 2.0 | Patent protection | Permissive + patent grant |
GPL v3 | Ensuring openness | Copyleft - derivatives must be open |
BSD 3-Clause | Academic projects | Permissive, no endorsement clause |
Creative Commons | Data/documentation | Not for software code |
When in doubt: MIT is the most popular and simplest
your-repository/
├── LICENSE # Full license text
├── README.md
└── src/
Add a section like this to your README file:
When creating a repository:
For existing repositories:
GitHub Releases allow you to:
Perfect for marking milestones and distributing your work!
Semantic Versioning (SemVer) uses a three-part version number:
0.1.0 → Usually the very first release
1.0.0 → Initial full release
1.0.1 → Bug fix
1.1.0 → New feature added
2.0.0 → Breaking change
Pre-release versions:
1.0.0-alpha.1
1.0.0-beta.2
1.0.0-rc.1
Change Type | Version | Example |
---|---|---|
Bug fix | PATCH | 1.0.0 → 1.0.1 |
New feature | MINOR | 1.0.1 → 1.1.0 |
Breaking change | MAJOR | 1.1.0 → 2.0.0 |
Pre-release | Add suffix | 2.0.0-alpha.1 |
Release Navigation
Or create the tag directly on GitHub:
v0.1.0
)Required fields:
Optional but recommended:
Good release notes include:
## What's New
- Added user authentication system
- Implemented dark mode theme
- New API endpoints for data export
## Bug Fixes
- Fixed memory leak in background processing
- Resolved CSS styling issues on mobile
## Breaking Changes
- Changed API response format for /users endpoint
- Removed deprecated `legacy_mode` parameter
GitHub can automatically generate release notes:
Great starting point that you can customize!
Having a release created is great for reusability.
Download the zipped release archive, and upload to a repository!
Zenodo is a research data repository that:
DOIs make your code:
We can provide additional metadata to our repository to ensure Zenodo uses the correct information when generating our DOI.
CITATION.cff
(Citation File Format) is both human and machine readable, and provides information about how to reference code.CITATION.cff
to your repository will generate a little “Cite this repository” link, providing BibTex and APA citations according to your CFF file content.Zenodo provides the following example CITATION.cff:
cff-version: 1.2.0
title: "Memory bus simulation scripts"
version: 1.8.0
license: "MIT"
type: software
abstract: "These are the scripts used to simulate a memory bus"
message: "If you use this software, please cite it as below."
authors:
- given-names: Josiah
family-names: Carberry
affiliation: Brown University
orcid: "https://orcid.org/0000-0002-1825-0097"
keywords:
- computer science
- psychoceramics
- journaling filesystems
When you have released your code and minted a DOI on Zenodo, you can add this to your CITATION.cff file too:
cff-version: 1.2.0
title: "Memory bus simulation scripts"
version: 1.8.0
license: "MIT"
type: software
abstract: "These are the scripts used to simulate a memory bus"
message: "If you use this software, please cite it as below."
authors:
- given-names: Josiah
family-names: Carberry
affiliation: Brown University
orcid: "https://orcid.org/0000-0002-1825-0097"
keywords:
- computer science
- psychoceramics
- journaling filesystems
identifiers:
- description: This is the collection of archived snapshots of all versions of My Research Software
type: doi
value: "10.5281/zenodo.123456"
- description: This is the archived snapshot of version 0.11.2 of My Research Software
type: doi
value: "10.5281/zenodo.123457"
Remember: Licensed code = Usable code = Citable code
v
prefix (v1.0.0
)Add a DOI badge to your README (use your DOI):
[](https://doi.org/10.5281/zenodo.1234567)
This looks like this:
This helps users cite your work correctly!