RMS On Header Files and Derivative Works
tomhudson writes "In this email from 2003, Richard Stallman says 'I've talked with our lawyer about one specific issue that you raised: that of
using simple material from header files. Someone recently made the claim that including a header file always
makes a derivative work. That's not the FSF's view. Our view is that just using structure
definitions, typedefs, enumeration constants, macros with simple
bodies, etc., is NOT enough to make a derivative work. It would take
a substantial amount of code (coming from inline functions or macros
with substantial bodies) to do that.' This should help end the recent FUD about the Android 'clean headers.'"
This should help end the recent FUD about the Android 'clean headers.
you must be new here..
I've hear it suggested by a number of lawyers that the _specification_ a binary interface of a library is a statement of fact, rather than a creative work. Since copyright does not apply to statements of fact this would suggest that structure definitions and the like would not be subject to copyright, and by extension the is no issue regarding derivative works. Of course you could probably as the same lawyers on a different day (or with a different person paying the bills) and get a different answer, but the concept seems to make sense.
If intelligent life is too complex to evolve on its own, who designed God?
The following excerpt appears near the beginning of the GPL v2 license that covers Linux (emphasis added):
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
How the fuck do we decide what a "substantial amount of code" actually is? Where exactly is the boundary? More importantly, is it a boundary that shifts when convenient for political reasons?
This is a really good example of why any open source code should just use a liberal license. It doesn't matter if it's a BSD-derived license, or the MIT/X11 license, or the zlib/libpng license, or some other non-GNU license. It just needs to be a license that promotes a very free and open use of the code in question, without all of this bullshit about "derivative works" and the near-nonsensical deliberation that goes along with it.
hmm so ?
is that supposed to give him a bad name?
you fail at trolling.
You can say fuck on slashdot dude. Hell, you can type anything you want at zombocom er slashdot.
this invalidates everything rms says about free software, right ?
please. the regulars of this place are not your ordinary morons like in american public who would immediately fall for a character assassination and just forget what's what and what's not, even if accusations are true.
software, is software. pedophilia is pedophilia. opinions about pedophilia, are opinions about pedophilia.
one needs cognitive power as much to be able to differentiate in between this 3 set of concepts in order to be able to talk in slashdot and get proper attention.
Read radical news here
How the fuck do we decide what a "substantial amount of code" actually is? Where exactly is the boundary?
Free Software zealot: "substantial amount of code" == one line
Corporate America: "substantial amount of code" == entire program.
IP Lawyers: "substantial amount of code" == new Porsche.
First of all, it's his right to agree with this. Some even more famous minds agree with this. Pedophilia wasn't always a taboo.
Second of all, his opinion on sexual ethics is completely irrelevant here. We're talking about Free Software and copyrights. He happens to be an expert in that area, seeing as he kind of invented it. Not to mention that it would probably be his FSF doing the suing if the header files turned out to be an issue.
Can someone explain something to me... how does anyone but Linus Torvalds have the standing to file an action or even complain about this? He owns the copyright, shouldn't he be the one that decides that something is in violation.
I know that FSF has brought actions in some rare cases, but isn't that on behalf of the real owner of the copyright?
Anyway.. it does seem like if FSF and Linus don't have a problem with what was done there is nothing to talk about. Am I oversimplifying this?
Who else is fed up by Florian Mueller's antics?
People think RMS is unreasonable and as grasping as some of the commercialists he decries. Not in my experience.
I've had the same sort of [slow] email chat with him, and he is far more technical (and reasonable). I wouldn't want to speak for him, but the closest I got was that if source produced executable binary, then it was derivative. If the included source only affected the production of executable generated by other source, it was not derivative.
There is nothing new, only unique combinations of old old shit. Copyright is insane. Except, I guess, in the predatory society we live in.
For justice, we must go to Don Corleone
Minor fix, if I may:
Free Software zealot: "substantial amount of code" == one bit
Corporate America (planet actually): "substantial amount of code" == entire universe.
IP Lawyers: "substantial amount of code" == new Porsche, or 30% of entire universe, whichever is greater.
So at least in C++, the header files could just specify interfaces or they could specify the entire program source code.
Fuck Stallman. In 1990 I was using Bison and Stallman told me that the include files meant that what I was doing was covered by the totally non open GNU license. So I switched back to Berkeley yacc which has a much more open license.
And screw all of you who don't get that Berkeley/MIT licenses are much more open than the GNU control freak shit.
I thought the initial news was that copyrights were removed from the Android glib files and replaced by a mention it's public domain. If they are not removed there is no reason indeed to talk about this (except the news was false). If they are removed most of the comments about "including headers creates derived work or not" is not related to the subject IMO, then the main subject is that Google tried to removed the copyrights.
So, using the headers to access kernel services does not create a derivative work.
This is over and above that the files in question have been stripped of copyrightable content.
Corporate America issues takedown notices for people using 10 second clips of 2-hour videos, for gamers distributing 1 binary file out of the 60,000 shipped, for forum-posting 1 source file of a leaked codebase, for blogging a mathematical constant. To businesses, 'substantial' means "anything that we do not control."
The FSF is NOT the copyright holder of the Linux _kernel_ (or most of it).
... a derivative work?
Sure, if you're a small independent developer at home, you might feel secure about this statement, but in reality, you were never at risk at all. You're just too small for this to matter.
If you're a big company, what really matters is how your own legal department interprets this. But of course, if you're big enough to have your own legal department, perhaps you can just buy a commercially available equivalent or implement your own from scratch. (This does, perhaps, create headaches for people who want open source interoperability, since the big company legal interpretation can cause huge problems if trying to get everyone to standardize on an interface that could be interpreted as being encumbered.)
Where you're really screwed is if you're a small startup company. You feel like a small independent developer at the time and might even feel secure with "RMS said it was okay." But then when it comes time that you need to get acquired in order to have an exit, you find that no buyers will touch you with a 10 foot pole because of a legal consensus that the issue is too vague and exposes the buyer to considerable legal risk. Then, all your years of hard work are down the drain.
Employment law is complicated too... doesn't mean we should allow slavery.
You BSD superfans just don't get it.
Basically, RMS is talking about dynamic linking. If you static link to GPL or LGPL, then you create a derivative work.
By this same reasoning he should sit down and STFU regarding the GNU/Linux versus Linux debate. If you use the argument that some of the structure was in ancillary files, the GNU has absolutely no leg to stand on regarding Stallman's demands that it be GNU/Linux because Linus used the GNU toolchain to get the "derivative" started.
No but employment law is a very valid argument for not personally employing somebody. GPL has advantages that are sometimes critical (copyleft, anti-tivoization) but more often than not the added complication and uncertainty is not worth it.
In Android's case the GPL is its only strength as a platform, and it would only be improved by going GPLv3 for the kernel.
I'd suggest the fair use guidelines. Since the GPL is primarily protected by copyright, these apply anyway.
These guidelines that take into account many factors including the amount copied relative to the greater work, the effect on the original work, and the nature of the use.
I have always wondered about C++ header files. Take the Standard C++ Library, things like like the file "algorithm". Here you have the entire implementation of things like sort written as a template function which gets instantiated into actual code compiled and linked into your project. I presume such header files can be copyrighted. It actually requires thinking to do a good implementation of a template function doing sort (typically IntroSort). Since the instantiation gets compiled into your code what license covers your project?
... for providing a reference. This is a pretty conclusive statement, and definitely clears things up for me. I apologize if my comments in the previous discussion on the use of kernel headers by Android mislead someone (IANAL and all that).
When he says 'substantial' I hear 'non-empty'. You can't link to a single function in a dynamic library without creating a derivative work. So be sure you strip out all inline functions and macros from GPL header files and just use the structures, typedefs, and enums. Just to be safe. And goodbye C++ templates.
RMS commits a logic error here. He's much more lucid on other issues.
The curiosity of a child towards sex is voluntary only in a desert island, here a child is subjected to all explicit and implicit stimulation of sexual urges which is standard practice in marketing. There is also no doubt that a child can be easily convinced to do stuff by clever and determined people. Finally, proving something "comes from his will" is not feasible today and a legal nightmare. So while his statement is true in theory it is irrelevant in practice. If a little baby is maturing let him mature with his peers, no problem with that.
That "think of the children" is used to push another agenda (control of the internet), is also true, but a completely independent problem. Ironically an unreasonably restrictive stance helps putting paedophiles on the side of freedom fighters(a teen shooting nudes of herself is accused of trafficking child pornography? Madness. Nail the buyer instead). Very stupid.
---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
> Pedophilia wasn't always a taboo.
Nor human sacrifices. Nor slavery (oh wait we are slaves today nvm)
And anyway the correct term shoud be pederasty.
I agree with RMS on headers, those are interfaces.
---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
This article is such a perfect example of nerds missing the point.
It doesn't matter if the header files cannot be copyrighted, the real issue is patents.
The fact that Dalvik is so similar in functionality to Java that the same exact header files were used, even had to be used, were copy-pasted, just strengthens Oracle's case that Dalvik infringes on Oracle's patents. The header files show that Dalvik is not just a mobile application environment, it is a mobile Java application environment. Exactly what Oracle says it is. Why would you go to the trouble of making such a work-alike when you can just license the original? Because you don't want to pay license fees. Exactly why Oracle says Google made Dalvik.
Imagine Google created a Google Video Disc (GVD) player and the patent holder on the DVD player sued, saying the GVD player infringes on DVD patents. Finding facts from the DVD specification (disc size, laser wavelength, etc.) in the GVD player code, even if such facts were not copyrightable, suggests that the GVD player is a work-alike of the DVD player and that strengthens the case that it infringes on DVD player patents. It suggests that GVD is not a separate video player implementation, it's a copy of a DVD player, made in such a way that it can play a video disc without having to pay license fees to the DVD patent holder.
The best part of the above analogy is that mobile Java is just as obsolete as the DVD. Google should ship Android v4 with a native C API and a functional HTML5 app environment, both of which iOS already has and Android lacks. Mobile Java is very, very 2006. You still want me to rewrite my C app in Java after I refused to do that for like 10 years now?
So if you are into Android, forget Oracle vs Google and start lobbying for Android development to catch up to 2007-2008. Yes, Dalvik is going to be impounded and destroyed. Yes, that will be one of the best things that ever happened to Android.
Computer Associates International, Inc. v. Altai, Inc. http://scholar.google.com/scholar_case?case=6976925648486076739&q=Computer+A ssociates+International,+Inc.+v.+Altai,+Inc.&hl=en&as_sdt=2,23&as_vi s=1 This is where the abstraction-filtration-comparison process was used in a copyright and trade secret case. The process the court must first determine the allegedly infringed program's constituent structural parts. Then, the parts are filtered to extract any non-protected elements. Non-protected elements include: elements made for efficiency (i.e. elements with a limited number of ways it can be expressed and thus incidental to the idea) elements dictated by external factors (i.e. standard techniques) design elements taken from the public domain Any of these non-protected elements are thrown out and the remaining elements are compared with the allegedly infringing program's elements to determine substantial similarity. So header files would be thrown out because of standard techniques and design elements taken from the public domain. The kernel header files mainly express the POSIX standards of communication between the system and programs. That is not to say ALL header files are not copyrightable. A header file used in an application may be copyrightable if it expresses something outside of the three excluded elements above in sufficient quantities. But in this instance the portions of the kernel header files that Google copied into a new file and distributed fall into one of the three exclusions from above. I am not a lawyer. This is not legal advice. Read the legal findings yourself or consult a real lawyer if you are concerned.
Taken from Corporate America: "substantial amount of code" == one line
Taken by Corporate America: "substantial amount of code" == entire program.
First of all, what the FSFs opinion is on the matter is mostly irrelevant as this is about the meaning of "derived work" in copyright law. The FSF doesn't have the power to define what that is and should a court find the kernel headers are derived then the FSF has no power to grant exceptions on behalf of all the people that have used their license text.
As for the courts, they have gone very far to copyright all kinds of original expression. Short poems, a few notes from a song, short lyrics are all copyrighted. Perhaps not #define MAX( a, b ) if a > b return a else b; but if say there's a loop and you have a choice between C++ style iterator, Java-style iterator or a foreach syntax, that's starting to look a lot like an implementation choice and an original expression. Of course if the choices are few that can be ascribed to coincidence, but not if you consistently make exactly the same choices...
Live today, because you never know what tomorrow brings
What mathematical constant? You can encode many things as numbers, including stories, songs, movies, and the CSS and AACS encryption keys, but these are not mathematical constants.
As before, the parent is 100% incorrect. There are NO cases that are ON POINT here that have been decided by the US Supreme Court. To say otherwise is WISHFUL thinking.
There are a lot of open questions, and most importantly a lot of distinguishing facts in this case. If you want to rely on cases that can be - and have been - distinguished from this one, you can, but as an attorney, it is not what you should do. It is a bad idea to rely on a case, even from US Sup that is not directly on point and there are ABSOLUTELY NO CASES that are on point here. There are large differences in FACTS between this and what the US Sup has said. For those not familiar with the law, being on point means that you have the same set of facts. Distinguishing one case from another means that there are different sets of facts between cases. The parent post is 100% incorrect in saying this is "settled."
Similarly, regarding the COPYING file - there is a different between the 'access kernel services' and what is being done here and while RMS may be right, relying on the COPYING file when you have 1000s of people, any one of which may disagree with RMS and who can enforce the GPL, is a bad idea because a court may not agree.
Again, IAAL who has experience in this area. Which way a court will rule is an open question, but spreading incorrect information about what US Sup has said on the matter and being modded "informative" is typical, but gives a false sense of security to those who read it. Granted there may be FUD going on here, but your post that was modded "informative" was anything but - it presents ONE POSSIBLE OUTCOME, but that is all.
The law is not binary and here without the same set of facts you are incorrect that this is settled.
The only thing "settled" here is that this is completely unsettled given the GPL involvement, the nature of what exactly "compilations of facts" are etc. There are many ways to distinguish this case and saying otherwise is just plain irresponsible.
Thing is, Stallman is saying that just including a header file. eg. #include "stdio.h" does not make the program a derivative of stdio.h.
It doesn't however mean you can get stdio.h, remove all the comments and copyrights then pass that off as your own file, which is what Google have allegedly done.
I wish I had mod points today, but mods should mod the parent up, the GP is wrong. Parent is right, it is wishful thinking to say otherwise.
Note that they've never sued anybody about this. It's just posturing.
The claim that the GPL has now been tested in court, while true, doesn't address this issue, and IMHO probably never will.
BTW, I addressed the exact same Eben Moglen quote (from a slashdot interview in February 03) on a discussion thread on the Python mailing list in November of that same year. About the only thing that has changed in the intervening 7 years is that there are now enough important non-GPLed opensource projects that it is much harder for Stallman and his acolytes to cow all the FOSS developers into believing that he's always right on everything.
He kindly told me that he thought about it, and this is not a case of violation.
However, he did not tell me anything about header files, so I suppose
we must assume he still thinks the same on this since 2003.
From what I gather in his 2003 e-mail, I believe their lawyer must have
thought of the "fair use" exceptions in copyright law, and indeed
simply quoting a few typedefs would fall under fair use (since it is not a
substantial portion). On the other hand, I have a hard time believing
that this goes for anything in "header files", in general. I think you
would have to ask him about the opinion of the FSF on header files,
and interface definitions in general in any language. Note that he did
not mention "function declarations". Read what he says carefully:
> Someone recently made the claim that including a header file always
> makes a derivative work.
>
> That's not the FSF's view. Our view is that just using structure
> definitions, typedefs, enumeration constants, macros with simple
> bodies, etc., is NOT enough to make a derivative work. It would take
> a substantial amount of code (coming from inline functions or macros
> with substantial bodies) to do that.
He explicitly says that for there to be a derivative work, it would take
a substantial amount of code. So, you can't just take a substantial
portion of a GPL'd program's (either an application of a library) *interface*
and release it under an arbitrary license. That is simply not permitted by the license.
I think there are trolls from some companies here that are trying to make it seem as
if you can use GPL'd libraries in any proprietary program. I am beginning to
suspect they already do that in other ways.
Best,
--exa--
Sure, but nowhere in the GPL is this batshit-insane definition of derivative work ever written. I will give RMS this -- unlike a lot of shrinkwrapped licenses, the GPL itself, as written, is mostly quite reasonable, and it would be hard to claim that people using it are engaging in copyright misuse. From GPL v3:
At least in the US, the mere creation of program B which can communicate with GPLed program A (not copying from or adapting program A) via an API doesn't require copyright permission, so the GPL doesn't cover any distribution of program B by itself, much as that appears to offend RMS's sense of fairness.
And since the GPL doesn't disallow running your own legally acquired copy of a program, you can certainly test your own program B with program A before you distribute B by itself.
The GPL teeth aren't about use. They're about distribution. So if I'm not distributing someone else's GPLed code, there are no worries. BTW, this happens all the time with open source projects that are BSD-licensed, but that can interoperate with GPLed components.
Are we onto humanism as relates to the GPL now? I thought that was thoroughly covered in 1998.
Help stamp out iliturcy.
So news articles, or research papers, or sports scores, or analysis reports are all not copyrightable?
What about photos, which are just a fact.
I believe the question is if including a header file makes it a derivative work or not.
I think a header file can have a copyright, and if you modify it, it is a derivative work.
However I think RMS is correct in that merely referencing a header file (via #include) isn't creating a derivative work.
YES IT DOES MEAN THAT. You CAN file off all the comments and copyrights because
a) the comments are the only copyrightable elements in a header file of declarations
b) if it's not copyrightable, the copyright declaration is either bogus or about the comments, if the former, it's worse than what Google does: it's claiming public information as copyrightable which is fraud.
You can take a phone book and OCR all the pages and throw away anything that isn't the standard Times New Roman (or whatever) font and that leaves you with all the facts. All the names, numbers and adresses that are facts and not copyrightable. You can then put that into a phone directory of your own, called "gilesjuk phone directory" and sell or give it away.
Why? Because NOBODY OWNS FACTS.
I'm genuinely puzzeled. If Google had kept the comments in, would you be fine with it? After all that would be copyright infringement.
As to the sibling poster, the difference is that the declaration of a C call with the name strcmp that returns a signed integer whilst taking a char pointer and another char pointer is not copyrightable. However, how you implement strcmp can be copyrighted if it's sufficiently novel to deserve protection.
Similarly, you can write a story about a boy who grows up not knowing his destiny and coming in to great power as a wizard and you can't copyright that idea. You CAN copyright the Harry Potter books, however.
This is also weird in that MS require includes for their declarations. How come they don't cause problems? They use strcmp. So how do we know it's not the GPL strcmp include they're using? Maybe Microsoft are filing off all the copyright statements and identifying comments of Linux headers and just *saying* it's USL copyright or BSD or theirs or whatever?
Prove me wrong.
The internet is a great thing.
Stallman, et al. have publicly taken the position that it doesn't matter who does the linking (the app developer or the customer), that it's still a violation.
I believe that if I write an application that needs a GPLed dynamic library component (for example, one that just happens to be available on most modern Linux distros), that I'm in the clear if I distribute the app. Or even if I distribute the app in a package that calls out the GPLed component as a dependency.
Now, I can easily believe that someone like Canonical might be in trouble if they distribute this app, because they're also distributing the GPLed library. But I think I would be fine just distributing my app, and I think that if I did so, the FSF might wail and gnash their teeth about it, but in the end they wouldn't do anything.
For example, the Eclipse license FAQ states that a plugin is not a derivative work, and yet that "Based upon the position of the Free Software Foundation, you may not combine EPL and GPL code in any scenario where linking exists between code made available under those licenses."
This is IBM very charitably saying "we don't believe this and don't care or enforce it, but obviously the FSF believes this deeply.
I, myself, contribute to a BSD licensed library that can make use of a GPLed library if it's installed. We don't distribute the GPLed library, so I don't think there is an issue. In a way, I'd actually like to see the FSF sue someone about this to get some caselaw on the subject, but they're way too smart for that. Much easier just to sling FUD, even if you do have to write all sorts of monotonous FAQs filled with half-truths. (At least, the FAQs do serve the valid purpose of keeping someone from committing an actual license violation by shipping GPL and non-GPL code side by side, but all the dancing on the head of the pin to avoid admitting there are some nuanced cases that the GPL can't and doesn't control gets annoying after awhile.)
(2) I never said any tested licenses were "similar", just that they attempt (unsuccessfully) to control what the user can do, just like the GPL's attempt would be unsuccessful.
See, for example, Vault v. Quaid, Galoob v. Nintendo, MICRO STAR v FORMGEN, and Baystate v Bentley. Or even start with the granddaddy of them all, Sega v Accolade. Don't be fooled that Sega was a reverse-engineering/trademark case -- the 9th circuit directly addressed fair use in the appellate decision.
But you have to carefully read the reasoning to understand that these cases define some of the limits of copyright protection, and that no magic GPL pixie dust can extend those limits. The GPL is based on copyright, and grants users rights that bare copyright does not. It cannot take away those rights that copyright law already grants.
Obviously, my analysis was extremely US-centric. I can see how it could get very messy with cross-border lawsuits in countries with different caselaw, and won't even pretend that I've been exposed to, much less thought about, all the different issues involved.