tags:

views:

755

answers:

9

I'm trying to figure out in which of these cases the legal ramifications of "Derivative work" come into play. When exactly is my code a derivative work?

  • A PHP framework released under the GPL.

Isn't that GPL invalid since PHP has it's own license and you are using PHP to build that framework?

  • A Commercial Wordpress theme?

Isn't that a "Derivative work" and hence invalid because wordpress is GPL?

  • A commercial class which is inserted into an existing GPL framework - yet does not include references to that framework inside that class.

Is that a derivative work?

You see, I originally thought that all code built on (or built for) something was derivative code - but that is not true. For example, apple uses Linux parts in their OS - yet their OS isn't released under the GPL.

Most of us have built libraries for languages or systems built on those languages. So when does our code become a derivative of someone else's code?

+3  A: 

Edit to Add: I am not a lawyer, I don't play one on TV, nor do I pretend to be one on the internets.

From the Copyright Act:

A “derivative work” is a work based upon one or more pre-existing 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”.

In English, from Wikipedia:

A derivative work pertaining to copyright law, is an expressive creation that includes major, copyright-protected elements of an original, previously created first work.

None of those that you've mentioned would be derivative works because your completed product has nothing in there that is under someone else's copyright nor was it based off of someone else's copyright. -- Tools used, however, are fine.

A side example: In a previous lifetime, I used to create audio books and sell them on Ebay. I was sent a cease-and-desist order for selling audio versions of CS Lewis books. Even though what I was selling was original, it was based off of copyrighted text, and therefore it was a derivative work.

