Open Source Software Yaakov (J) Stein Open Source Slide 1 Who are they ? Open Source Slide 2 Paying for Software Early computer manufacturers often gave away free software to make their computers useful In 1975 Bill Gates and Paul Allen formed Micro-Soft and developed a BASIC compiler for the Altair 8800 computer Their contract awarded them $30 - $60 royalty for each copy sold Gates discovered that computer hobbyists were copying the program and wrote a famous letter defending proprietary software As the majority of hobbyists must be aware, most of you steal your software. Hardware must be paid for, but software is something to share Gates claimed that royalties enabled development of good software In 1976 Apple computer came out with the Apple I computer and promised that the software would be free Why shouldn’t we have to pay for software ? Open Source Slide 3 Not paying for software In the late 1970s manufacturers were still giving away free software but in object code format (instead of source code) to prevent it from being used on their competitors' computers and to insert copyright protection in programs Richard Stallman (from MIT) called this a crime against humanity and in 1983 started the GNU project and later a nonprofit corporation called the Free Software Foundation Stallman argues that the term intellectual property is designed to confuse referring to IPR as property biases any discussion Unlike Gates, Stallman believes that all software should be free Why should we pay for software ? Open Source Slide 4 Open Source Software Open Source Software is software provided as/with source code OSS is often developed by communities, or more accurately by • a small team of developers • a large team of debuggers (“eyeballs”) Studies have shown that use of OSS • in commercial environments can reduce IT expenses by large factors • during the software development (hybrid software) can reduce development cycles by orders of magnitude Why doesn’t everyone use OSS all the time ? Open Source Slide 5 IPR Intellectual property is a set of property-like rights in intangible “creations of the mind” such as musical, literary, technological, and artistic works IPR jurisprudence justifies exclusive rights, in order to • motivate its creation (sweat of the brow) • stimulate economic growth • protect individual identity (moral rights) Some forms of IPR • • • • • • • • • utility patents (inventions) copyrights Works without IPR trademarks (IPR expired, forfeited, inapplicable) trade secrets are said to be in the public domain trade dress (distinctive packaging) Industrial designs (design patents) publicity rights (of celebrities) geographical indications (terroir, e.g., of wine) database rights (EU) Open Source Slide 6 Short Introduction to IPR law Unauthorized use of someone else’s IPR is called infringement • Infringement may be the subject of civil law or criminal law • Infringement does not necessarily require knowledge but willful infringement may be more serious (e.g., triple damages) IPR rights • are always limited in time duration • are usually limited to a given jurisdiction • sometimes require registration and/or examination in a jurisdiction There are ways to legally use someone else’s IPR • assignment • exclusive license • non-exclusive license A license is an authorization/permission by the IPR owner to exercise a privilege that otherwise would constitute infringement License terms often involve payments Open Source Slide 7 Copyright Copyrights are IPR rights in works of art, literature, music, etc. • literary • musical • dramatic • graphic • sound recordings • architecture • software In many jurisdictions, copyrights last for creator’s life + 70 years The bundle of 5 exclusive rights covered by copyright • to reproduce (copy) the work • to prepare derivative works based upon the work • to distribute copies (sale, rental, lending) • to publicly perform the work • to publicly display the work Open Source Slide 8 Coverage Copyrights only cover the method of expression not ideas (as in patents) or raw data, thus • data (e.g., a phone book) can not be copyrighted (Feist vs Rural) • scientific facts can not be copyrighted • news can not be copyrighted • a "useful article“ can only be copyrighted if its esthetic features are separable from its utilitarian features Copyright law recognizes 3 types of works • original works • derivative works (e.g., translations) • compilations (e.g., anthologies) Rights in derivative works and compilations are in addition to and do not negate copyrights in the original work Open Source Slide 9 Software copyrights ??????? Algorithms may be protected by patents Databases may be protected (in the EU) by the database directive Source code may be protected by copyrights Some history (in the US) will help explain … 1974 Commission on New Technological Uses of Copyrighted Works decided that computer programs, to the extent that they embody an author's original creation, are proper subject matter of copyright 1980 US Congress added computer program to copyright law 1983 Apple vs. Franklin: Court of Appeals decides that even object code is subject to copyright 1986 Whelan v. Jaslow, Broderbund v. Unison: extended software copyright to structure, organization, look-and-feel 1997 No Electronic Theft Act raises criminal penalties (even w/o monetary gain) to 5 years + 250K$ + higher civil damages, closing the LaMacchia loophole Open Source Slide 10 Why not software patents ? Software is not explicitly mentioned in US patent law but there have been several US Supreme Court cases In Gottschalk v. Benson (1972) the court ruled that an algorithm was an abstract idea and so unpatentable In Parker v. Flook (1978) the court gave a clue to patentability the machine-or-transformation test : a process was patentable if either it was either carried out with a particular apparatus, or transformed an article from one state or another In Bilsky vs. Kappos (2010) the court ruled that a particular business method was unpatentable but that the machine-or-transformation test was not the sole test In Alice Corp. v. CLS Bank (2014) the court ruled that the fact that an algorithm was implemented on a computer was not enough to make it patentable Open Source Slide 11 Software licenses A software license is a legal instrument (sometimes a contract) concerning the use and redistribution of copyrighted software A license is a permission granted by the publisher to a user allowing the user to use the software OWNER GRANTS LICENSEE THE RIGHT TO COPY AND RUN THE SOFTWARE ... For a license to be a contract it must include consideration i.e., payment or a return promise The license usually includes conditions LICENSEE MAY NOT COPY OR MODIFY THE SOFTWARE ... As a legal instrument, a software license (and its terms) needs to be accepted by the user, e.g. by • physical signature • opening packaging (shrink wrap) • on-line clicking on agreement (click wrap) Open Source Slide 12 Proprietary/free software licenses We should distinguish between • proprietary license or End User License Agreement grants use of a copy of the software but the publisher retains all ownership rights • free software licenses Some software is dual-licensed (or N-licensed) meaning that it is available under more than one license For example proprietary if you pay a license fee free software if you don’t Open Source Slide 13 Proprietary software licenses Proprietary licenses are often called End User License Agreements (EULA) The end user receives the right to use the software but the software remains the property of the publisher EULAs • usually have an as-is disclaimer and may restrict • copying (except for backup) • simultaneous use by multiple users (single user/node, floating) • reverse engineering • performance tests THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ARISING FROM USE OF THE SOFTWARE. Open Source Slide 14 Free software Free Software (defined by Richard Stallman and the FSF) is software that allows users to use, study, share and modify free is used in the sense of free speech, not of free beer Note: • free software ≠ public domain software • free-of-charge software can have a proprietary license • public domain software need not be free software (e.g., no source code provided) • proprietary software may include source code Open Source Slide 15 Free Software – the 4 freedoms The FSF defines free software as providing the user 4 freedoms 0 The freedom to run the program as you wish for any purpose 1 The freedom to study how the program works, and change it so it does your computing as you wish Requires source-code access (Open Source) 2 The freedom to redistribute copies so you can help your neighbor 3 The freedom to distribute copies of your modified versions to others, giving the whole community a chance to benefit from your changes Requires source-code access (Open Source) The freedoms come at a cost – free software has no single owner and so it can endlessly fork (e.g., Linux distros) Open Source Slide 16 Open Source Software Open-source software (OSS) is software • made available with its source code • licensed with rights to study, modify, and distribute Examples: • • • • • • GNU (GNU is Not Unix) Linux Android (but not Apple’s iOS) SourceForge projects GitHub Google Code Open Source need not be free of charge (but often is) Open-source software is often collaboratively developed and its use certainly can accelerate R&D times ! OSS licenses may be permissive or copyleft Open content is an extension to other creative works There is Open Hardware too! (OpenCores, OHWR, Facebook’s Open Compute server) Open Source Slide 17 Derivative works US Copyright act says : A “derivative work” is a work based upon one or more preexisting works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be recast, transformed, or adapted. A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represent an original work of authorship, is a ''derivative work''. Courts generally consider a work a derivative only if it contains a substantial amount of the original work What is the meaning of a derivative work for software ? • modifying source code in-place • translating source code into another programming language certainly creates a derivative work But different OSS licenses may add other types of derivative works, e.g. EPL Any code in a separate file is not a derivative work FSF Any program linking (statically or dynamically) is a derivative work Open Source Slide 18 Copyleft For software in the public domain, anyone can • sell the software for a profit • modify and use without attribution • make derivative works (extensions, programs calling routines, etc.) Copyleft exploits copyright law to maintain freeness Copyleft provides rights to use/modify/distribute works but requires the same rights (same license terms) be preserved Copyleft generally applies to • modified versions – if you find a bug or add a feature, you must give it back to the community • derivative works – if you extend a copyleft routine/library /package (derivative work) your work becomes copyleft too OSS without copyleft provisions is called permissive Open Source Slide 19 Copyleft history 1976 Palo Alto Basic’s distribution notice contained a joke COPYLEFT - ALL WRONGS RESERVED (later versions said REVERSED) 1982 Richard Stallman supplied his public domain LISP interpreter to a company named Symbolics which refused to give him their improved version in return 1983 Stallman founded the GNU OSS project 1985 Stallman wrote in the GNU Manifesto: GNU is not in the public domain. Everyone will be permitted to modify and redistribute GNU, but no distributor will be allowed to restrict its further redistribution. That is to say, proprietary modifications will not be allowed. I want to make sure that all versions of GNU remain free. Open Source Slide 20 Code contamination Up to now we have taken the side of the OSS developer From a commercial software developer’s point of view using any copylefted OSS may contaminate the codebase By contamination we mean that in-house developed proprietary code must be turned into OSS code under the OSS license terms even if the OSS component is a tiny fraction of the codebase ! Consider the following hypothetical scenario • COMPANY puts 100 man years into developing code for product X • To save R&D time, a programmer links to 1 copylefted library • COMPANY releases the product containing the copylefted code Legally, COMPANY must now • publish all of its source code (which will fall into the hands of competitors and hackers) • allow anyone to modify the source code Don’t think this can be covered up ! OSS organizations proactively look for companies that infringe OSS scanning software exists that can detect OSS in object code! Open Source Slide 21 Linksys case study 1988: Linksys founded, makes printer sharers, etc. Early 1990s: Linksys develops home routers (WRT54G, …) for PC market Linksys code is based on GPL and LGPL code • modified Linux • GNU libraries (binutils, GLibC, GNU coreutils, GNU Readline, …) Linksys did not obey GPL terms did not provide source code, did not GPL code 2003: Cisco acquired Linksys for $500M 2006: FSF contacted Cisco and entered negotiations on GPL compliance 2008: FSF sued Cisco for copyright infringement (represented by the Software Freedom Law Center) 2009: settlement reached, Cisco appoints OSS director, makes financial contribution to FSF, releases source code 2009: WRT54G becomes hacker favorite, dozens of competitors appear 2009: Linksys moves to VxWorks 2013: Cisco sells Linksys to Belkin Open Source Slide 22 Some Open Source Licenses There are now hundreds of Open Source licenses Different OSS organizations • promote their own license • approve of other licenses Some of the important ones : • MIT • BSD (several versions) Academic Free License Affero General Public License Apache Artistic • Apache (several versions) ATK License Bitstream Font License Boost BSD AdClause CeCILLv2 CINT ClarifiedArtistic CMix Common Public License Common Public License CorkforkPL C reative Commons Attribution DBG License • GPL (3 versions) DejaVuLicense Eclipse Public License Erlang Public License Expat eZ publish Professional licence FreelyRedistributable FreeType License • LGPL (3 versions) GL2PS GPLv1 GPLv2 GPLv2 GPLv3 Hipergate license IBM Public License ISC Jabber Kawa LGPL LGPLv2 LGPLv2.1 LGPLv3 LinkGrammarLicense • Linux LLGPL LPPL MirOS Mozilla MPL MPLv2.0 Nethack license NikoSoft Group Public License None yet OSI OpenSSL License PCRE Perl PHP • EPL PublicDomain Python2.1.1 Python2.3 Python2.5 QPL Ruby Sendmail SIL Open Font License SIP Sleepycat Standard ML of New Jersey • Mozilla Public License License TclLicense Transitive Grace Period Public Licence Utopia Typeface Vim1.4 Vita Nuova Inferno 4th Edition Vita Nuova Liberal Source Licence vtiger CRM license W3C WTFPLv2 wxWindows Library X11 Xiph Youpee Zope Zlib Open Source Slide 23 Elements of Open Source licenses • Copyright notice Copyright (c) <year> <copyright holder>. All rights reserved. • retaining the above copyright notice (universal) Redistributions must retain the above copyright notice. • requirement to distribute source code (otherwise not OSS) Covered work may be distributed in object code form provided that the corresponding source code be provided by … • non-endorsement, non-promotion (common) <copyright holder> does not endorse or promote products derived from this software. • acknowledgement in advertising (unpopular) All advertising materials mentioning use of this software must display the following acknowledgement: This product includes software developed by the <copyright holder>. • Copyleft provisions (if not permissive) Open Source Slide 24 MIT license Perhaps the simplest and most permissive OSS license is the MIT license It is used for many popular packages (Xwindows, Ruby on Rails, Lua, …) Copyright (c) <year> <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Open Source Slide 25 BSD license (1) BSD is a permissive OSS license developed for Berkeley Unix It is used widely for academic and OS-related packages, Django, … The original Berkeley Software Distribution license was simply Copyright (c) <year> <copyright holder>. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the <organization>. The name of the <organization> may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Open Source Slide 26 BSD license (2) The two middle clauses were changed to a 4-clause version in 1990 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. 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. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the <organization>. 4. Neither the name of the <organization> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. Open Source Slide 27 BSD license (3) The advertising (3rd) clause was considered too unpopular which led to a revised or modified BSD license (AKA new BSD) having only 3 clauses Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * 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 <organization> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. Finally FreeBSD eliminated the non-endorsement clause too leaving 2 clauses, and thus similar to the MIT license Open Source Slide 28 Apache license The Apache license is a very popular permissive license, used by Apache web server, Android OS, OpenOffice, Moodle, … It is a long license, so won’t be displayed here It requires preserving all original copyright/patent/trademark/attribution notices It does not require derivative works (including modifications) to use the same license However • all unmodified parts to maintain the license • modified files must contain a notice stating that changes have been made to that file WARNING: The v2 license also includes a royalty-free patent license The FSF considers Apache to be incompatible with the GPL (except the latest Apache with GPLv3) Open Source Slide 29 GPL (1) The GNU Public License (GPL) is • the most popular • the most complex • the most restrictive • the most fiercely enforced OSS license It was originally drafted by Stallman and the FSF for the GNU project and is currently used for 2/3 of all OSS (tens of thousands of packages) It is so popular, that other licenses are rated as GPL compatible or not meaning that OSS under another license can be combined with GPL SW into a single program There are 3 versions of GPL called GPLv1 (1989), GPLv2 (1991), GPLv3 (2006) The GPL license is much too long and complex to be included here and the GPL license text is itself copyrighted and no changes to it are allowed ! Open Source Slide 30 GPL (2) GPL’s terms must be made available to anyone receiving GPL’ed software This is done by displaying the following copyright notice Copyright (C) <year> <author> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Open Source Slide 31 GPL (3) The GPL text is lengthy and as philosophical as it is legal The GPL was designed as a license, not a contract so that it is enforceable under copyright law not contract law The GPL contains an extremely philosophical preamble, including To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. The preamble includes a statement against software patents WARNING: GPLv3 includes a royalty-free patent license ! Open Source Slide 32 GPL (4) Some of the GPL terms and conditions: • anyone not accepting the GPL's terms and conditions does not have permission, under copyright law, to copy or distribute GPL licensed software or derivative works (however, you may still use/modify the software, including GPL’ed compilers) • copyleft applies to the software and not to its output (e.g., compilers) • any licensee is given permission to copy/redistribute/modify the work but must adhere to the license terms • a licensee is allowed to charge a fee GPL does not enforce shareware and does not prohibit commercial redistribution • a distributor may not impose any restrictions not in the GPL this forbids distributing under NDA or contract cont./ Open Source Slide 33 GPL (5) • if the program is distributed in object form then source code must be provided together with the binary, or clear directions given as to how to obtain the source code (e.g., downloading) • must also provide all makefiles, scripts, etc. • when distributing a modified GPL‘ed work, the terms of the entire work cannot be greater than the GPL terms • all derivative works must be under the GPL, however the GPL text does not define what constitutes a derivative work, relying on copyright law • FSF considers – any package containing GPL’ed code – any program statically linked to GPL’ed code – any program dynamically linking to a DLL to be a derivative work • FSF admits that a separate communicating program is not a derivative Open Source Slide 34 LGPL In addition the GPL, the FSF has a license called LGPL • originally Library GPL (primarily for software libraries) • now Lesser GPL (less freedom for the end-user) The FSF encourages library-writers to license under the GPL so that proprietary programs cannot legally use the library thus creating more open programs than proprietary ones However, it realizes that this philosophy is not always implementable The LGPL is a compromise between copyleft and permissive OSS The LGPL allows proprietary software to call the unmodified library without becoming contaminated In other words, as long as you do not modify the library linking to it does not create a derivative work Open Source Slide 35 Linux The Linux Operating system kernel is licensed under the GPL but with an important exception NOTE! This copyright does *not* cover user programs that use kernel services by normal system calls - this is merely considered normal use of the kernel, and does *not* fall under the heading of "derived work". Also note that the GPL below is copyrighted by the Free Software Foundation, but the instance of code that it refers to (the linux kernel) is copyrighted by me and others who actually wrote it. Linus Torvalds Open Source Slide 36