Software Licensing Nick Gjersvik What are we going to cover?
● The basics of software licensing ● Different types of licenses ● Examine how software licenses impact real world projects ● Explore how software licensing affects the creation of ‘good’ software Basics of Software Licensing
● A software license is a legal instrument governing the use and redistribution of software ● A license grants permission to use software in ways which might potentially infringe the software owner's rights under copyright law ● Under United States copyright law all software is copyright protected ● All software comes with a license ○ Publishing software without a license still grant protections and permissions Importance of Licensing
● Software Developers ○ Protects the author’s intellectual property ● Project Managers ○ Cost of licensing for corporate projects ● Engineers ○ Embedded software that is open source may require disclosure Types of Licenses
There are a multiple categories of software licenses that reserve varying amount of rights Types of Licenses
● Public Domain ○ Works whose exclusive intellectual property rights have expired, have been forfeited, have been expressly waived ○ SQLite is published into the public domain ● Trade Secret ○ Confidential piece of intellectual property ○ Server side code is the best example of this ● No License ○ Your work is under exclusive copyright by default ○ Nobody else can use, copy, distribute, or modify your work Protective FOSS Licenses - Copyleft
● Copyleft ○ Practice of offering people the right to freely distribute copies and modified versions of a work with the requirement that the same rights be preserved in derivative works down the line ● GNU General Public License v1 ○ 1989, The first copyleft license ● GNU General Public License v2 ○ Adds the Liberty or Death Clause: licensees may distribute a GPL-covered work only if they can satisfy all of the license obligations, despite any other legal obligations they might have ○ The Linux kernel is licensed under GPLv2 GNU General Public License v3
● Not compatible with GPLv2 ● GPLv3 blocks Tyrant devices ○ A tyrant device is a computer that contain GPL-covered software but does not let you modify it ○ The computer shuts down or bricks itself if it detects modified software ○ May also void warranty Non-Protective FOSS Licenses
● MIT License ○ Permits reuse within proprietary software provided that all copies of the licensed software include a copy of the MIT License terms and the copyright notice
“Including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software”
○ Permissive license, limited restriction on reuse ○ Excellent license compatibility, can be used in GPL code ○ As of 2015, it was the most popular software license on GitHub Non-Protective FOSS Licenses
● 3-clause BSD License ○ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. ○ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. ○ Neither the name of the
Hire a lawyer Impact of Software Licensing The Linux Kernel
● The largest open source software project ● Has contributions from major corporations and individuals alike ● Corporations have to contribute if they want new feature added to the kernel ● The Linux kernel uses the GPLv2 license ○ Copyleft license ● Tyrant Devices problem ○ Samsung Smart TV and Android Phones ReactOS
● ReactOS is operating systems designed to exactly mimic Microsoft Windows ● Clean Room development ○ The functionality of the original software is reverse-engineered by one group of people, who create a "specification document", which contains only functional information about the software. ○ Then, a different group of people attempts to write new software to the same specification. ● If a ReactOS developer ever sees source code from Windows, they cannot continue to work on ReactOS Ethical Analysis
● We want a license that is conducive to writing ‘good’ software ● What are the virtues involved with writing good software? ○ Reliability ○ Benefits users ○ Benefits developers ○ Benefits corporations ● These are all good, regardless of how you license your software ● How does a software license help develop good software? Ethical Analysis
● Software does not have to be a zero sum game ○ Multiple people can benefit from open source software ○ Transparency from developers and those who use the software ● Use the right tool for the job ○ Some licenses impose limitations that may inhibit adoption ○ If your software is not on a client machine then does it matter? ○ How can developers monetize and sustain themselves? How Can Developers Support Themselves With Open Source? ● Dual Licensing your software ○ MongoDB makes use of the GPL and a proprietary license to fund further development ○ How do you take contributions from other people online? ■ One of the major strengths of open source ● Offer Support ○ Red Hat makes their money on RHEL by offering paid support functions My Opinions
● Virtue ○ Developers should contribute to open source projects if they can ○ The GPLv3 promotes virtuous development ○ May limit adoption ● Utility ○ MIT license is great ○ No restrictions, the most people are going to be happy ○ Developers may not see financial gains ● Proprietary licenses are not inherently evil ○ May not be very virtuous, or provide utility, and may even treat users as a means to an end ○ Something has to fund development ○ Use in combination with other licensing options Questions?