UP | HOME

Date: [2020-06-20 Sat]

Open Source License

Table of Contents

1. PyConf Talk

(Source) Objective: To learn the basics of how intellectual property law and in particular copyright works.

The idea is that to encourage people to make expressive, creative works, we have laws that give them exclusive rights to copy, distribute, build upon, and modify that work, even though there may be no technical restriction that would otherwise keep anyone else from doing the same.

Copyright is given to the creator of a work completely automatically. You don't have to do anything to get copyrights or to keep them. That used to not be the case, but for a really long time now it's all been fully automatic.

Moral rights are a very closely related concept to copyright. In some countries, they're considered just a subset of copyright, and in some places, they're a little bit different, and in some places, they don't even exist at all. And moral rights are sort of the non-commercial part of copyright. It's not so much about making money off of your creation. It's about things like the right to be identified as the author.

1.1. Patents

Next big kind of intellectual property is patents. Where copyright was about creative works, patents are about protecting functional inventions. The deal is that you share the details of how your new gizmo works, and society in exchange gives you this exclusive monopoly on the invention for a little while.

1.1.1. Patent Trolls

The owner of a patent might try to get their patented software technique adopted as part of a standard. So that anyone who implements that standard then has to pay them money for a license or risk being sued. Or they might even actually themselves contribute the code that implements their patented technique, and then later, either because they planned this in advance or just because they changed their minds, they might come back later and try to sue you for using that code that they themselves contributed to your project. So some licenses have protections against this kind of thing.

1.2. Trademarks

The idea behind a trademark is to protect protect consumers from fakes that might be trying to take advantage of the good reputation of a particular brand by imitating or copying their name or logo or identifiers like that.

You might remember that in 2013, the Python Software Foundation actually had to fight for the name "Python," and up until very recently earlier this year, the Debian GNU/Linux distribution had to ship Firefox under the name "Iceweasel" with a really cute different little blue logo because of disagreements about trademarks, even though the licensing of that code was perfectly fine.

But again, most licenses don't have anything to say about trademarks, but you should know what they are because they do come up for software projects.

1.3. Licenses

1.3.1. Background

So a license is a set of permissions that you give to someone. When you create something like a piece of software, you alone have the right to it, and you have control over how to share those rights with others. And a license is what we use to give people rights they wouldn't ordinarily have, like the right to use the software, to modify it, or to copy and share it.

License can also be used to set conditions or create obligations.

  • The most obvious examples is of course proprietary software, which generally has a lincence that only gives you the right to use it but prohibits you not just from copying and sharing it but also from things like reverse engineering. (In some rare cases, benchmarking the performance of the software and sharing that data is prohibited)

And no, just publishing the source code, like by throwing it up on GitHub without a license, that does not give anyone any rights. That is not code you can use, it's just code you happen to be able to look at, like how you can probably see my laptop sitting up here right now and you can look at it, but you don't have the right to take it home.

1.3.2. Permissive License

  • Almost (not always) say you can do pretty much whatever with the software.
  • Usually have to provide attribution.

and

  • Usually there's also a warranty disclaimer (It's a good idea to have this disclaimer)
  • You should not use a license that does not have a warranty disclaimer.

You would generally pick a permissive license like this when your goal is just for the code to be shared and used as widely as possible. You're trying to make life as easy as possible for developers by making everything available to them for whatever use they want, even if they don't want to reciprocate by sharing their improvements back to you.

Just be sure that you really would be OK with seeing someone make a lot of money off of your work and give you nothing in return, because that can and does happen, and it's well within their rights.

MIT/Expat/X11, ISC/n-clause BSD, Apache 2.0

Popular licences in some community:

Javascript, Python
MIT
BSD, FreeBSD
BSD

Right now the cultural fashion is to go too permissive license. But don't go blindly with the community.