Milan Ramaiya
So if your product **uses** another product it is not “derivative" only if it *extends* or is *based on/represents* another product?
Xeoncross
@Xeoncross Right ... and that's for derivative products.If you're using a library, it may break something else. For example, GPL libraries can't be used without making your own product GPL. But if it's LGPL, it can be used in your commercial application as long as you don't modify the library (or release your changes).
Milan Ramaiya
Then wouldn't a wordpress theme like above be considered as *extending* wordpress to use a new theme? Since the theme only works with wordpress?
Xeoncross
Not really, because you're not using any of Word Press' copyrighted material, but rather building yours in a way that it can read. Think of this way: If someone releases a brand new language and compiler (and there's only one), and you write source code, is your source code an extension of that compiler, because it won't work without it? ... No, the compiler is really just an interpreter for your work. On the same note, WordPress is an interpreter for your theme.
Milan Ramaiya
A: 

The PHP license doesn't place any constraints on what you do with stuff you build with it. If you want to GPL something you've produced with PHP, there's nothing in the PHP license stopping you.

Note also that even if there was, you could distribute the source form of your framework under the GPL just fine - the license on a particular piece of software does not extend to plain text that may or may not be used as input to the software.

IANAL, though.

Anon.
+2  A: 

The crux of the answer depends on whether distribution of the new work includes code from the work you are referencing. It sounds like the GPL is specifically what you're asking about, so we'll stick with that.

Case 1: If you create a PHP framework and include code licensed under the PHP License in the source code that comprises that framework, then your code would be a derivative work. In the case of PHP source code, that means that you would have to include the PHP license information and identify portions of your source code that are licensed under the PHP license.

If you wrote all of the code within the PHP Framework source you're talking about, you can release it under whatever license you wish. Most PHP Frameworks (from my brief search) appear to be BSD-licensed, but nothing prevents you from creating a GPL-licensed framework of your own.

Case 2: Wordpress themes are GPL (at least the PHP code is) http://wordpress.org/development/2009/07/themes-are-gpl-too/

Case 3: Depends on what you're asking. If you're asking if it's okay to create a new class that could be used with an existing framework (and doesn't reference anything in the framework it's meant to be included in), but you are not creating a new version of the framework, including the class, and distributing this modified compilation, then no, that wouldn't be a derivative work.

Even if you did include it, you'd still not have licensing issues until you decided to distribute that version. At that point, you would have a derivative work (since it includes other code), and the license of that existing code would become important in determining whether or not you would be allowed to do so.

It might help a bit to know why the question is being asked, since there are an awful lot of what-ifs involved. You might contact the EFF or SFLC with specific questions about a specific situation.

drakaan
Thanks for this through overview, I added a bit more to the bottom of my question.
Xeoncross
+1 Regarding Case #2, That's a really good point. If the theme you create uses WordPress templates, that's definitely a derivative work. I'm not sure how WordPress themes work, but theoretically, given a black box of the files it uses and its API, you could create a theme without any of its internal code.You would still be liable if there are any specific copyrights on the API, but that's a different question.
Milan Ramaiya
Wouldn't using the api and functions wordpress provides for themes be *using wordpress code* since (legally) there is no distinction between using a function that isn't yours - and using a statement that isn't yours?
Xeoncross
That's pretty much the issue that the SFLC talks about with regards to the PHP portion of the theme. They, however, take it farther than I think is correct, and say that the way that any themes get combined with other output into the final html via the include() function makes them derivative. It seems to me that the black-box development scenario argues against that wide definition.
drakaan
A: 

In theory, the GPL requires anything that statically links to any code under the GPL to be released back to the GPL community.

http://63.249.85.132/open%5Fsource%5Flicense.htm

Does this mean that dynamic scripts like Ruby & PHP aren't under this license?

Xeoncross
interesting point. But what about this scenario: I link my commercial application dynamically with such a library (let's call it libGPLed.so). For the customers convenience I ship the needed libGPLed.so with the application installer. Is my work derivative in this case?
The FSF says that dynamic linking is still linking, and the only actually qualified opinion I saw on that was that it's quite likely a judge would agree.
David Thornley
So are you saying dynamic scripts which contain static links in their code are under this license?
Xeoncross
@David: A judge wouldn't understand. Good luck explaining the difference between dynamic linking (= linking) and fork/exec (= not linking according to GPL) to anyone who is not a programmer.
erikkallen
+1  A: 

You see, I originally thought that all code built on (or built for) something was derivative code - but that is not true. For example, apple uses Linux parts in their OS - yet their OS isn't released under the GPL.

If you're referring to gcc and the bash shell, these are not a part of Linux. These are independent programs, and Apple's use of them is subject to the GPL. For instance, if Apple makes modifications to gcc, these modifications must be licensed under the GPL.

If Apple was to borrow parts of the linux kernel into their own kernel for instance, then they'd have to release their own kernel under GPL.

hasen j
+1  A: 

IANAL, but much of this is very simple. A derivative work is something based on something else, fundamentally. It doesn't mean something that's created by a pre-existing work, or something separate that works with the original. To go through some of your examples....

The PHP license is for using the language, presumably the interpreter. Programs written in PHP aren't derivative works, since they don't incorporate PHP themselves, but are written to work with PHP and are interpreted by it. (Even so, there's no reason there can't be multiple licenses on software, so that it can only be used under the intersection of the conditions.)

I don't know about Wordpress themes, but it sounds like something you'd create with Wordpress and use with Wordpress. If they incorporated something pre-existing, like a template, they'd be a derivative work of the template.

A work under a proprietary license can exist side-by-side with GPLed code, but compiling creates a derivative work from the source code (not from the compiler), and linking creates a further derivative work. Therefore, if you have an executable that contains some GPLed code, it's a derivative of that code (among others) and by the terms of the GPL must be under the GPL.

Apple does not in fact use Linux in MacOSX. Their OS is based on BSD, which is similar to Linux in function but a different OS kernel and differently licensed. They do ship GPLed software, like much of their software development kit, but anybody can do that. A collection of independent programs is not an actual work, and Apple (like anybody else) can ship GPLed software under the GPL.

If you're shipping a product that has something somebody else has written in it, it's a derivative work. If not, it's generally not. It doesn't matter if you used somebody else's program to create it, or if you need to use somebody else's program to use it, or if you're shipping somebody else's program along with your stuff.

David Thornley
That last paragraph sheds some light on the subject. However, when using a language you are embedding function calls in your code that you did not write - so wouldn't that make your code a *derivative*? I didn't write the `strlen()` PHP function - so wouldn't using it mean that I am *incorporating someone else's code* into my project? In the same way, wouldn't using the `do_post()` wordpress function (*that I did not write*) be building on someone elses code?
Xeoncross
You didn't write PHP `strlen()` - but are you incorporating it? Are you creating a standalone executable, or are you just calling into another software package? (With gcc, you may be incorporating `glibc`, and in that case you do have to check the license, because their code is going into what you ship.)
David Thornley
Since my code requires the PHP executable to provide life to this function that I have *embedded into my code* - it seems like I'm doing more than just calling an outside API. Wouldn't an outside API be more like calling `system()` function to load a Firefox instance?
Xeoncross
+2  A: 

IANAL. One thing to remember: several projects explicitly draw a line around the "derivative work" concept to limit what it can entail.

For example, every program that runs on the Linux kernel ends up including kernel code into the operating program because of the way programs run on operating systems. To make it easy to write a program a header file is typically used when compiling the program so that it knows how to incorporate the kernel bits. Linus Torvalds has stated that this use does not make the program a derivative work of the kernel.

In other cases, such as PHP (and C, to a lesser extent) the language can not be claimed to be a derivative work of its libraries. Sure, you can call strlen() and, at link time or run time your program is linked to a library you did not write. But the program itself is not a derivative work of the language or the runtime. In many cases the library used merely exposes an implementation of a standard, and thus the program is not a derivative of that library specifically. So your C program which calls strlen() can link against any C library that has a strlen() in it. Your program is not automatically a derivative work of Glibc. Even PHP has multiple implementations (The Resin webserver ships with a PHP implementation in Java). So even if PHP were GPL your program might not need to be.

A framework is really an extended set of libraries and the normal rules for libraries would apply. For example, if the framework is one implementation of a standard, then maybe distributing it with your app is a violation of the GPL but simply using it would not be since your app is a derivative of the standard and not this specific instance of the framework. For example, an application which uses EJBs can run on IBM WebSphere, RedHat's JBoss, Bea's Weblogic, etc, and not have to comply with JBoss's license. Maybe shipping JBoss and your app on the same CD would violate the license for JBoss but your app is otherwise free of restrictions (unless it includes parts of JBoss in it).

If the framework in question is not a standard and nobody else implements it, and/or you must include parts of the framework in your own code, then your app may be a derivative work. Consider a linux kernel module: it is difficult to create a module which does not violate the GPL because most modules must include kernel code to get their job done. nVidia sidesteps this by creating a proprietary blob which has no kernel code in it, but is not a fully functional module, and adds on some GPL glue code which makes it into a module. Most kernel devs consider it a GPL violation to distribute both the kernel and the driver together (since you create a derivative work of the kernel by adding a module, but that module is not GPL) but distributing the module by itself does not create a derivative work until it is combined by the end user, who no longer distributes it and thus is not bound by any distribution terms.

Keep in mind: not all projects have the same interpretations of the licenses they use. You may be within your legal rights to use code a certain way according to the stated license, but you probably don't want to be sued, so when in doubt consult with a lawyer the original copyright holders.

Mr. Shiny and New
Very through answer, it helps to know that *the language can not be claimed to be a derivative work of its libraries* I wonder if that means that *the libraries can not be claimed to be a derivative work of the language*?
Xeoncross
@Xeoncross: I would say that the libraries and the language are independent and I doubt (again, IANAL) that you can copyright a language. (You could, perhaps, patent it). However, even if your source code is not a derivative work of glibc your binary code could be if it is linked against glibc.
Mr. Shiny and New
Note this is a specific example that the driver must copy and extend certain kernel code. Simply running your code under a linux kernel doesn't make it a derived work, anymore than running it on Intel makes it derived from the CPU microcode.
Martin Beckett
A: 

The GPL is a license for the distribution of software owned by the original copyright holder, as long as you don't distribute GPL code yourself you can ignore it.

If you distribute GPL code together with GPL-incompatible code, you are violating the license and thus, you are not getting a right to copy which means you are committing a copyright violation over the original GPL code. Your code is still copyright you and available under whatever license you choose, unless it is a derivative work.

The GPL asserts that anything that links with GPL code is a derivative work, but that is dubious to say the least especially if the interfaces to that code are public.

However, if their assertion was supported in court, and for example under Japanese Copyright Law, the original authors would get copyright over all of your code except the moral right to modification meaning they would be free to distribute free copies of your code whatever license you used for it even if you never distributed GPL code.

Note that even if your code is not derivative despite of linking, you would still be violating the copyright of GPL code on distribution. You could distribute it to users of the GPL program for them to do the linking, though.

Even blurrier is what happens to code that was originally derived from other code but no longer containing any of the original code. Most people seem to think that deleting the code is enough, but is it? No one knows for sure.

jbcreix
+1  A: 

Sorry about the non-answer — I can’t comment on the answer directly.

OS X is not based on Linux. It’s kernel is called Darwin, which is based on NeXTSTEP/BSD and is open source: http://developer.apple.com/darwin/

There is a project called PureDarwin that releases a complete distribution based on it.

Richard John