A Drive through Software Licenses

A Drive through Software Licenses

You got a license for that, mate?

Picture this: you spent months upon months working on a project, a labor of love if you will, and you choose to make your project free and open source; but then, some schmuck comes along, copies your entire code base as is, claims it to be their own, and monetizes the heck out of it: You’d feel pretty miffed about that, wouldn’t you? I know I would!

So, let’s say you’re pissed at this and then you decide, “If you can’t beat ‘em, join ‘em!”, and begin to indiscriminately use code from other open-source projects for your new project. Your work is made a lot easier but you still spent a few months making sure code from different sources interfaced correctly, and then all of a sudden, BOOM: cease-and-desist. Turns out one (if not more) of the code bases you copied from was in fact, protected by a software license: and the owners of this particular code base didn’t look kindly upon thieves, and decided to shut you down for good. Oopsie!

You should now understand how important it is to have some knowledge about software licenses if you are writing code in any serious capacity: Both to make sure that your code is safe, and also to make sure someone else doesn’t make off with your code.

A Software Licence is an agreement that grants a user access to software and its functions. According to Wikipedia, a Software Licence is a legal instrument governing the use or redistribution of software. A typical software license grants the licensee, typically an end-user, permission to use one or more copies of the software in ways where such a use would otherwise potentially constitute copyright infringement of the software owner's exclusive rights under copyright. They often place restrictions on how a user may work with the software. They can also provide developers with a clear pathway of legal recourse when users don't comply with the stipulations in licensing agreements. Software licenses aim to ensure all parties that create and use the software can benefit from it. These licenses also help define the extent to which a user can operate the software, access it, modify it and distribute it.

So, if you want to make your source code publicly available, and you want to allow people to build upon your code base (as long as you get credited): You can do that!

The MIT License, well known for its permissivity and conciseness

Types of Software Licenses

Different types of software licenses require you to meet certain obligations if you want to reuse the code. There are two primary types of software licenses: commercial and open-source. Commercial software licenses typically require a fee, while open-source licenses are free to use. However, open-source software licenses do come with certain obligations. This means that, despite the code being free, you cannot just use it however you like. There are five subtypes of software licenses that differ based on how they are viewed under copyright law.

Public Domain Licence

Also called Free Open-Source Software licenses (FOSS). Open-source licenses are legal and binding contracts between the author and the user of a software component, declaring that the software can be used in commercial applications under specified conditions. Each open-source license states what users are permitted to do with the software components, their obligations, and what they cannot do as per the terms and conditions. The customer is usually allowed to use the source code to change the software.

Example: GIMP

GNU Lesser General Public License (LGPL)

The GNU Lesser General Public License (LGPL) is a software license the Free Software Foundation released. The LGPL is an offshoot of the GNU General Public Licence (GPL) that allows developers to use open-source libraries within the code of their software without releasing the source code they used to create their components.

Example: 7-Zip

Permissive Licence

A permissive license offers users an agreement with few requirements about how they can modify, redistribute and use the software. This type of license is similar to public domain licenses but is more restrictive because it may have certain conditions for intellectual property protection. This license commonly requires you to retain copyright information about the licensed software in your distribution.

Example: The Apache License 2.0

Copyleft Licence

Copyleft licenses are reciprocal or restrictive. Although they're similar to an LGPL, a copyleft license has more stipulations to follow. For example, it allows a user to modify and use proprietary code with the requirement that you release any resulting software under the same guidelines. This can help generate a more open developmental world because these new works become sources of inspiration/help for others who create products, which they also release under the copyleft license.

Example: Audacity

Proprietary Licence

Proprietary licenses are the most restrictive type of software license available. Most proprietary licenses reserve all rights of a developer or publisher upon the release of the software dictates that users may not change or redistribute software or its code and require end users to accept a proprietary-licensed software's end-user license agreement (EULA) if they want to use the software. This protects the interests of the developer more than any other license type.

Example: Windows

Unlicensed Software

Unlicensed software or Pirated software is the unauthorized use or distribution of copyrighted software, it includes downloading, sharing, selling, or installing multiple copies of licensed software. Unlicensed software use also includes license infringement – installing a piece of software more times than the license permits – as well as sharing software license codes, uploading software codes to websites so others can download and use it, sharing software license codes or activation keys, as well as user IDs and passwords for web-based software applications. Unlicensed software use is illegal and can result in both civil as well as criminal penalties.

Risks

  • It gives birth to security risks like loopholes and backdoors. It might also contain viruses and such.

  • There is no ongoing support or updates for this software.

  • If you are caught using such software, there will be legal repercussions.

  • It might not work at times or at all, due to the presence of bugs or due to compatibility issues

End-User License Agreement (EULA)

A EULA is a legally binding agreement between the owner of a product (often software) and the end-user – more specifically a contract between the licensor of a product and the licensee. It specifies the rights and restrictions that apply to the software, and it’s typically presented to users during the installation/set-up stage. EULA are important for protecting the rights of the business owner/licensor and critical for setting the rules of use and managing the expectations of the end-user. EULAs do not protect the consumer, and the consumer should never assume that they have purchased the actual software code that runs an application -- they are only agreeing to the owner's terms for using the software.

Conclusion

So, you’re now educated about software licenses and you’re ready to tackle the software world head-on, aren’t you? WRONG! Software licenses are a vast field, and we’ve barely scratched the surface here. You now have a general idea about what certain types of licenses can or cannot do, but you’ll have to do some research of your own to figure out which specific license works best for your use case.

Here is a useful tool we recommend to make this process way easier!

And with that, we’ve come to the end of what we hope has been an informative and useful blog piece. Now it’s your turn. What software licenses do you have experience with? Do you have any favorites? Let us know in the comments below! And until next time, happy coding!

Credits

Editor: Martin James

Editor/writer: M Adithya Sajith

Writer/designer: Jovin Joy Arakkal