Hello everyone!!! Hope you all are safe 😊.

Today I hope to write a blog about software licensing. Hope you all get a better idea of what is software licensing, types of software licenses with examples and How do we know what licenses apply to the code in my codebase.

What is a software licensing?

A software license is a document that provides legally binding guidelines for the use and distribution of software.

The software license usually answers questions such as

Where and how and how often can you install the program?

Can you copy, modify, or redistribute it?

Can you look at the underlying source code?

The price of the software and the licensing fees, if any, are sometimes discussed in the license agreement, but usually it’s described elsewhere.

Let’s have a look at the types of software licenses

Public domain

Most permissive type of software license

Can anyone modify and use the software without any restrictions but secure before adding it to your codebase

A code that doesn’t have an explicit license is NOT automatically in the public domain. This includes code snippets you find on the internet.

Examples: SQLite, I2P, and CERN httpd

Permissive

Also known as “Apache-style” or “BSD style.

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.

Examples include the GNU All-permissive License, MIT License, BSD licenses, Apple Public Source License, an Apache license.

LGPL

Allows you to link to open source libraries in your software.

If you simply compile or link an LGPL-licensed library with your 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

Also known as reciprocal licenses or restrictive licenses.

Allows 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.

Users of your software would also have the right to modify the code.

An example of a copyleft or reciprocal license is the GPL

Proprietary

The most restrictive software license type.

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.

Examples of proprietary software include Microsoft Windows, Adobe Flash Player, PS3 OS, iTunes, Adobe Photoshop, Google Earth, macOS (formerly Mac OS X and OS X), Skype, WinRAR, Oracle’s version of Java, and some versions of Unix.

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

Before you can determine which licenses govern any reused code in your codebase, 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.

Thank you very much for reading this article. Stay safe😊😊😊.

Software Engineer Intern at WSO2