A Developer's Definitive Guide to Understanding, Choosing & Applying Open-Source Licenses
As a developer, every time you push code to GitHub, you're making a legal decision — whether you realize it or not. Here's why understanding licenses is non-negotiable:
No license = All Rights Reserved. By default, copyright law protects your code. Without a license, no one can legally use, modify, or share your work — even if it's public on GitHub.
Enterprise developers and companies have legal teams that review licenses before using any open-source code. If your library doesn't have a clear license:
- ❌ They'll skip your project entirely
- ❌ Your brilliant library will never be adopted
- ❌ You miss out on community contributions
Understanding licensing shows you think beyond just code:
- ✅ You understand intellectual property
- ✅ You can make informed architectural decisions
- ✅ You can advise teams on legal compliance
- ✅ You stand out as a senior-minded developer
Licenses let you control how your code is used:
- Want maximum adoption? → MIT License
- Want to prevent proprietary forks? → GPL v3.0
- Want patent protection? → Apache 2.0
- Want to cover SaaS usage? → AGPL v3.0
- Want to donate to public domain? → CC0
This repository covers all 12 licenses that GitHub offers when creating a new repository. Each folder contains:
- 📄
LICENSE_NAME.md— Complete license documentation, permissions, limitations, and famous projects - 📋
USE_CASE.md— Detailed use cases, decision guides, and when to choose this license
Github-License/
│
├── 📄 README.md ← You are here
│
├── 📁 _01_MIT_License/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _02_Apache_License_2.0/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _03_GNU_General_Public_License_v3.0/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _04_BSD_2_Clause_License/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _05_BSD_3_Clause_License/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _06_Boost_Software_License_1.0/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _07_Creative_Commons_Zero_v1.0/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _08_Eclipse_Public_License_2.0/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _09_GNU_Affero_General_Public_License_v3.0/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _10_GNU_General_Public_License_v2.0/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
├── 📁 _11_GNU_Lesser_General_Public_License_v2.1/
│ ├── LICENSE_NAME.md
│ └── USE_CASE.md
│
└── 📁 _12_Mozilla_Public_License_2.0/
├── LICENSE_NAME.md
└── USE_CASE.md
| # | License | Folder | Type | Best For |
|---|---|---|---|---|
| 01 | MIT License | _01_MIT_License |
Permissive | Libraries, tools, maximum adoption |
| 02 | Apache License 2.0 | _02_Apache_License_2.0 |
Permissive + Patent | Enterprise software, patent-heavy domains |
| 04 | BSD 2-Clause | _04_BSD_2_Clause_License |
Permissive | Academic, small libraries |
| 05 | BSD 3-Clause | _05_BSD_3_Clause_License |
Permissive + Name Protection | Brand-conscious projects |
| 06 | Boost Software License 1.0 | _06_Boost_Software_License_1.0 |
Ultra-Permissive | C++ libraries, embedded systems |
| # | License | Folder | Type | Best For |
|---|---|---|---|---|
| 08 | Eclipse Public License 2.0 | _08_Eclipse_Public_License_2.0 |
Weak Copyleft | Java ecosystem, plugin architectures |
| 11 | GNU LGPL v2.1 | _11_GNU_Lesser_General_Public_License_v2.1 |
Weak Copyleft (Library) | Shared libraries, frameworks |
| 12 | Mozilla Public License 2.0 | _12_Mozilla_Public_License_2.0 |
Weak Copyleft (File) | Modular apps, DevOps tools |
| # | License | Folder | Type | Best For |
|---|---|---|---|---|
| 03 | GNU GPL v3.0 | _03_GNU_General_Public_License_v3.0 |
Strong Copyleft | Desktop apps, OS, dual licensing |
| 09 | GNU AGPL v3.0 | _09_GNU_Affero_General_Public_License_v3.0 |
Strongest Copyleft | SaaS, cloud services, federated apps |
| 10 | GNU GPL v2.0 | _10_GNU_General_Public_License_v2.0 |
Strong Copyleft | Linux kernel modules, legacy GPL projects |
| # | License | Folder | Type | Best For |
|---|---|---|---|---|
| 07 | Creative Commons Zero v1.0 | _07_Creative_Commons_Zero_v1.0 |
Public Domain | Data, assets, specifications |
START HERE
│
┌───────────┴────────────┐
│ Do you want copyleft? │
│ (derivatives stay open)│
└───────────┬────────────┘
┌────┴────┐
│ │
YES NO
│ │
┌────┴────┐ ┌┴──────────────┐
│ SaaS / │ │ Need patent │
│ Network?│ │ protection? │
└────┬────┘ └──────┬────────┘
┌────┴───┐ ┌──────┴──────┐
│ │ │ │
YES NO YES NO
│ │ │ │
AGPL v3.0 │ Apache 2.0 MIT License
│
┌─────┴──────┐
│ Is it a │
│ library? │
└─────┬──────┘
┌─────┴─────┐
│ │
YES NO
│ │
LGPL v2.1 GPL v3.0
| Your Goal | Choose This |
|---|---|
| 🚀 Maximum adoption, simplicity | MIT License |
| 🛡️ Permissive + patent protection | Apache 2.0 |
| 🔒 Keep derivatives open-source | GPL v3.0 |
| ☁️ Protect against SaaS exploitation | AGPL v3.0 |
| 📚 Library with proprietary linking allowed | LGPL v2.1 |
| 📁 File-level copyleft | MPL 2.0 |
| 🎁 Public domain dedication | CC0 |
| ☕ Java/Eclipse ecosystem | EPL 2.0 |
| License | Permissive | Copyleft | Patent Grant | Commercial Use | Must Share Source | Scope |
|---|---|---|---|---|---|---|
| MIT | ✅ | ❌ | ❌ | ✅ | ❌ | — |
| Apache 2.0 | ✅ | ❌ | ✅ | ✅ | ❌ | — |
| GPL v3.0 | ❌ | ✅ Strong | ✅ | ✅* | ✅ | Entire work |
| GPL v2.0 | ❌ | ✅ Strong | 🟡 Implicit | ✅* | ✅ | Entire work |
| AGPL v3.0 | ❌ | ✅ Strongest | ✅ | ✅* | ✅ + Network | Entire work + SaaS |
| LGPL v2.1 | ❌ | 🟡 Weak | 🟡 Implicit | ✅ | 🟡 Library only | Library |
| MPL 2.0 | ❌ | 🟡 Weak | ✅ | ✅ | 🟡 Modified files | File |
| EPL 2.0 | ❌ | 🟡 Weak | ✅ | ✅ | 🟡 Modified files | Module |
| BSD 2-Clause | ✅ | ❌ | ❌ | ✅ | ❌ | — |
| BSD 3-Clause | ✅ | ❌ | ❌ | ✅ | ❌ | — |
| Boost 1.0 | ✅ | ❌ | ❌ | ✅ | ❌ | — |
| CC0 1.0 | ✅✅ | ❌ | ❌ | ✅ | ❌ | — |
✅* = Commercial use is allowed but source code must be shared
| Project | License | Why They Chose It |
|---|---|---|
| React | MIT | Maximum adoption for UI library |
| Linux Kernel | GPL v2.0 | Keep the kernel free forever |
| Android | Apache 2.0 | Patent protection for mobile ecosystem |
| WordPress | GPL v3.0 | All themes/plugins stay open-source |
| MongoDB | AGPL → SSPL | Prevent cloud providers from freeloading |
| Qt | LGPL v2.1 | Allow proprietary apps to use the framework |
| Firefox | MPL 2.0 | File-level copyleft for browser code |
| Kubernetes | Apache 2.0 | Enterprise-grade with patent protection |
| SQLite | Public Domain | Universal database for any use |
Contributions are what make the open-source community an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork this repository
- Create your feature branch:
git checkout -b feature/add-new-license-info - Commit your changes:
git commit -m 'Add detailed comparison for XYZ license' - Push to the branch:
git push origin feature/add-new-license-info - Open a Pull Request
- 📝 Content improvements — Fix typos, add examples, improve clarity
- 📊 New comparisons — Add license comparison tables or flowcharts
- 🌍 Translations — Translate guides to other languages
- 💡 New use cases — Add real-world case studies
- 🐛 Bug fixes — Fix any errors in license descriptions
- 📚 Additional resources — Add links to helpful articles or tools
Software Development Engineer I @ CodeBucket
Specializing in Frontend Architecture & Scalable Web Applications
- 🥇 Winner — GDG Patna Hackathon
- 🥈 Runner-up — HackIt AUP 2025
- 🎓 MCA (8.8 SGPA) — Amity University Online
- 🎓 BCA (8.75 CGPA) — Amity University Patna
- 🌐 Choose a License — GitHub's official license chooser
- 📖 OSI License List — Open Source Initiative approved licenses
- 🔍 SPDX License List — Standard license identifiers
- ⚖️ TLDRLegal — License summaries in plain English
- 📋 GNU License List — FSF's license compatibility guide
If this repository helped you understand open-source licensing, please consider:
- ⭐ Starring this repository
- 🍴 Forking to add your own insights
- 📢 Sharing with your developer network
- 🐛 Opening issues for improvements
"Understanding licensing is not optional — it's a fundamental skill that separates hobby coders from professional software engineers."
Made with ❤️ by Ashutosh Kumar