Unlike other permissive licenses, Apache 2.0 has a clause on grant of patent license. Each Contributor grants anyone using the code a license to use any other patents that would otherwise be infringed upon by the code contributed. So, this is a patent-troll killing clause. Further, if you sue anyone over those patent use then you loose right to the patent license granted to you by others contributing to the code. Apache license also has sth about notices and modifications …

1.3.3. Copyleft licenses

  • Guarantee user freedom
  • Its not to make life easier as a devoloper, not to let you bootstrap your startup faster, not to incide collaboration from industry
  • Freedom to use, study, change, and redistribute.
  • Requires to share the changes you made under the license terms that other shared them with you. Guranteeing that the user get the rights you wanted even after contribution from multiple users.
  • They don't prevent commercial software, but don't allow proprietary software.
  • Copyleft is also described as 'viral'.
  • disallows adding other restrictions
    • GPLv2 is not compatible with Apache License (because of patent clause)
    • GPLv3 is compatible with Apache License and is patent-troll proof.
  • differs in that the virality aspect applies only to the specific code its attached together not anything that's linked to it to build a larger software application. And users only have to share the changes to LGPL part. LGPL also adds some extra requirements. Essentially, users have to be able to replace the version that you've shipped with whatever version they want, which – maybe that's a newer version from upstream or maybe they have their own custom version or whatever. The idea is that even if you ship a non-free proprietary application, if it's built on top of an LGPL library, then users will always have the freedom to control what version of that library they use, so they can maybe keep it up to date even if you've stopped supporting it, or they can change behavior that they just disagree with you about.
  • Softwares that run in server and user interact with through a browser,are technically not distributed to user. So, the GPL's source code sharing clause doesn't apply. AGPL fixes this loophole.

AGPL, LGPL, GPLv3 are compatible with one another.

1.3.4. Public Domain

  • Please do pick a license
  • Visible source is not Free/Open Software

Public domain is sth that is outside of license. Either because license expired, the product is not eligible for license or you choose to do so.

E.g. Unlicense, Create Commons Zero.

  • Better than nothing, but not recommended.
  • At least protect yourself by including the warranty disclaimer language.
  • Even the Unlicense website suggest "Warranty Disclaimer for code"

Because of Moral Rights:

  • When you say people can do anything, you are giving up your moral rights. And in some places that is not something that law lets to do. (Like law maynot allow you to allow someone to murder you). It's to protect against coercion, exploitation.
  • So, the public domain notice you put may be null and void legally, depending where you are in the world.

1.3.5. Custom License

Don't write your own! Pick an existing license.

Because its just take extra effort for developers and lawyers to figure out if its ok with the existing license they used.

1.3.6. Non-Software Licenses

  • Documentation (GFDL)
  • Logos
  • Tutorial

Creative Commons (BY,NC,ND,SA)

  • BY :attributoin
  • NC :non-commercial
  • ND: non-derivatives
  • SA: share-alike

attribution is not optional because of moral rights issues.

1.3.7. Licensing Contributions

  • Copyright assignment: give copyright to the owner of the code. (Don't do this, if the owner wants he can lock you out of your own contributions)
  • Contributor License Agreement (CLA) : You have to sign the agreements, are a hassle.
  • Developer's Certificate of Origin (DCO): You have the copyright to the code and the project can distribute, use it under the same license as the project. E.g. Linux. (This is good! minimal hassle!)

2. A blog post

What Are You Afraid Of?

Another way of looking at it is that you’re picking a license based on what you are afraid of. All of these licenses assume you’re afraid of being sued. The MIT license is if you’re afraid no one will use your code; you’re making the licensing as short and non-intimidating as possible. The Apache License you are somewhat afraid of no one using your code, but you are also afraid of legal ambiguity and patent trolls. With the GPL licenses, you are afraid of someone else profiting from your work (and ambiguity, and patent trolls). This is a radical simplification, but if nothing else it can be a helpful framework in discussing with your attorney what license makes sense for your software.


You can send your feedback, queries here