Software Licensing

Neminda Prabhashwara
3 min readSep 9, 2020

What is software license

A software license is a document that provides legally binding guidelines for the use and distribution of software. Software licenses typically provide end users with the right to one or more copies of the software without violating copyrights.

If you write code, you also reuse code, including code snippets, libraries, functions, frameworks, and entire applications. All software code comes with certain rights and obligations if you want to add it to your code base. Free and open source software (FOSS) is free of cost, but you aren’t free to use it as you wish.

There are many software license types. In this article I bring forth five common types of license in using.

Public Domain

This is the most permissive type of software license. When software is in the public domain, anyone can modify and use the software without any restrictions. But you should always make sure it’s secure before adding it to your own code base.

Permissive

Permissive license are also known as “Apache style” or “BSD style.” They contain minimal requirements about how the software can be modified or redistributed. This type of software license is perhaps the most popular license used with free and open source software. Also another type of permissive license is the MIT license

MIT license:-

The MIT Software Licensing gets its name from the fact that it was created at the Massachusetts Institute of Technology. The license was written for the X Window System, but has also been used in Expat, PuTTY, the Mono Development Platform class libraries, CakePHP, Ruby on Rails, Symfony, and Lua.

LGPL

The GNU Lesser General Public License allows you to link to open source libraries in your software. If you simply compile or link an LGPL-licensed library with your own code, you can release your application under any license you want, even a proprietary license. But if you modify the library or copy parts of it into your code, you’ll have to release your application under similar terms as the LGPL.

Copyleft

Copyleft licenses are also known as reciprocal licenses or restrictive licenses. The most well-known example of a copyleft or reciprocal license is the GPL. These licenses allow you to modify the licensed code and distribute new works based on it, as long as you distribute any new works or adaptations under the same software license. For example, a component’s license might say the work is free to use and distribute for personal use only. So any derivative you create would also be limited to personal use only.

The catch here is that the users of your software would also have the right to modify the code. Therefore, you’d have to make your own source code available. But of course, exposing your source code may not be in your best interests.

Proprietary

Of all types of software licenses, this is the most restrictive. The idea behind it is that all rights are reserved. It’s generally used for proprietary software where the work may not be modified or redistributed.

How do I know what licenses apply to the code in my code base?

Before you can determine which licenses govern any reused code in your code base, you need to create a software bill of materials, or a list of all the components in your code. And the fastest way to generate that list is with a software composition analysis tool. A good SCA tool will be able to find full components as well as code snippets, and it’ll tell you which licenses apply to each piece of code and whether you might be using licenses that have conflicts.

Resources:

--

--

Neminda Prabhashwara

Software engineering undergraduate, University of Kelaniya Sri Lanka