Is GPLv3 More Permissive than GPLv2? The Scope of Reciprocity
Stephen Gillespie Fenwick & West LLP
Topics
Why it matters Review: GPL as conditional license Primary Changes in GPLv3
Scope of Reciprocity in GPLv3
2
Why It Matters
Key Issues
• • • •
Use of GPL Code Acquisitions and Valuation Application of GPLv3 vs GPLv2 Cutting Edge of Copyright Issues
3
Review: GPL as Conditional License
Avoiding Contract Formation Issues Permissions Based on Compliance with Conditions Failure to Comply Results in Copyright Infringement Remedies for Copyright Infringement • Injunction • Statutory Damages
4
Primary Changes in GPLv3
Propagating and Conveying Work “based on” Program Corresponding Source Code
Anti-Tivoisation and Patent License
•
Beyond scope of this presentation
5
Propagate and Convey vs Distribute
GPLv3 preserves applications and Reciprocity.
distinction between internal and hosted distribution. Only distribution triggers
“Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.”
“To „convey‟ a work means any kind of propagation that enables other parties to make or receive copies, excluding sublicensing. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.”
6
Propagate and Convey vs Distribute
“Propagation of covered works other conveying is permitted without limitation.”
than
“Conveying is permitted under the conditions stated below.”
7
Work Based on the Program: GPLv2 Review
“Work based on the Program” Section 0 of GPL invokes two definitions:
• •
Copyright law: “work based on the Program” means “any derivative work under copyright law” Concept of “containing”: “that is to say, a work containing the Program or a portion of it, either verbatim or with modifications” See also Section 2(b): “that in whole or in part contains or is derived from the Program”
•
8
Scope of Reciprocity: GPLv2
Reciprocity applies to collective works or combining two modules
•
1st para. below Section 2(c): “when you distribute the same sections as part of a whole which is a work based on the Program”
•
2d para. below section 2(c): “the intent is to exercise the right to control the distribution of derivative or collective works based on the Program”
Key problem under GPLv2 is this: in order to apply the concept of a work that “contains” the program, you have to define the applicable “work”
•
When is a software product one “work” versus two or more separate “works” that interoperate?
9
When Do Two Works Become One “Work Based on the Program?”
GPL FAQ: “What constitutes combining two parts into one program? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged). Pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.” Note Eben Moglen‟s advice at OSBC: Ask an engineer, not a lawyer.
10
Linus Torvalds on Derived Works
Linus Torvalds:
•
“I personally consider anything a „derived work‟ that needs special hooks in the kernel to function with Linux (ie it is NOT acceptable to make a small piece of GPL-code as a hook for the larger piece), as that obviously implies that the bigger modules needs „help‟ from the main kernel. Similarly, I consider anything that has intimate knowledge about kernel internals to be a derived work.
–What does it mean for a software module to “have intimate
•
knowledge about kernel internals”?
•
What is left in the gray area tends to be clearly separate modules: code that had a life outside Linux from the beginning, and that does something self-contained that doesn‟t really have any impact on the rest of the kernel. A device driver that was originally written for something else, and that doesn‟t need any but the standard UNIX read/write kind of interfaces, for example.”
11
Work „based on‟ the Program: GPLv3
“To „modify‟ a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of a verbatim copy.” “The resulting work is called a „modified version‟ of the earlier work or a work „based on‟ the earlier work.”
12
Does not Apply to “Aggregates”
GPLv3 Section 5: • “A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, in or on a volume of a storage or distribution medium, is called an „aggregate‟.” • “Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.” Appears to create more room for integration of proprietary code with GPL code than did GPLv2 definition of “work based on the program.” • GPLv2 removes concept of a “Work that contains the program.” Key under GPLv3 is distinguishing a “modified version” of the Program from an “aggregate” that includes the program.
13
But See Definition of “Corresponding Source Code”
“The „Corresponding Source‟ for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities.” “Corresponding Source includes
• • • • •
interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.” Note echo from Linus Torvalds re loadable modules: “I consider anything that has intimate knowledge about kernel internals to be a
derived work.”
“it does not include the work‟s System Libraries, or general-purpose tools, or generally available free programs which are used unmodified in performing those activities but which are not part of the work.”
14
GPLv3 Reciprocity: Application
When does “copying from or adapting all or part of” the Program (other than making a verbatim copy) require “copyright permission”? Under U.S. law, when it creates a “derivative work” of the Program. Copyright Act 17 U.S.C. Section 101: “A derivative work is a work based upon one or more preexisiting works, such as a translation . . . abridgement . . . condensation, or any other form in which a work may be recast, transformed, or adapted.”
“A work consisting of editorial revisions, annotations, elaboration, or other modifications [of a preexisting work] which, as a whole, represent an original work of authorship, is a derivative work.”
15
Lewis Galoob Toys & Micro Star v Formgen
When does creation permission”?
• •
of
a
“modified
version”
“require
copyright
In Lewis Galoob Toys, Ninth Circuit held that Game Genie did not create derivative work of Nintendo‟s system. In Micro Star, Ninth Circuit held that Micro Star‟s .MAP files were a derivative work of FormGen‟s Duke Nukem game.
–“A derivative work must substantially incorporate protected material from
the preexisting work.”
16
Software as a System
Proprietary Applications: Application Libraries: Video File Management Application OpenSSL Zlib Glib expat GUI
Codecs (MPEG; GIF); Font Libraries (FreeType)
Database:
MySQL
GNU/Linux OS: Hardware Drivers: USB, Wi-Fi, Audio Kernel Modules
17
Loadable Modules
Loadable modules are most commonly used to add device drivers such as network or sound card support, but this general mechanism can be used to add other functionality such as real-time OS APIs, new system calls, or file system support When a loadable module is inserted into the kernel it goes through what is essentially a linking step – any external names it references, such as kernel functions and data structures, must be resolved
•
Since kernel data structures may change from kernel release to kernel release, modules must be compiled for the exact kernel release for which they are to be inserted
18
Loadable Modules
Does dynamic linking to GPL code require reciprocity for that linked code?
•
GPL FAQ: “If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.”
–Linux systems divide memory into “kernel space” and
“user space” (or “application space”).
–Under GPLv2, modules in kernel space are more likely
to be subject to reciprocity, because they run in shared address space.
–But under GPLv3, they are more arguably separate
programs running together in an aggregate.
19
Is GPLv3 More Permissive?
Under GPLv3, if the work is an “aggregate” and the proprietary modules do not incorporate any aspects of the Program, then those proprietary modules are not subject to reciprocity. Concept of aggregates is more permission than GPLv2 definition of a work based on the program as including any work “containing” the program. But definition of “Corresponding Source” includes “source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require.” If modified GPL code is not “specifically designed to require” proprietary “shared libraries and dynamically linked subprograms,” then the proprietary shared libraries and subprogams are arguably separate works not subject to reciprocity.
20
Faculty
Stephen D. Gillespie Partner, Technology Transactions Group 415.875.2421 sgillespie@fenwick.com
Mr. Gillespie is a partner in the Technology Transactions group at the San Francisco office of Fenwick & West LLP. He concentrates on helping software and Internet companies structure and negotiate their strategic transactions, including national and international technology development deals, direct customer and channel arrangements, inbound and outbound technology licenses, e-commerce and Internet publishing agreements, strategic alliances, joint ventures, and mergers and acquisitions. He regularly counsels clients regarding open source business models and U.S. export control regulations.
21