article cover

Development

Dev's guide to software licenses

~ 7 minute read

Alex Rus
Senior Full-Stack Software Engineer

15 Nov 2022

Open source represents more than 90% of the components of modern applications, yet many developers associate “open source software” with “free to use software”

Not all "free software" is equal, this is why there are a lot of open source licenses, most of which can be grouped into two categories

  • Permissive Licenses

    • These place little restriction on how others can use your source code and re-share your software. They also generally have a high level of license compatibility, meaning you can legally combine multiple pieces of software and distribute them together.
  • Copyleft Licenses

    • These require that anyone who releases a modified open source program must also release the source code for that program. This type of license generally allows users to change and re-share your creation as long as they also include their source code for others, too.

Licenses tell the world the conditions under which they can and can’t use an open source project and ensure that open source software developers — the community of minds behind many of today’s most innovative technologies — are able to protect their creations as they see fit.

If you think “I don’t own any open source projects, so I don’t care about open source licenses”, but you develop software for commercial use and you use open source libraries you might want to pay more attention as some licenses might impose more restrictions.

Here is a short rundown of the most important licenses:

Popular Permissive Software Licenses

MIT License

The MIT License is one of the most commonly used and permissive open source licenses. Under this license, you can essentially do anything with the software as long as you include the original copyright and license notice in the copy of the software. It is also compatible with many copyleft licenses, including the GPLs.

Apache License 2.0

The Apache License 2.0 is another commonly used permissive open source license. With this license, you have the freedom to do what you want with the software, with the exception that you must include the original copyright and license notice, state any significant changes, and include the NOTICE file if there is one. It's also important to note that while the Apache License 2.0 is compatible with GPL v3, it is not compatible with GPL v2.

BSD License

The BSD License, short for Berkeley Software Distribution, allows the freedom to use, modify, and distribute the software as long as the copyright notice and license text are included in the copy of the software. There are several different variants of this license; the difference between these versions is the number of clauses, or restrictions, included. The BSD 3-Clause License (also known as the "New BSD License" or "Modified BSD License") is the most popular variant. The BSD 3-Clause is very similar to the MIT Licenses, with the key exception of the BSD 3’s non-endorsement clause, which prohibits distributed derivative works from using the name of the original code's author or contributors for promotional purposes.

Popular Copyleft Software Licenses

GPL License

The GNU General Public License family, or GPL for short, includes two of the most commonly used copyleft licenses: GPL v2 and GPL v3. (GPL v1 is no longer widely used.) The GPL License states that if you write and distribute a program using a GPL-licensed component, you must also release the full source code while giving your users the same rights you received. This license was created to protect software from becoming proprietary, or private, which is why many programmers like this license. They get the assurance that the restrictions with the GPL License will keep their work free and acknowledged.

Mozilla Public License 2.0

The Mozilla Public License 2.0, also known as MPL 2.0, is a weak copyleft license maintained by the Mozilla Foundation. If a distributed program modifies code licensed under MPL 2.0, those modifications must also be licensed under MPL 2.0 and made available in source code form. However, if a distributed program simply uses (as opposed to modifies) MPL 2.0-licensed code and keeps it in separate files, they can combine that code with non-MPL code to create a larger work.

Okay, but what does this mean?

Let's take a look at an example, the Java MySQL Connector is under a GPL license. If you use this in your Java application you either need to make your sourcecode public or buy a license in order to use it properly.

Check this appendix (https://choosealicense.com/appendix/) for a larger list of licenses and more details about permissions & restrictions that apply to each license.

Note:

This content is not legal advice, it’s meant to raise developer awareness regarding software licensing.

Written by

Alex Rus

Senior Full-Stack Software Engineer

Share this article on

We create value through AI and digital software engineering in a culture of empowerment that enables new perspective and innovation.

OFFICE

24 George Barițiu street, 400027, Cluj-Napoca, Cluj, Romania

39 Sfântul Andrei street, Palas Campus, B1 block, 5th floor, 700032, Iasi, Iasi, Romania