Matthew Garrett:
So, in the face of a technical mechanism designed to enforce the author’s beliefs about the copyright status of callers of this function, Oracle deliberately circumvent that technical mechanism by simply re-exporting the same function under a new name. It should be emphasised that calling an EXPORT_SYMBOL_GPL() function does not inherently cause the caller to become a derivative work of the kernel – it only represents the original author’s opinion of whether it would. You’d still need a court case to find out for sure. But if it turns out that the use of ktime_get() does cause a work to become derivative, Oracle would find it fairly difficult to argue that their infringement was accidental.
Aside from the obvious jab at Oracle for being an untrustworthy company, what I found interesting about this story is how legal concerns have crept all the way down to the very lowest levels of the Linux kernel.
It must be a nightmare to keep track of all this stuff and having to develop Oracle’s DTrace for Linux. You can’t just have fun coding away creating the best, most efficient, and most optimal code – nope, you have to code the best, most efficient legal workaround.
Oracle are the good guys, they would never intentionally subvert an API for their own gain. As they proved in court recently, APIs are copyrightable and thus sacrosanct. Anyone subverting an API produced by someone else is just a filthy dirty liar who deserved to be sued in court for the next decade.
Did I get that right, Nelson?
I don’t think Oracle mind being in court, plaintiff or defendant.
Did you get that right? Is that a serious question?
No, btw.
Oracle isn’t the one that put politics into the fricking kernel. I mean if there is one place where political BS shouldn’t have purchase it should be in the kernel, so this is just….damn. What whacko put that in the kernel? Because I REALLY can’t see Torvalds adding bloat to his creation just so he can throw a GPL symbol like a gang sign on demand, that is crazy!
I personally don’t have a stake in the whole “Oracle versus FOSS fans” thing as I don’t use either’s products but if your code is becoming so political you are putting GPL calls into it? Perhaps its time to take a step back and rethink. Its a license, NOT religion guys.
If I remember correctly there was indeed a rather spirited discussion over the whole thing on the LKML at the time.
Vanders,
This by Keith Owens from 2001? It’s funny how the controversy still exists a decade and a half later!
http://lkml.iu.edu/hypermail/linux/kernel/0110.2/0369.html
I think Keith Owens was/is wrong on this one. It doesn’t matter what the person “decides”, what matters is the license under which the code is legally published. The GPL doesn’t permit developers to add further restrictions on top of the GPL:
As I read it, developers surrender the right to impose further restrictions, such as which interfaces can/cannot be used by external modules. The GPL permits non-GPL modules to be linked into an unmodified GPL kernel on a user’s system at run time (even per Linus himself if I recall correctly), and clause 6 above prohibits restrictions on top of this. Whatever the intention of EXPORT_SYMBOL_GPL is, I’d argue that anyone wanting to retain the ability to decide interface usage rights should not be using GPL to being with. Developers could create a new license to accommodate interface restrictions, however it would ironically not be GPL compliant.
I wonder if Oracle’s decision to work around EXPORT_SYMBOL_GPL was given cleared by the lawyers? Of course, nobody knows what the hell the courts would do, it’s a complete crap-shoot!
Edit: I’m fully aware that opinions will differ, which is fine. Although it sounded rude, Kieth was wise to say “Don’t bother cc’ing me on any replies. Also I don’t care what your view of the GPL is or should be.”
Edited 2014-05-13 15:47 UTC
In this case, the legalities are there to protect other kernel developers and users of the kernel. If Oracle could put whatever code they wanted in kernel modules and the kernel itself, they could presumably do all sorts of crazy shit that the Linux kernel does not permit, like not re-distributing the code.
Leaving aside the legal and ethical implications of their GPLed shim, what it really does is guarantee redistributability of the shim while having the ability to “lock down” the CDDL code. Note that CDDL is “BSD-like” which actually makes it _more permissive_ than the GPL in certain respects, but that permissiveness allows the original author to be _less permissive_ to other OSS authors.
FOSS software is based around developers working together and sharing code. It must be done in good faith, and having the legal framework around it guarantees (to some extent) that good faith. Thom’s assertion that coding shouldn’t have to be about dodging legal bullets ignores the idea that “dodging” these bullets means giving good faith guarantees about your code to other developers.
Pretty sure that Oracle can be sued under the DMCA for circumventing a copy-protection method.
Edited 2014-05-12 03:05 UTC
You’re totally off the whack there, copyrights have absolutely nothing to do with copy-protection. There is no way of using DMCA against something that breaks copyrights. Copy-protection methods are things like e.g. CSS used on DVDs whereas GPL is a copyright license; the difference is that copy-protection methods are functional methods of limiting use whereas copyrights are legally-enforced ones.
Edited 2014-05-12 06:18 UTC
Actually, I think they might have a case. The exported code is there to prevent copyright violations. By exporting a normal value, Oracle is bypassing that functionality. Remember, the argument that CSS was ineffective didn’t work against it. This might be a stretch, but possible I think.
Hmm.. Well the point is not about legal protection but about quality of code.
You know – code that’s legally safe, but runs abominable because it can’t be optimised to avoid legal loopholes.
This is one of the reasons why software patents are hurting innovation. You have to check every line of code if you are not breaching one of the countless patents. And if you do, you have to “work around” with sub-par code, and if that’s not possible you maybe have to dump the whole project. How many nice and innovative software is thrown in the dustbin because of software patents is everybody’s guess, but I am absolutely sure it’s a lot.
Actually, I think most software writers do what they like anyway, and hope it will fly under the radar…
You can have fun coding without jumping through legal hoops. Just license your code under GPL (like the rest of the kernel you are trying to use). No need to invent questionable legal workarounds. Oracle fully owns DTrace and can relicense it in the blink of an eye.
Oracle has choosen to not to, thus bringing the burden of circumventing law on themselves.
Exactly, I have no sympathy for Oracle here: they receive a huge benefit from using the Free kernel code. This legal work is a lot less compared with having to write a kernel from scratch on their own.
There are problems with that:
My guess would be Oracle wants to benefit from the work of the community and they all release their code under CDDL.
Oracle can only change the license on code they own.
And GPL and CDDL are not compatible in the same project.
Something else to know:
When Oracle bought Sun, lots of core developers of Solaris, ZFS and D-Trace left Oracle.
Edited 2014-05-12 11:59 UTC
Fabulous evolution of code, where they compile together, but are opposite licensed… Talk about nonsense, hu ? What’s the next step, exclusive applications for dedicated platforms ? Ooops, sorry, been there, done that…
Imagine the next Mars rover, running under Java, sending Microsoft applications cause a hard fault, cannot restart the rover due to licensing scheme. Let’s name this rover Marvin…
Kochise
The code was developed by Sun employees working in the company time, of course the company owned the copyright.
Development of D-Trace did not stop, just like with ZFS new features are being added by the community (the different companies where these core developers ended up).
For example the core developers of D-trace ended up at Joyent.
Edited 2014-05-12 15:48 UTC
Oracle doesn’t interact with the Illumos community at all. They simply quietly shot the OpenSolaris project and left the corpse of its website to rot on the web for a few years. No public announcements, no explanation, nothing. They simply went silent. What little we have learned came by way of info from former employees and some leaked internal memo containing lies (from Oracle management to Oracle employees, so essentially Oracle lying to itself).
The founder of DTrace was correct in describing Oracle as a lawnmower. Oracle has no compassion, no empathy, no philosophy and no moral values. It’s a machine, designed to make as much money in any way they can, and if that means shitting in the pool of open-source and pissing off every contributor who’s code was being made proprietary and closed-source, then so be it.
For other people reading this, it’s this talk where he mentions Oracle is a lawnmower:
http://www.youtube.com/watch?v=-zRN7XLCRhc
You know, I thought they would be smart and take D-trace code from the community and incorporate it. But now that I think about it, they can’t because their bigger interest is to take everything and make it their own.
That would probably mean code without a contributor license is useless to them.
So now I think they are keeping their D-trace code CDDL instead of relicensing it as GPL to prevent others from taking their code. That is the only reason.
No they don’t. Oracle (at the level where strategic decisions are being made, not the engineer/individual level) doesn’t give a flying fuck about the ex-Sun community, as evidenced by their closed-sourcing of OpenSolaris and shuttering of the opensolaris.org website (including the tons of resources on it, which now results in thousands of broken links all over the web).
True, but they do own copyright for all of the code they distribute here. Clone the Linux DTrace git repo, you’ll find all of the copyright is Oracle’s. While DTrace was developed internally by Sun, there were some contributions from outside people. Unfortunately, as a result of Sun’s copyright assignment requirement policy, in order for anyone’s contributions to ship as part of Sun’s DTrace distribution, they had to assign copyright to Sun (now Oracle). To prevent a similar clusterfuck from ever occurring again, the Illumos community doesn’t do copyright assignment.
I know everyone would love to play the grade school game of gotcha, where we go by our sense of “fair play”. But that’s not how the world works.
The issue of binary kernel drivers being derivative works is not well decided by either law, convention, or opinion. Its clear that Oracle is circumventing the intentions of the kernel developers of specific calls. But I don’t think its clear at all that those intentions are laid out in any kind of license.
If kernel modules are derivative works, than no binary blob module can exist. If they are not derivative works, then these gpl_only function calls would have to be covered by a separate, non gpl but still gpl compatible license that doesn’t exist.
So the point is a moral one, and not an obvious legal one. And frankly, Oracle doesn’t really care.
Bill Shooter of Bul,
Wasn’t allowed to upvote you…
I don’t think it’s very clear either. Using an API/ABI should not create a derivative work that would need to be covered (IMHO). As you say, that might be the intention of EXPORT_SYMBOL_GPL but it’s not backed by the GPL license itself nor is it necessarily backed by copyright law. I personally am not too troubled by it, Dtrace is still open source, it’s just that GPL is incompatible with CDDL license. If this is bad, at least it is “less bad” than having binary blobs (aka nvidia drivers).
However it’s curious that Oracle is kind of playing both sides of the field on this issue. On the one hand, they want to be able to use GPL APIs in linux without regards to it’s copyright. On the other hand they want APIs to be copyrightable (with regards to their lawsuit against google), which would arguably place DTrace in scope of GPL infringement.
In general, I don’t get the impression that Oracle is a principled company, so they wouldn’t necessarily mind that they are hypocritical, as long as their actions are beneficial to themselves. I actually like oracle’s products, but one thing is pretty clear; They want to use the open source community for their own gains, but they don’t seem to believe in open source like Sun did. RIP.
Edited 2014-05-12 15:04 UTC
The FOSS community is mad at Oracle, because of the latest outcome, however they are not alone in this shady practice.
It is pretty common in the Fortune 500 world.
There are lots of companies that take open source code as free beer, while going to great lengths to avoid contributing anything back. Even when they have departments contributing to open source.
I once worked in one, where each third party package could only be used after its license was validated by the legal department.
Every single one. We had to produce endless spreadsheets will all the possible information that could “contaminate” the product.
Just another example which demonstrates that “strong-copyleft” is a silly idea created by a fundamentalist with an axe to grind (Richard Stallman).
Copyleft was born out of vengefulness to proprietary software companies. Here is how the thinking went: “If I take 3 files of proprietary code and combine them with public-domain code, the company that owns said 3 files owns the whole work. Free software should be able to do the same to code”.
And don’t get me started how a license that contains all kinds of terms and conditions to linking can call itself a “free software license” (and no, the FSF doesn’t hold a monopoly in defining “free software” or “freedom”). If said software imposes restrictions that go beyond itself, such as restrictions regarding linking with other software, it’s not really “free”.
Edited 2014-05-12 23:04 UTC
And what’s the reason of having an EXPORT_SYMBOL_GPL() when you could just have EXPORT_SYMBOL() ? Two-bit bitterness by the Linux kernel devs, that’s the reason. Let’s restrict the functionality of kernel modules that don’t use “our” license .
If Microsoft did something similar making some APIs of Windows available only to software following their license, everyone would scream “anticompetitive”.
But when the Linux devs do it, it’s somehow not their fault but Oracle’s, because Oracle is an evil corporation and Larry Ellison has a supervillain lair inside a volcano or something.
kurkosdr,
I agree, we do criticize MS for locking down APIs as well as other artificial restrictions. It’s just as bad when others do it, however there is one very important distinction that we mustn’t overlook to do a true apples to apples comparison: The GPL restrictions _merely_ affect our redistribution rights. Many people seem to forget this.
Let’s assume that GPL code does cover API usage transiently such that API consumers need to be GPL licensed as well. This only applies to redistribution rights. MS doesn’t allow us to redistribute Windows at all, much less in an altered form. So in terms of distribution rights, GPL>MS proprietary license.
The GPL imposes no restrictions on non-distribution use cases. You can use the software/APIs in whatever way you please. Microsoft and other proprietary software do place restrictions on how end users are allowed to use the software. I still have major gripes about being locked out of the windows kernel on my own machines!!! So, in terms of usage rights, GPL>proprietary.
I don’t automatically side with the GPL in all cases, but often it gets compared against mythical rights that Windows users never had to begin with. Will the GPL rub some developers the wrong way? Sure it does, but we should be using apples to apples comparisons.
I bet it’s just a matter of time before he has and the man is obviously a royal asshole (see “Government spying on citizens is good, Google using Java is the ultimate evil”).
Well, he does own a volcanic island, after all:
http://online.wsj.com/news/articles/SB10001424052702304898704577479…