The title for my talk was "The trends in choosing licenses in Python ecosystem". As a lawyer what interests me is the legal foundation of the open source world. It is the licenses, which defines the reach of the software. Most of the developers would frown their eyebrows to hear that. Most of the developers think about licenses as large, boring, legal, gibberish text. So the aim of my talk was to give them an overview of licenses, why it is important and what are the best practices for the developers regarding the licenses. I framed my talk (as a lawyer) around licenses, majorly focusing on them as:
- what are the different kinds of licenses?
- Definition and elaborate explanation of each of open source licenses.
- What difference between free software and open source software?
- Little bit of my work around PyPI.
- Why the developers has chosen some particular licenses more than the others?
- The answers to that.
- The best practice for the developers while choosing a license in a gist.
Three days before my traveling I got a mail from the organizers that all the proceedings of the conference such as the slides, talk videos all these things will be in Public Domain. I was shocked and stunned too. It took me a lot of time, and mails to make them really understand that by speaking in front of public does not really make anything Public Domain. I was tweeting about the same to the speakers please add license in the slides for your talk. But even in then in Day 0 in the venue itself I got to know many of speakers had no clue about what were the licenses for their talks.
I realized my talk is too lawyerish. It would be a sure super flop talk. People would leave the hall within 5 minutes. So, I needed to reframe my talk from lawyerish way to developrish way. I had only few hours (approximately 10 hours) left. Kushal really wanted to stay for his friends but I dragged him (sudo wify power:)). We reached the Airbnb where we were staying. Started rearranging my talk slides. I was stressing on:
- My project.
- How did I do my work the progrmish way.
- The basic concepts of licenses, without going into much details.
- Explaining them with real life examples which will everyone understand.
- A special stress on Public Domain (given the problems going on in PyCon India).
- Then the most part of my talk was covering Best Practices for the Developers.
Slides got ready by 10PM. Had a quick dinner. While waiting for the dinner wrote the Blogpost. That day only I read a blog post by Zainab Bawa about practicing talk, such a perfect timing and a great post. I discerned the fact again that I need to begin practice my reframed talk. It was almost 12. I had no time left to practice my talk. I was tensed, scared. I began practicing and of course I was not been able to do it properly. That made me more frightened, nervous. Then started the whole episode of super attack of inferiority complex, IANAD (I am Not a Developer) syndrome, crying, yelling at Kushal and many other regular melodrama before me giving any talk. I wasted almost half an hour and then practiced my talk again. It was much better now. At least Kushal liked it much more. We slept at 2PM. Got up with a shrill alarm at 5:30AM. Practiced the talk again twice. We had to leave for the venue. Reached there and did the PyLadies related work.
My talk was scheduled at 4PM. After lunch I did my PyLadies table duties for half an hour. Thanks to all my PyLadies friends they released me from the duty. I went to the devsprint room and practiced my talk over there.
I reached at lecture hall 2 where my talk was scheduled before 5 minutes of time. It took some time to do the set ups ready. I started my talk with my memory of PyCon India 2012, which made the foundation for this talk. I defined software license, copyright and different open source licenses, FOSS with various real life examples which will help developers to easily understand the legal concepts in a lucid format. I told them about my project and showed them how did I got the licenses of each package in PyPI (and I did some silly goof up over there, no excuse but I was tensed). Then I focused to prime most important part of my talk The Best Practices for the Developers. Lets discuss them :
Choose a license matching the aim of regarding use case the software, if its library/module choose a permissive one So people can easily use them in their code.
Create a "license" file i.e license.txt and/or license.md file. The file should have name of the license as well as the full license text of the license document.
The developer must add a copyright header to each significant source code file. Significant includes both the volume and importance.
In README or equivalent introductory file which contains all the basic information of the project, the license name must be stated over there. And also the reference of the same to direct the reader to the license file.
In case in users freedom is the one you aim. Also you want to share the improvement made by you to the community and society. Therefore GNU GPL is the license for you. In case of GPL you need to distribute the original source code along with the modifications you have made.
If you are concerned about patents and at the same time you want an open source license. Then Apache is suitable according to your need. But very importantly it only takes care of the patent part but not all other intellectual property rights (such as trademark).
Please do not invent your own license. There are plenty of nicely drafted licenses meeting all your requirements. Trust the legal experts they know the law. To explain this I gave example of my little goof up which I did during typing a simple thing while explaining my project. So, I explained that as I am not the person who primarily a developer I did that mistake. If a person who is primarily a developer and not lawyer will do the same mistake in drafting a license. Covenant and conditions are several things of which you have to take care while drafting a license.
If you ignore all the caution and try to draft your own license try not to have clauses like "Buy me a beer" or "Don't be evil"(please keep your funny bones to yourselves only), the legal implication of these are different.
One can get several options of licenses you can have look at opensource.org, copyleft.org, FSF also Fedora Project has a nicely maintained list of open source licenses (compatible in Fedora project). choosealicense.com (by github) is another nicely maintained website for choosing licensing.
By choosing a license one chooses the community. Therefore if you are confused about license or your software, choose one which is popular in your community.
Points to Remember while choosing a license by a developer
Remember if you create new project, you have the copyright to that, and by default retain all rights
A license says that they can use/copy/modify your creation, but only if they follow the rules of the license.
If you choose to let other people use/copy your work, you should grant them a license having similar clauses.
Remember by choosing a license you are making a boundary for your software.
You should NEVER use something that doesn't explicitly state what the
Permissive let them use your work in a commercial or proprietary application.
copyleft require them to make their changes available
under the same license.
There are huge points of distinction between copyleft and permissive licenses.
There are few people to thank actually without whose help it would not have been possible for me to give this talk:
Van Lindberg: What ever little law related to open source I have learnt it is the Van-ish way. His book has helped me immensely. Thank you Van for checking my slides and giving me enough confidence that my understanding is right.
Nick Coghlan: Thank you for giving your valuable advice whenever I needed them. Moreover for your moral support when I was down.
Donald Stufft: Thank you for reply to my mail for reviewing my talk. Moreover thank you for doing the gigantic work of maintaining PyPI.
Jared Smith: About you where should I start from. Whenever there is a problem regarding this talk, my understanding, the framing of my talk, anything, you helped. Be it the early morning video sessions or the long (really huge) mail thread, thank you so much for helping me.
I will end with a note that the whole foundation of open source is its licenses. Therefore please be sure when you choose one.