Licensing research software
Use this skill when someone is choosing a license for research software,
adding a LICENSE file, reconciling the licenses of dependencies, or
deciding how to cover documentation and data that ship with code. Without
a license, others have no legal right to reuse the work, even when the
author intended them to - so a clear, accessible license is what makes the
"R" (reusability) in FAIR real.
Ground the discussion: copyright vs license
Before recommending anything, make these distinctions explicit:
- Copyright exists automatically from the moment a work is created; it does
not need to be asserted. It gives only the creator the right to reproduce
and use the work.
- A license is the document that grants others permission to use, modify,
extend, or redistribute the work, and states the conditions. It needs no
signature - a user cannot both rely on the license and deny its terms.
- "No license" is not the same as "public domain". No license means nobody
may legally reuse the work; public domain (or a dedication like CC0 or the
Unlicense) means everybody may.
- Small contributions may not be copyrightable at all.
Always check ownership before advising a license:
- Employees usually do not own IP created during employment - the employer
does. Confirm whether permission from the institution is required.
- Watch for third-party rights baked into the work.
- Grant conditions may already mandate open release; if so, that usually
removes the need for extra institutional permission. Flag this rather
than assume.
Pick a license by what it must permit and require
Recommend an existing OSI-approved license; never draft or edit one unless
the user is a copyright lawyer. Remember that once granted, a license's
permissions cannot be revoked.
Decision drivers to ask about:
- What licenses do the dependencies carry, and what do they oblige? A
copyleft dependency can force the whole combined work to be copyleft.
- Should anyone who modifies and redistributes be required to release their
changes' source? If yes, lean copyleft; if no, lean permissive.
- Is maximum, frictionless reuse the priority - even inside closed,
commercial products? Lean permissive.
- Does the research community have a conventional default license? Match it
unless there is a reason not to.
Permissive licenses
Minimal restrictions: redistributors must keep the license text and a
copyright notice. Permissively licensed code can be folded into closed
source products.
- MIT, BSD (several variants): short, simple, allow copy/modify/merge/
sublicense/sell.
- Apache 2.0: similar, plus an explicit patent grant - contributors license
their relevant patents to users free of charge.
Copyleft licenses
Require derivatives, copies, and redistributions to be released under a
compatible copyleft license. This keeps downstream products open but can
block combination with code whose terms are incompatible.
- GPL: strong copyleft; a whole derivative work, including an application
that links a GPL library, must be GPL with source provided. Long and hard
for non-lawyers to parse.
- LGPL: lets proprietary software use/link the component without the whole
application becoming copyleft. Dynamic linking keeps proprietary code
proprietary; static linking obliges LGPL terms or a way to re-link.
- AGPL: closes the "software as a network service" gap - operators of AGPL
web applications must offer users the source, even though users never
receive a copy locally.
Creative Commons - for non-code artifacts
Code licenses do not fit documentation, datasets, drawings, logos, music,
or maps. Use Creative Commons for those. The
baseline rights combine into six licenses:
- BY (Attribution) - required in all CC licenses; credit the creator.
- SA (Share-Alike) - derivatives must use a compatible CC license (copyleft-
like).
- NC (Non-Commercial) - non-commercial use only.
- ND (No Derivatives) - no redistribution of modified versions.
The six: CC BY, CC BY-SA, CC BY-NC, CC BY-NC-SA, CC BY-ND, CC BY-NC-ND. For
a public-domain dedication of non-code work, use CC0. Note that NC and ND
variants are not "open" in the open source sense - flag this when a user
wants their work broadly reusable.
Check license compatibility
When code combines multiple sources, compatibility is the trap:
- Incompatible terms between a copyleft license and another license can
legally prevent combining the two codebases.
- Combining copyleft code generally forces the entire combined work under
that copyleft license - confirm the user is willing to accept that before
they add such a dependency.
- Audit every dependency's obligations before settling on the project's own
license, not after.
Add the license to the repository
Once chosen, apply it concretely:
- Put the full license text in a file named
LICENSE (LICENSE.txt or
LICENSE.md are also accepted) in the repository root.
- On GitHub, use the built-in "Add a license" flow, which drops in the exact
text. Otherwise create the file and paste the canonical text yourself.
- A single project-wide license is recommended for small-to-moderate
codebases. Only split licenses across parts of a large codebase when there
is a real need.
- To license per file (mixed licenses, or fine-grained provenance), adopt
REUSE: add a short SPDX identifier header to each file
(
SPDX-License-Identifier: MIT) so licensing is machine-readable and
every file is unambiguously covered. Use SPDX identifiers whenever a tool
or metadata field asks for the license.
- For software that also ships data or documentation, consider a LICENSE
that specifies distinct terms for software, content, and metadata (for
example code under an OSI license, docs under CC BY).
Agent checklist
When helping with a licensing task, work through this order:
- Confirm ownership and any funder/employer constraints.
- Inventory dependency licenses and their obligations.
- Choose permissive vs copyleft from the user's reuse goals, then a
specific license; use Creative Commons for non-code artifacts.
- Add a root
LICENSE file with the canonical text (GitHub flow or manual).
- If per-file clarity is needed, add SPDX headers via REUSE.
- Record the SPDX identifier in package metadata (for example
pyproject.toml, DESCRIPTION, package.json).
Working with this skill
The generated references.md beside this file lists the source
material and pointers:
- references.md - verified Learn more pointers
Compliance engineering - dependency license audits, compatibility
analysis, dual licensing, SPDX expressions and REUSE verification -
is rseng-license-compliance; this skill covers choosing and applying a
license.
Learn more (verified):
Related skills
Check whether any of these applies before moving on:
- rseng-citation-metadata - SPDX id in metadata files
- rseng-data-management - licensing datasets alongside code
- rseng-fair-ml - licensing model weights
- rseng-fair-software - license implements reusability
- rseng-license-compliance - dependency audits and enforcement
- rseng-open-source-migration - licensing freed code
1---2name: rseng-licensing3description: Covers how to license research software: copyright and public-domain basics, choosing between permissive, copyleft, and Creative Commons licenses, basic compatibility with dependency licenses, and adding a LICENSE file or per-file SPDX/REUSE metadata. Use when the user asks which open source license to pick, how to add a LICENSE file, what MIT vs GPL vs Apache means, whether two licenses are compatible, how to license documentation or data alongside code, or mentions REUSE, SPDX, CC0, or public domain. Also use PROACTIVELY when a repository has no LICENSE file - an unlicensed repository legally blocks all reuse. (Full dependency-tree audits, SPDX expressions, dual licensing and CI license enforcement are rseng-license-compliance.)4license: CC-BY-4.05---67# Licensing research software89Use this skill when someone is choosing a license for research software,10adding a LICENSE file, reconciling the licenses of dependencies, or11deciding how to cover documentation and data that ship with code. Without12a license, others have no legal right to reuse the work, even when the13author intended them to - so a clear, accessible license is what makes the14"R" (reusability) in FAIR real.1516## Ground the discussion: copyright vs license1718Before recommending anything, make these distinctions explicit:1920- Copyright exists automatically from the moment a work is created; it does21 not need to be asserted. It gives only the creator the right to reproduce22 and use the work.23- A license is the document that grants others permission to use, modify,24 extend, or redistribute the work, and states the conditions. It needs no25 signature - a user cannot both rely on the license and deny its terms.26- "No license" is not the same as "public domain". No license means nobody27 may legally reuse the work; public domain (or a dedication like CC0 or the28 Unlicense) means everybody may.29- Small contributions may not be copyrightable at all.3031Always check ownership before advising a license:3233- Employees usually do not own IP created during employment - the employer34 does. Confirm whether permission from the institution is required.35- Watch for third-party rights baked into the work.36- Grant conditions may already mandate open release; if so, that usually37 removes the need for extra institutional permission. Flag this rather38 than assume.3940## Pick a license by what it must permit and require4142Recommend an existing OSI-approved license; never draft or edit one unless43the user is a copyright lawyer. Remember that once granted, a license's44permissions cannot be revoked.4546Decision drivers to ask about:4748- What licenses do the dependencies carry, and what do they oblige? A49 copyleft dependency can force the whole combined work to be copyleft.50- Should anyone who modifies and redistributes be required to release their51 changes' source? If yes, lean copyleft; if no, lean permissive.52- Is maximum, frictionless reuse the priority - even inside closed,53 commercial products? Lean permissive.54- Does the research community have a conventional default license? Match it55 unless there is a reason not to.5657### Permissive licenses5859Minimal restrictions: redistributors must keep the license text and a60copyright notice. Permissively licensed code can be folded into closed61source products.6263- MIT, BSD (several variants): short, simple, allow copy/modify/merge/64 sublicense/sell.65- Apache 2.0: similar, plus an explicit patent grant - contributors license66 their relevant patents to users free of charge.6768### Copyleft licenses6970Require derivatives, copies, and redistributions to be released under a71compatible copyleft license. This keeps downstream products open but can72block combination with code whose terms are incompatible.7374- GPL: strong copyleft; a whole derivative work, including an application75 that links a GPL library, must be GPL with source provided. Long and hard76 for non-lawyers to parse.77- LGPL: lets proprietary software use/link the component without the whole78 application becoming copyleft. Dynamic linking keeps proprietary code79 proprietary; static linking obliges LGPL terms or a way to re-link.80- AGPL: closes the "software as a network service" gap - operators of AGPL81 web applications must offer users the source, even though users never82 receive a copy locally.8384### Creative Commons - for non-code artifacts8586Code licenses do not fit documentation, datasets, drawings, logos, music,87or maps. Use Creative Commons for those. The88baseline rights combine into six licenses:8990- BY (Attribution) - required in all CC licenses; credit the creator.91- SA (Share-Alike) - derivatives must use a compatible CC license (copyleft-92 like).93- NC (Non-Commercial) - non-commercial use only.94- ND (No Derivatives) - no redistribution of modified versions.9596The six: CC BY, CC BY-SA, CC BY-NC, CC BY-NC-SA, CC BY-ND, CC BY-NC-ND. For97a public-domain dedication of non-code work, use CC0. Note that NC and ND98variants are not "open" in the open source sense - flag this when a user99wants their work broadly reusable.100101## Check license compatibility102103When code combines multiple sources, compatibility is the trap:104105- Incompatible terms between a copyleft license and another license can106 legally prevent combining the two codebases.107- Combining copyleft code generally forces the entire combined work under108 that copyleft license - confirm the user is willing to accept that before109 they add such a dependency.110- Audit every dependency's obligations before settling on the project's own111 license, not after.112113## Add the license to the repository114115Once chosen, apply it concretely:116117- Put the full license text in a file named `LICENSE` (`LICENSE.txt` or118 `LICENSE.md` are also accepted) in the repository root.119- On GitHub, use the built-in "Add a license" flow, which drops in the exact120 text. Otherwise create the file and paste the canonical text yourself.121- A single project-wide license is recommended for small-to-moderate122 codebases. Only split licenses across parts of a large codebase when there123 is a real need.124<!-- REUSE-IgnoreStart -->125- To license per file (mixed licenses, or fine-grained provenance), adopt126 REUSE: add a short SPDX identifier header to each file127 (`SPDX-License-Identifier: MIT`) so licensing is machine-readable and128 every file is unambiguously covered. Use SPDX identifiers whenever a tool129 or metadata field asks for the license.130<!-- REUSE-IgnoreEnd -->131- For software that also ships data or documentation, consider a LICENSE132 that specifies distinct terms for software, content, and metadata (for133 example code under an OSI license, docs under CC BY).134135## Agent checklist136137When helping with a licensing task, work through this order:1381391. Confirm ownership and any funder/employer constraints.1402. Inventory dependency licenses and their obligations.1413. Choose permissive vs copyleft from the user's reuse goals, then a142 specific license; use Creative Commons for non-code artifacts.1434. Add a root `LICENSE` file with the canonical text (GitHub flow or manual).1445. If per-file clarity is needed, add SPDX headers via REUSE.1456. Record the SPDX identifier in package metadata (for example146 `pyproject.toml`, `DESCRIPTION`, `package.json`).147148## Working with this skill149150The generated references.md beside this file lists the source151material and pointers:152153- references.md - verified Learn more pointers154155Compliance engineering - dependency license audits, compatibility156analysis, dual licensing, SPDX expressions and REUSE verification -157is rseng-license-compliance; this skill covers choosing and applying a158license.159160161Learn more (verified):162 - https://choosealicense.com - GitHub's open source license chooser163 - https://opensource.org/licenses - OSI-approved open source licenses164 - https://spdx.org/licenses/ - SPDX license identifier list165 - https://reuse.software - REUSE per-file licensing specification166 - https://creativecommons.org/cc-licenses/ - Creative Commons167 license overview168169170<!-- related-skills:begin -->171172## Related skills173174Check whether any of these applies before moving on:175176- rseng-citation-metadata - SPDX id in metadata files177- rseng-data-management - licensing datasets alongside code178- rseng-fair-ml - licensing model weights179- rseng-fair-software - license implements reusability180- rseng-license-compliance - dependency audits and enforcement181- rseng-open-source-migration - licensing freed code182183<!-- related-skills:end -->