Skip to content

Licensing - Wyatt's Notes

Welcome to the licensing notes.

Browse the content using the sidebar navigation on the left.

Every piece of software has a license — even if you did not choose one. Without an explicit license, copyright law gives you “all rights reserved” by default, meaning nobody can use, modify, or distribute your code. Choosing the right license protects you and communicates your intentions to users.

  • Copyright is automatic and grants exclusive rights to the creator. It does not need to be registered.
  • Licensing is the act of granting specific permissions to others. An MIT license grants broad permissions; a GPL license grants permissions with conditions.
  • Copyleft (GPL, AGPL) requires derivative works to use the same license. Permissive licenses (MIT, BSD, Apache) allow proprietary derivatives.
LicenseTypeKey Requirement
MITPermissiveInclude copyright notice
BSD 2-ClausePermissiveInclude copyright notice
Apache 2.0PermissiveInclude notice, state changes, patent grant
GPL v3CopyleftDerivative works must be GPL
AGPL v3Strong CopyleftNetwork use triggers copyleft
MPL 2.0Weak CopyleftFile-level copyleft

Choosing the wrong license can have lasting consequences for your project. A GPL license in a commercial product may require you to release your source code. A permissive license without patent protection may leave you vulnerable to patent claims. Understanding the legal implications of each license family is not optional — it is a fundamental part of software development.

  • For personal projects: MIT or BSD are simple and permissive. They allow anyone to use, modify, and distribute your code with minimal restrictions.
  • For commercial products: Apache 2.0 provides patent grants and explicit contributor licensing. Avoid GPL if you want to keep your code proprietary.
  • For community projects: GPL or AGPL ensure that improvements remain open. Choose based on whether you want to allow proprietary forks.

Software licences govern the legal use of code: Every piece of software has a licence, whether explicitly stated or determined by default copyright law. Understanding licensing is essential for developers, companies, and open source contributors.

Why it matters: Incorrect licensing can result in legal disputes, forced code disclosure, or loss of intellectual property rights.

The key insight: There is no such thing as “no licence” — if you do not specify one, default copyright applies, meaning nobody can legally use, modify, or distribute your code.

Confusing copyright with licensing: Copyright is automatic (applied on creation). Licensing is a choice — you decide how others can use your work. An unlicensed work is “all rights reserved” by default, even if you want to share it. Always apply an explicit license.

Using GPL code in proprietary software: GPL requires derivative works to also be GPL. If you incorporate GPL-licensed code into your project, your entire project must be GPL-compatible. Use MIT or Apache 2.0 for permissive licensing if you want proprietary compatibility.

Ignoring license compatibility: Not all licenses can be combined. GPL and Apache 2.0 have compatibility issues. BSD and MIT are broadly compatible. Before combining code from different sources, verify their licenses allow the combination.

  • Site Home: Main landing page for licensing notes.
  • Practice: Practice problems for revision.

This topic covers the fundamental principles and applications in depth. Each concept is explained with clear definitions, worked examples, and practice problems to reinforce understanding.

Understanding these core concepts is essential for mastering this topic. They form the foundation for more advanced study and are frequently examined.

Worked examples demonstrate how to apply the concepts to solve problems. Each example is broken down into clear steps with explanations.

  • Rushing through foundational material
  • Not practising problems after reading
  • Failing to connect concepts across topics

Consult the recommended textbooks and additional resources for deeper understanding of this topic.

This topic covers the fundamental principles and applications in depth. Each concept is explained with clear definitions, worked examples, and practice problems to reinforce understanding.

Understanding these core concepts is essential for mastering this topic. They form the foundation for more advanced study and are frequently examined.

Worked examples demonstrate how to apply the concepts to solve problems. Each example is broken down into clear steps with explanations.

  • Rushing through foundational material
  • Not practising problems after reading
  • Failing to connect concepts across topics

Consult the recommended textbooks and additional resources for deeper understanding of this topic.

This topic covers the fundamental principles and applications in depth. Each concept is explained with clear definitions, worked examples, and practice problems to reinforce understanding.

Understanding these core concepts is essential for mastering this topic. They form the foundation for more advanced study and are frequently examined.

Worked examples demonstrate how to apply the concepts to solve problems. Each example is broken down into clear steps with explanations.

  • Rushing through foundational material
  • Not practising problems after reading
  • Failing to connect concepts across topics

Consult the recommended textbooks and additional resources for deeper understanding of this topic.

This topic covers the fundamental principles and applications in depth.

Understanding these core concepts is essential for mastering this topic.

Worked examples demonstrate how to apply the concepts to solve problems.

  • Rushing through foundational material
  • Not practising problems after reading
  • Failing to connect concepts across topics

Consult the recommended textbooks and additional resources.

This topic provides comprehensive coverage of the subject matter.

  • Understanding core principles is essential
  • Practice and application reinforce learning
  • Connect concepts across related topics
  1. Review the worked examples
  2. Complete the practice problems
  3. Explore related topics in other sections
  • Review this material regularly
  • Apply concepts to real scenarios
  • Connect with related topics
  • Review this material regularly
  • Apply concepts to real scenarios
  • Connect with related topics
  • Understanding this topic is important for software licensing
  • Review the key concepts and practice regularly
  • Connect with other licensing topics for a complete understanding

Review the key concepts and practice regularly to master this topic.