 Welcome friends, welcome to the session. Today I am going to tell you a story. Bycon India 2012, my first open source conference. I was feeling totally out of place. I was hearing all the alien words like patch, commit, bug, etc. Suddenly I heard something familiar, licensed. I just ran towards the conversation and I heard all the conversation, all the legal conversations to be precise were ending up with I-A-N-A-L. What does that mean? So before going to the story, a statutory disclaimer. A talk shield is not a legal advice. If you need a legal advice, please contact a lawyer. Before the story begins, a little bit introduction of the storyteller. Hi, I am Anvesha. I am a lawyer by profession. I am a pie lady. I am an organizer at Pie Lady's Pune from India. I use Python to shape my legal projects. I work as a blogger at Python Software Foundation. I also write my personal blog at anveshadas.in where I translate legalities to English. I am an active force user, a dancer and a mother to a toddler whose name is Pie. So the love for Python runs in the family. So back to our story, I-A-N-A-L. As I said, all the legal conversations were having these I am not a lawyer phase. After that, there was some respect kind of look for me. There was some safe distance kind of looks for me and not to forget. Some, oh, I feel sorry for your brother kind of look for my husband. All these things together made me interested in the legal field of the open source world. So both the lawyers and the programmers use language as a tool to achieve our goal. But both of these species does not really understand what the other is saying. So let's begin the session with the hope that we'll be able to understand each other in a better fashion after the end of the session. So what is this open source world is all about? This open source world is actually made of two things. Firstly, a technology. Secondly, a good community. A good community consists of three things. Contributor base, a very strong contributor base. Secondly, a strong and just administration. And thirdly, the strong licensing model. Here comes the tricky word license. Now let us understand what is license. So when I asked a few developers what do they understand by the term license? This is the blank look I get most of the time. Some developers told me licenses is something that protects my code. It's very smart and apt. I don't care about license. It bores me so true in most cases. A federal upstream said that very sadly that I have to fill up the license name unless they won't match my package in Fedora. So he was very sad about the fact. So what is actually license? What does a license do? Let us take a very practical analogy. What does a driving license do? Driving license gives us the permission to drive a vehicle on the road. Similarly, a software license gives us the permission to do certain things with the software. Who gives us the driving license? It's the motor vehicle authority. And in case of a software, the owner of the software gives us the permission. And under what authority he gives us the permission? It is the intellectual property right called copyright. What is copyright now? If we flip the word copyright, that is right, copy, right to copy or right over a copy. Therefore, the definition of copyright goes like this. Copyright is an exclusive right to use, distribute, redistribute, sell the original creation granted to the creator for a limited period of time. There are things like artistic works, cinematograph films, sound recordings. These are the purview of, these comes under the purview of copyright. So having said that, it may frown some eyebrows that how come software comes under the purview of copyright. So what does a developer do? How the developer, the developer solves a problem and how the developer will solve a problem. It's his or hers personal choice or expression. That very thing, personal choice or expression makes the software copyrightable. So now comes my project. So as a lawyer, I was, I am interested in the legal part. So I just analyze something. For that, I need to explain this slide. Pi PI is the Python package index. It is the official third party repository for Python, the programming language. Presently it has more than 10,000 packages in it, if I'm not wrong. It has one lakh packages in it, sorry. So here comes my project. As a lawyer, I was very much interested in how the licensing scenario works. Why, how come a developer is choosing a particular license and not choosing the other one? What makes him choose that one? How many projects are there without any license? Then I started this project. I wanted to analyze the licensing scenario of the Python ecosystem. As I said, Pi PI is gigantic. I just cut it, the gigantic volume of the Pi PI shot a bit. I chose, I wanted to choose top 2,500 packages of Pi PI. Then comes the problem, which are the top 2,500 packages? Pi PI provides, then this thing came in. This ranking system gave me a nice list of top 2,500 packages. Then I needed the license name. Pi PI also provides a JSON API. I queried that and I got the licensing name for each 2,500 packages. I wrote a Python script for that and I got the license name. After that, when I got the license name, this is something the scenario looks like. I got all these license names and this chart, which makes me understand that BSD is the most used license. After that, it's the MIT, GPL as in the GPL family as a whole. There are all the GPL versions in it. Apache is also 12% and there, if you can, a public domain is there and if you can see, 6% is no name. What is this no name or unknown? Where Pi PI can't provide any license name, it gives unknown or no name as license value. There are a huge number of projects, a good number of projects which doesn't have a license name. What I'm trying to do is that I'm trying to send a pull request to all these packages. This is the license you should write. You may want to write the license name. Presently, around 20 patches have been merged and the project is still going on. Now, we got all the license name. Now, let us understand what is the name, what is the software license? A software license is a legal document, it's boring, I know. But software license is a legal instrument which gives you the permission to do certain things. That is, use of the software, how you should use the software, how you should sell the software. All these things related to the software, all these conditions are written in a software license. Now, let us divide the software license. What are the different kinds of software license? We are going to divide the software license in how much restriction they are putting on the users. The first one is the commercial license. The commercial software license is something which is very heavy duty and it gives the users very little freedom. The source code is with the owner of the software. It remains with the owner of the software, the authority, usually. And all the rights of the user is provided in a end user's license agreement called ULA. The user can agree to it by signing it, by signing it or by just checking the box in certain places given. Or just by opening the disc, that is, it is called the shrink wrap or licensing. The gaming software, when you open the box, you are basically agreeing to the terms of that license. After that, it is the public domain. If commercial license is on this end, public domain stands on another pole, on another extreme. By public domain, you need to understand that public domain is not a license. When you are putting anything in public domain, what you are basically doing is that you are waiving all your rights. You are relinquishing all your intellectual property rights. Public domain, your software becomes a public property. There are basically three ways by which anything can come into a public domain. Firstly, there are certain things to which intellectual property rights does not apply. Secondly, when the time period, the copyright is given to the owner for a limited period of time. When the time period is over, secondly, the time period is expired. And thirdly, when you are waiving your copyright, that is by submitting into public domain. How you can submit into a public domain? Firstly, you can write it as public domain, the license as public domain. Second or another thing is that you can choose for a license.org or you can go for CC0, that is Creative Common Zero. Now, here is commercial license, there is public domain. On the middle part, it is open source. What is open source? Then as the name suggests and we all know, source is open. It's open, but what does exactly mean? It means by open source licensing, we are generally promising as provided by OSI. We are promising ten things as written in OSI. We are going for free distribution. So we can use our software as we wish to. And the source code has to be available. The derivative work, so if you consider your software as pizza, so not only you are giving the pizza, but also you are giving the recipe. And whoever gets the pizza, he will have the right to make his own pizza with it. You can do whatever you wish to do with your pizza. You can play with it, you can throw it, you can whatever you wish to do. So now we are going to divide these open source licenses. There are academic licenses which come from the academic institutions. These academic licenses are MIT and BSD. These are the example of academic license. So what does academic license do? Academic license is basically, it is really permissive. It puts very little restriction on the end user. And the difference between MIT and BSD is that BSD has a specific binary distribution clause while MIT doesn't have one. The next one is the permissive license. As the name suggests, permissive license gives you a lot of permission but less than academic license. In permissive license, the example of permissive license is Apache. In Apache, the permissive license does have a clause for other intellectual property rights also. Like in Apache, there is a clause called grant of patent license which provides a specific clause for patents. So if you are using a software for which a company has open source software, for which they are using a particular algorithm which they have patented. But if they are opening it in Apache, so you can use that software and you won't be threatened that the company will sue me for using that patented algorithm. There comes the reciprocal licenses. The reciprocal licenses, as the name suggests, these licenses are something you have to do some duties in reciprocity. GPL is the one for that. GPL actually gives us full freedom. The freedom to run the software as we wish, the freedom to modify our software, the freedom to distribute the software licensed under GPL and the freedom to redistribute the thing with the modification one has made. So now we have got a little bit in the slides from all the licenses. Now it's the best practices for the developers which what they can do. First one, choose a proper license based on the use case. So what you are doing by choosing a license is basically you are making a boundary of your software. You are choosing the user base. So if you are writing a library or something like that, a library or module, you should choose something which is more permissive in nature so that people can actually use it. A license file, there should be a license file in your source code. The license file should not only have the license name but the whole license text altogether. Now here I want to mention that MIT has a clause that you have to mention the whole license text. Unless you are mentioning the license text, the terms of MIT won't be applicable. So for that you need to mention the whole license text in your license file. You also have to mention the copyright header. As you can see it's the example of request module where the copyright header is there and the license has been mentioned as Apache. There should be a set of .py, which provides the license in the set of functions. You can license as Apache. Also in the classifier you have to provide the license name. Mention if there is a reading file or something introductory similar to that which mentions all the project details, you should mention the license name and direct the license file from there. If patent is your concern, then Apache is the one for you or permissive license is the one for you where they have a separate clause for other intellectual property laws. Please do not invent your own license. Lawyers actually they do know a little bit. So they have written down certain templates. You can use license as templates. So please do not your own license and please do not merge the licenses. So if you are taking MIT and if you are putting a certain clause in it by your own you are basically not following the MIT. So please do not invent your own license. Try to choose from what you have. This is very important. Please keep your funny bones aside. Actually I have come across a license where it has been written. Don't be evil. There is another license which like buy me a free beer. So these things does not really go with the license document and these have other legal implications. I can give you an example that there is a particular case where the developer who has invented the license didn't really understand what is the difference between a condition and a covenant. So he has written it and after that the license was not applicable and he had to give away the software. Open Source Initiative has a very nice listing of what are the available licenses. So you can choose from there. Also Federal Project has a very nice listing. It's not working. This is choose and license from there. Choosealicense.com. There you will be having all these small things which you can actually read and choose a license from there. Choose a popular license. By choosing a license you are not only choosing a license or a making boundary but you are also choosing a community with the people you want to work with. There are certain licenses by which many people can relate. There are communities around those licenses. So choose a popular license which is popular in your community in the field you want to work. So with that I have come into an end and thank you. I guess this will be a little bit of help. From the next time onwards you will be choosing a license. Thank you. Questions? I'm just wondering with respect to things like this data how will the licensing apply? So for example you can write a code which basically analyzes someone else's data but will the license also apply to someone else's data in order to create some kind of program? So what you are writing on the source code the copyright will apply. There the software licenses will apply. So I guess what you are trying to say is that if I am working with someone else's data if it is permitted or not? Yes. In a sense whether it is permitted or not, whether it is kind then open source the codes without releasing the data. Without releasing the data? I am not very... In the ignore file I guess can you keep that thing? Two different things. Your data may be having a different license and you may have to buy it. But your source code has a different license which is a completely different thing. So the source code thing that comes under intellectual property law and working with data, someone else's data it comes under the purview of some other law it varies from country to country.