01 May 2014

A simplified reference to various license terms

Most people find it a nightmare to read through licenses and make sense of them. Legally, you're required to actually read through each and every word of it, but I thought I'd simplify the process for you by putting it in more simple terms (at your own risk). Writing new licenses in simplified terms is called "crayon license", and is not necessarily a good thing.
During the course of my work (I'm a software developer; not a lawyer), I've had to evaluate many open source and proprietary licenses.
There are even groups that can help with the legal problems related to licensing.
For choosing a license there's this, for a comparison there's this and also some nice charts here.

Short form

FOSS licenses also come with a disclaimer that there is no warranty.

  • A Copyleft license means: You can use, modify and distribute the license under the same or equivalent license, but you should also share the source code.
  • Berkely Software Distribution license (BSD): You can combine the software with your proprietary software and release it under a proprietary license, but you have to retain the BSD license text and notices. This license may also have one or two more clauses about using the author's name or advertising.
  • Gnu Public License (GPL): You can use, modify and distribute the software for free or for a fee, but you have to also distribute the source code with it, and if the software is combined with other software, that software will also have to be released as GPL, unless it is not an aggregate (it does not interact with the GPL software)
  • Lesser Gnu Public License (LGPL): Same as GPL, but you're allowed to link your proprietary software with LGPL software and release it under your terms. But there are some conditions under which you can do so.
  • Affero Gnu Public License (AGPL): Same as GPL, but it additionally says that your software is considered as having been distributed, if someone else is able to use it (like if you keep it on a server and they can run it from the server).
  • Massachusetts Institute of Technology license (MIT): You are allowed to use, modify and distribute copies of the software as long as you allow the same rights to the person to whom you distribute the software
  • Apache License: You are allowed to use, modify and distribute copies of the software, and you can add your own copyright statement to the changes you make. You can also provide additional or different license terms and conditions for use, reproduction or distribution of your modifications.
  • Mozilla Public License (MPL): You can use, modify, distribute and sell the software, provided you also give the recipient the source code. You can also sub-license the modified work, provided you don't restrict the recipients rights to the source code.
  • Boost Software License: You can use the software and create derivative works out of it provided you include the license text and disclaimer in all derivative works (no need to include the text if the derivative work is object code).
  • Expat License: You can use the software for free, use it, modify it, sublicense it and sell it and allow those who receive it to do the same, provided the license text is included in all or a reasonable number of sections of the software.
  • Do What The Fuck You Want To Public License: Strange as the name is, this is a real license. This license when applied to a software, allows you to do whatever you want with it. No restrictions.
  • X11 License: You can use the software for free, use it, modify it, sublicense it and sell it and allow those who receive it to do the same, provided the license text is included in all or a reasonable number of sections of the software. Additionally, you cannot use the name of X Consortium to advertise or promote the sale of the software without their written permission.
  • Zlib License: You can use the software freely, even commercially. You can modify and redistribute it provided you do not claim to have written the original software. If you're using this software, an acknowledgement in the product documentation would be nice, but not explicitly required. If you alter the source code, it should be explicitly mentioned that it is altered source code. The license text should be present in all unmodified and modified copies of the source code.
  • Common Development and Distribution License (CDDL): You can use, modify and sublicense the software, even as part of a larger software. You have to make the source code available to those you distribute the software to. Any modifications you make are also covered under this license, and you should mention that you modified it. You aren't allowed to modify any of the other copyright notices and you can't alter the terms of the license in a way that restricts the rights of those who receive it. You can charge a fee if you offer warranty, support or liability, but none of the other contributors of the software can be held responsible for it.
  • Common Public Attribution License (CPAL): If you're a developer, you can use, modify, sublicense and use the software as part of a larger work. If you're distributing or contributing to the software, you can use, modify, sublicense and sell the software from the date the contributor who gave you the software first makes commercial use of the software. The software can be distributed only under the CPAL and all copies of the software should contain the license text and if you've modified the software, you should provide documentation of what you modified and include the name of the initial developer. You also have to make the source code available to the recipient. You can distribute the executable under your own license (provided you also comply with CPAL), but the accompanying source code should not restrict the recipients rights provided by the CPAL. You can combine the CPAL code with other code, but have to ensure that the code under CPAL remains covered by CPAL.
  • Common Public License (CPL): You can use, modify, sublicense, sell the software. There is no guarantee on infringement of intellectual property rights. You can distribute the program in object code form under your own license provided you comply with CPL, not hold any of the contributors liable for any problems, specifically mention that which of the license terms are yours and specify how the recipient can obtain the source code. If you distribute the source code, it has to be under the CPL and you have to supply a copy of the CPL along with it. You cannot alter/remove any copyright notices and if you've contributed to the source code, you have to mention it.
  • Eclipse Public License (EPL): You can reproduce, distribute, sublicense the software in source code and object code form (provided it complies with the EPL, has a disclamer of warranties and states that the source code is available and where it is available from). Every contributor to the software should mention which portion of the software they contributed to. You can distribute the software commercially so long as other contributors to the software are not liable for any problems and if you agree to defend the other contributors from losses, damages and costs arising from legal action. Unless explicitly stated, the EPL offers no warranties or liabilities.


Long form
[explained only for select licenses]

A Copyleft license:
  • Any license which gives a person the freedom to use, study, copy, share, modify and distribute the work under the same or an equivalent license.
  • When distributed, the source code of the original or modified work should also be provided along with the software.
Types of copyleft licenses:
  • Strong copyleft (Eg: GPL, Design Science License) : Programs and derivative works should carry the same license.
  • Weak copyleft (Eg: LGPL, MPL) : Allows programs of any license to be compiled and linked against the copylefted library and the derived software can be re-distributed under any licensing that the author chooses.
  • Full copyleft: All parts of the work may only be modified and distributed under the copyleft license terms.
  • Partial copyleft: Distribution of some parts of the work is allowed under terms different from the copyleft license terms.
  • Share-alike: Any freedom given by the license should be given in exactly the same way or a compatible way in any derived work.
And be careful; the copyleft symbol has no legal significance, so it doesn't indicate any legal rights to any work to which you apply it to.

ps: Some free software licenses that are non copyleft are X11 license, Apache license and BSD.

The BSD License

You're allowed to use BSD licensed software in your proprietary software. You can also release this combined work (your software + the BSD licensed software) under a proprietary license as closed source software. The software is provided with no warranties or liabilities.

2 clause BSD License:
  • Redistributions of the source code should retain the copyright notice and the list of conditions of the license
  • Redistributions of the binary form of the software should show the copyright notice in the documentation that is provided with the software.
3 clause BSD license:
Same as the 2 clause license, but with this addition:
  • You are not allowed use the name of the organization that created the software or the names of the contributors to the software, in order to endorse or promote products created from the software without written permission from those people.
4 clause BSD license:
Same as the 3 clause license, but with this addition:
  • If you mention the features or use of the software (which is under this license) in any advertising you do, the advertising material should include the following sentence: "This product includes software developed by the [name of the organization that made the software]".

The GNU General Public License (GNU GPL / GPL)

Accepting this license is not required if you're just receiving or running a copy of a software covered by GPL. But you'll be breaking copyright law, if you propagate or modify the software without accepting the license. By applying GPL to your work, you're protecting user's legal rights from anti-circumvention laws (the laws which restrict 'fair use' of digital info).

If you're handling the source code of a software under GPL:
  • Copies of the source code have to retain the copyright notice and warranty. 
  • You can use copies of the code for free and distribute copies for free or for a fee (but you should tell those who receive the code to follow and display the same license rules).
  • There is no warranty for the code, but you can offer support or warranty protection for a fee.
  • Patents cannot be used to make the program non-free (free, meaning "freedom". Not money)
  • The use of code under GPL with a separate module of code (which may be under a different license and is not an extension of the code under GPL) is allowed if the other module of code is not combined with the code under GPL to form a larger program and if the resulting copyright of both modules of code does not restrict the legal rights of the code under GPL. In such a case, the GPL does not apply to the other module of code.
  • You can combine the code under GPL, with code under version 3 of the GNU Affero GPL, provided that section 13 of the Affero GPL will also apply to the combined product.
  • If you modify the source code or create a software based on the code covered by GPL, the work must have a clearly visible legal notices in the GUI, stating that you have modified it and at what date you did so. Also, the resulting code will also be covered under the GPL.

If you're handling only the compiled/binary form of the software under GPL:
  • If you give someone a compiled form of code under GPL, you also have to give them a copy of the source code (you can charge them the minimum fee for the cost of giving it to them - cost of CD/DVD/Transport etc.).
  • If you're distributing a modified form of the software, you should provide information required to install and execute the program.
  • The copy of the source code you distributed, must not be protected by a password or other ways of preventing a person from accessing the code.

You can also add these terms to your GPL license:
  • You can specify different conditions for liability and warranty (different from what is given above)
  • Specification that legal notices or author attributions should be retained
  • Not allowing someone to wrongly mention the origin of the software or requiring that modified versions of the software should specify that the software was modified.
  • Placing limits on the use of the author's name for publicity.
  • Not allowing rights under trademark law for the use of some trade names
  • Mentioning that the author or licensor of the software is not liable if someone takes up liability for a modified version of the software that they distribute.

Termination of the license:
  • If you distribute or modify software under GPL in any way that is not covered under the license, your rights to the software (including patent rights) will end.
  • If you stop violating the license, then your rights to the license is given back to you conditionally, if the copyright holder terminates your license. Your rights are terminated permanently if the copyright holder does not notify you about the violation before 60 days from when your license rights ended.
  • Your license rights are granted to you permanently if you fix the violation within 30 days of the copyright holder notifying you of a violation of license terms (and provided it's the first time you're receiving such a notification).
  • If your rights have been terminated, you cannot receive any more licenses for the same software, but this does not terminate the licenses of others who have received rights or copies of the software from you under this license.

How to apply the GPL to your program:
  • Attach the notices given at the bottom of the license page, to the start of each source file. Each file should have at least the copyright line and a pointer to the location of the complete license terms. 
  • Also include your contact information (email and paper mail)
  • If necessary, get your employer or school (if you're a student) to sign a copyright disclaimer for the program.

The GNU Lesser General Public License (LGPL)

The LGPL does not require you to comply with section 3 of the GPL, which prevents a person from limiting the operation/modification of a work that's released under LGPL.

Modifying and distributing a software under LGPL
If your modified code uses a reference to a function or data (this function or data has to be supplied to your modification by an application that uses your modification), then you're allowed to distribute a copy of the modified version under LGPL, provided that you ensure that in case the other application does not supply the function or data, your modifications should still work as per the purpose it was created for.
In such conditions, you can also release it as GPL.
Just remember, that the passing of the function or data by the application should be done by any means other than as an argument passed when your modification is invoked.

Using object code of an application + LGPL software's headers
You can distribute software under your own license if the object code of your own application uses material from a header file that's covered by LGPL.
But, if the header file contains anything more than numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), then you have to give a prominent notice with every copy of the object code, that the header file of that particular LGPL software is used in it and that the library and the use of the library are covered by LGPL. Also, the object code has to be distributed with a copy of the GPL and LGPL.

Combining your software with a software under LGPL
You can combine your software with an LGPL software if:
  • You shouldn't restrict modifications and reverse engineering (for debugging) of the combined work
  • Give a prominent notice that the LGPL software is used in the combined work and that the LGPL software and it's use are covered under LGPL.
  • Distribute the combined work with a copy of the GPL and LGPL.
  • If the combined software displays any copyright notices when it runs, you should also display the LGPL notice and let the user know where you placed a copy of the GPL and LGPL.
  • If the user would need instructions on how to install and execute the combined work, you should also provide installation information as specified in the GPL. You should also do either (1) or (2). Your choice of which you choose to do. See below
  1.  Distribute the source code of the combined work (note that you're only required to distribute the sections of your source code and the source code of the code under LGPL, which are linked together. Parts of your source code that are not linked with the LGPL code, you don't have to distribute). You have to distribute it under terms that allow the user to recombine/relink the application with a modified version of the linked version. This way the user will be able to produce their own combined work.
  2. Use a shared library mechanism for linking with the software under LGPL. The mechanism has to use at runtime, a copy of the library already present on the user's computer and it should operate properly with a modified version of the LGPL software which has a compatible interface with the linked version of the software.
 Combined libraries
You're allowed to create a single library that is composed of the library you created by combining your software with the LGPL software, and along with other libraries (even if these other libraries are not under LGPL, but they should be libraries; not applications). Such a library you create from a cluster of libraries, you can distribute under your own terms and conditions if:
  • You give a prominent notice with the combined library, that part of it is based on the library that is covered under LGPL and provide information on where the user can find the uncombined version of the library.
  • You also have to give the user a copy of the uncombined form of the library under LGPL and a copy of the LGPL.

Affero General Public License (AGPL)

The AGPL was designed to close a perceived application service provider loophole in GPL, where, someone could avoid the copyleft provisions of the GPL by using, but not distributing the software.

AGPL is same as GPL, but it additionally says that your software is considered as having been distributed, if someone else is able to use it. Eg: if your application is on a server which someone is able to access and use, then even though you haven't actually distributed your application to the user, it is considered as distributed, when under AGPL.

MIT License

For a software that is covered by MIT license: The software is provided with no warranties or liabilities. You are allowed to use, copy, modify, merge, publish, distribute, sub-license, and/or sell copies of the software as long as you allow the same rights to the person to whom you distribute the software and also provided that you display the MIT copyright notice and permission notice in all copies of the software or at least in a majority of the portions of the software.

Apache License

Every contributor to an Apache license has to give you worldwide, no-charge, royalty-free, license (which cannot be revoked/withdrawn) to reproduce the software, create derivative works from it, to publicly display the work, to publicly operate the work, to sublicense the work, to distribute the work and derivative versions of it in source form or as object code.
The Apache license does not grant any warranty or liability, but when redistributing the work or derivative works, you can choose to offer and charge a fee for acceptance of support, warranty, indemnity or other liability and/or rights that follow this license. You can do so only under your own responsibility. No other contributor of the work will be liable.

Patent license
 Every contributor to an Apache license has to give you worldwide, no-charge, royalty-free, patent license to make, use, sell, import and transfer the work, where the license applies only to those patent claims which the person has contributed to the work.
If you start a patent litigation against anyone, saying that the work or a contribution in the work is a patent infringement, then the patent licenses granted to you shall end on the date you file the litigation.

Redistribution of the work
You can reproduce and distribute copies of the work and derivative works in any medium, with or without modifications, and in source or object code form if you follow these conditions:
  • Everyone who receives the work or derivative work from you, should also receive a copy of this license.
  • All modified files must have notices which say that you changed the files
  • In the source code, you must retain all copyright, patent, trademark and attribution notices (you don't have to retain notices that don't belong to any part of the derivative work)
  • The above point applies to any "NOTICE" text that's part of the distribution too. The contents of such a notice are only for informational purpose. It doesn't modify the license. You can also add attribution notices of your own to derivative works you create.
You're also allowed to add your own copyright statement to the changes you make to the work, and can also provide additional or different license terms and conditions for use, reproduction or distribution of your modifications or for such derivative works. This is allowed only if your use, reproduction and distribution of the work follows the conditions of the Apache license.

Contributions submitted by you
Unless you specify any terms, any contribution you intentionally submit to be included in the work, will be under the terms and conditions of the Apache license.

This license doesn't give permission to use the trade names, trademarks, service marks or product names of the licensor except for use in describing the origin of the work and reproducing the content of any NOTICE file.

Mozilla Public License (MPL)

For intellectual property rights, you are given a world-wide, royalty-free license under intellectual property rights to use the software, reproduce it, display it, perform it, either by modifying it or without modifying it. A contributor to the software has the right under patent claims, to make, use, sell, offer for sale, import and transfer contributions of the software or have made contributions to the software or the contributor version of the software. These rights granted are effective for each contribution on the date the contributor distributes the software.
The software is given with no warranty or liability. Any litigation may be brought only in the courts of jurisdiction where the person maintains their main place of business and such litigation will be governed by the laws of that jurisdiction. Anyone can bring cross-claims or counter-claims too.

Limitation on the grant of license
No other license is granted, apart from what is specified above. If a contributor has removed code from a software or if there's any patent infringement by you or a third party, the contributor gives you no patent license. You're also not allowed to use any trademarks, service marks or logos of any contributor, unless you're doing so to follow the requirements of displaying a license notice as specified in the "Notices" section below.

This license does not limit rights of fair use, fair dealing or other equivalent rights as per copyright.

Distributions of source code
All distributions should be under this license and you must inform the recipients of the software about the terms of this license.

Distribution of the executable version of the software
  • If you distribute the executable, you also have to provide the source code to the recipient. If you incur any cost in giving them the source code, you can charge them that exact amount.
  • You can either distribute the executable under this license or sub-license it under different terms, provided you don't restrict the rights of the recipient, for the source code.

Distribution of a larger work
If you combine the software with other work in separate files (which are not covered by the Mozilla public license), you can distribute the combined work under terms of your choice, provided you also follow the requirements of the Mozilla public license. If the other work is covered by a license that is compatible with this license, you're allowed to distribute such covered software under terms of the other license, so that the recipient of the combined work can have the option to further distribute the software under the terms of either this license or the other license.

You aren't allowed to remove or alter any notices that are contained in the source code form of the software. However you can alter any inaccuracies of fact in the notices.

Additional terms
You can offer and charge a fee for warranty, support, indemnity or liability (you can place limitations on the jurisdiction of the liability) to those whom you distribute the software to, but by doing so, none of the other contributors of the software will be liable.

Inability to comply with the license terms
If you cannot comply with the license terms for a legal reason, you must comply with this license as much as possible and describe the limitations and the code it affects, in a text file that should be included in all distributions of the software. The description should be detailed in such a way that a person should easily be able to understand it.

  • The rights granted to you will be automatically ended if you don't comply with the terms of the license. However, if you comply to the license again, the rights will be granted to you again provisionally, unless a contributor terminates your license grant and it's granted to you again on an ongoing basis if the contributor does not notify you of the non-compliance before 60 days from when you have begun compliance. Your rights will also be given back to you if this is the first time the contributor has notified you of a non-compliance and you become compliant within 30 days of receiving the notification.
  • If you start a litigation against anyone by specifying a patent infringement claim saying that a contributor version of the software directly or indirectly infringes any patent, then the rights granted to you will terminate. In such a situation, rights granted to those whom you distributed the software to, will not be terminated.

  • A law or regulation which says that the language of this license shall be interpreted based on the person who created this license, shall not be used to interpret the license against a contributor.
  • Nobody other than Mozilla Foundation has the right to modify or publish new versions of the license.
  • You can distribute the software under the current license terms or future versions published by Mozilla Foundation.
The bottom of the page of the Mozilla Public License provides the notice text which you can use for the source code form of the license and the notice for incompatibility with secondary licenses.

Other licenses listed by the free software foundation can be found here


Anonymous said...

Can I simply say what a relief to find somebody who
really understands what they're talking about
online. You actually understand how to bring a
problem to light and make it important. More and more people really need to look at this and understand this
side of your story. I was surprised that you're not
more popular since you definitely possess the gift.

Nav said...

That's very kind of you to say so :-)
The knowledge shared on a blog can only be as important as the value it adds to people's lives. If you believe more people could benefit from this knowledge, do let them know.