Attribution¶
Attribution—giving credit to creators—is required by almost every open source license. This guide explains how to do it correctly.
Why Attribution Matters¶
-
Legal Requirement
Most licenses require it. Non-compliance is infringement.
-
Academic Integrity
Citation norms exist for a reason. Give credit where it's due.
-
Community Respect
Acknowledging work maintains goodwill and trust.
-
Provenance
Helps others trace origins and find upstream projects.
What's Required¶
Different licenses require different things. Here's what to include:
Minimum (MIT, BSD, Apache, CC BY)¶
| Element | Required | Example |
|---|---|---|
| Copyright notice | Yes | Copyright © 2024 Jane Doe |
| License text or link | Yes | MIT License (full text or link) |
| Original author name | Usually | Jane Doe |
Additional for Some Licenses¶
| License | Additional Requirement |
|---|---|
| Apache 2.0 | Preserve NOTICE file if present |
| Apache 2.0 | Note modifications made |
| GPL | Prominent program name, copyright, links |
| CC BY | Indicate if changes were made |
| CC BY | Link to license |
| CC BY | Don't imply endorsement |
How to Provide Attribution¶
In Source Code¶
Preserve existing copyright headers:
Don't remove these when incorporating code.
In Your LICENSE File¶
Create a section for third-party notices:
---
This project includes code from [ProjectName]:
Copyright (c) 2024 Jane Doe
Licensed under the MIT License
https://github.com/janedoe/project
In a THIRD-PARTY-NOTICES File¶
For projects with many dependencies:
THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
This project incorporates components from the projects
listed below. The original copyright notices and license
terms are included below.
---
1. React (https://reactjs.org/)
Copyright (c) Meta Platforms, Inc. and affiliates.
MIT License
[Full license text here]
---
2. lodash (https://lodash.com/)
Copyright JS Foundation and other contributors
MIT License
[Full license text here]
In Application UI¶
If distributing a binary application, include an "About" or "Legal" screen:
About MyApp
MyApp v1.0
Copyright (c) 2024 My Company
This software includes open source components:
- React (MIT License)
- lodash (MIT License)
- Postgres driver (Apache 2.0)
See NOTICES.txt for full license information.
In Documentation¶
For websites, README files, or docs:
## Acknowledgments
This project builds on:
- [Library Name](https://link) - MIT License
- Data from [Source](https://link) - CC BY 4.0
Creative Commons Attribution¶
CC licenses have specific attribution requirements. A complete attribution includes:
- Title of the work (if provided)
- Author/creator name
- Source link to the original
- License with link
Good CC Attribution Example¶
"Storm Clouds" by Jane Smith (https://example.com/storm)
Licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
Image cropped from original.
Minimal Acceptable¶
This omits title and source link, which is acceptable but not ideal.
For Modified Works¶
You must indicate changes:
Common Mistakes¶
Mistake 1: Removing copyright notices¶
Wrong:
Right:
# Original: Copyright (c) 2024 Original Author
# Modifications: Copyright (c) 2024 You
# SPDX-License-Identifier: MIT
Mistake 2: Only crediting in one place¶
If you include attribution in source files, also include it in distributed binaries. Users of your binary may never see source files.
Mistake 3: Vague attribution¶
Wrong:
Right:
Mistake 4: Implying endorsement (CC licenses)¶
Wrong:
Right:
Attribution by License Type¶
| License | Copyright Notice | License Text | Changes Noted | NOTICE File |
|---|---|---|---|---|
| MIT | Required | Required | No | No |
| BSD | Required | Required | No | No |
| Apache 2.0 | Required | Required | Required | If present |
| GPL | Required | Required | Required | No |
| LGPL | Required | Required | Required | No |
| MPL | Required | Required | Required | No |
| CC BY | Required | Link required | Required | N/A |
| CC0 | Not required | Not required | Not required | N/A |
Tools for Managing Attribution¶
Automated License Detection¶
- FOSSA - Enterprise license compliance
- Snyk - Security + license scanning
- WhiteSource (Mend) - License management
- license-checker (npm) - List dependency licenses
- pip-licenses (Python) - License info for pip packages
I discuss these tools and Software Bills of Materials (SBOMs) in more detail in my software building guide.
SPDX¶
SPDX (Software Package Data Exchange) provides standardized license identifiers:
This makes license information machine-readable and unambiguous.
When Attribution Isn't Required¶
Only a few situations don't require attribution:
- Public domain (CC0, Unlicense) - No attribution required, but often polite
- Private use - Most licenses only require attribution on distribution
- Facts and ideas - Copyright doesn't cover facts, only expression
Even when not legally required, attribution is often expected by community norms (especially in academia).