Linux Misc

How Does Software Licensing Work?

As a developer, understanding the rights you have over any codebase is really important, and šŸ‘‡

A license is a legal document (set by the author) which states the rights you have over a particular codebase.

šŸ“œ Types Of Licenses

Software licenses are mainly categorized into 3 types šŸ‘‡

1ļøāƒ£ Copyright Ā©

A copyright license will prevent everyone except the author from copying, distributing, modifying or selling the material (be it code, binary or anything else) irrespective of whether it is available publicly or not.

The author can (or has to) explicitly grant the right to copy or sell to select entities (companies or individuals).

An example would be Microsoft Windows. You cannot copy, modify or re-sell Windows under a different brand. But selected computer manufacturers have explicit permission to slightly modify Windows before shipping.

You may have seen certain PC vendors install their own software, change the wallpaper, change system policies, etc. Before selling the computer with Windows in it.

2ļøāƒ£ Copyleft Ā©

Copyleft licenses freely allow copying, distributing, modifying, selling of material under certain conditions. The exact conditions depend on the license being used.

A lot of open-source evangelists use a Copyleft license, because a Copyleft license forces the software using it to also have the same license.

For example, if you've built a software consisting of 10,000 lines of code with the intention of using a Copyright license but used a library (a small piece of code written by someone else to do something specific) of only 10 lines of code licensed under a Copyleft license, then you're forced to release the entire project under a Copyleft license šŸ™Œ

Due to this viral nature of Copyleft licenses, corporate companies avoid using several popular, tried & tested libraries & frameworks that are licensed under a Copyleft license.

3ļøāƒ£ Permissive

Permissive licenses basically have no restrictions šŸ™Œ

The biggest difference being, you can use a software under a permissive license and you're not forced to release your software under the same license.

All you need to do is give acknowledgement to the software developer by including a copy of the license document.

What is the Unlicense? šŸ¤”

Unlicense also commonly known as Public Domain is a license that allows anyone to do anything without any restrictions.

Software released under this Unlicense comes with no warranty. You're completely on your own when using materials under Public Domain.

šŸšØ Having No License

A project having no license has all of it's rights reserved to the author.

You can only view the source code but nothing else, that too only if it is publicly available (source-available).

An explicit permission is required from the author (copyright holder) to do anything to that codebase.

āœØ What is Open-source?

In order for a project to be called Open-source, it has to satisfy the below requirements šŸ‘‡

  1. Have an OSI approved license document (Copyleft or Permissive)
  2. Source code should be available publicly
  3. Contribution shall be allowed without discrimination (following license & terms)
  4. And more rules

If a codebase isn't satisfying any of the above rules, then it is not considered Open-source project/software.

šŸ’” FAQ

I see my Open-source project is being used to harm others, how can I stop them?

Simple answer: you can't āš ļø

This is one of the drawbacks of Open-source software, they can be used for any purpose as long as they abide by the license.

If you believe your software can be misused, better don't release it under an Open-source license šŸ¤·ā€ā™‚ļø

What if I want to change the license?

As long as you're the only one working on it (this includes issues, pull requests, and other tasks as well) you can simply change the license document and you're done šŸ™Œ

But if the project has other contributors, you will be required to contact them all and ask for their permission. Put simply, it's complicated šŸ¤·ā€ā™‚ļø

Alternatively, you can switch to a more permissive license that doesn't violate the previous license & terms.

šŸ’Æ Conclusion

There needs to be more awareness on licenses & Open-source. My intention behind writing this article is to bring some clarity on the concepts we use everyday āš”

I hope you'll be able to take a better decision on which type of license to choose for your next project āœØ

I found choosealicense.com website really helpful when choosing a license.

Still having questions? šŸ¤”

Follow me on Twitter

Thank you šŸ˜Š