Alan Cox to NVIDIA: You Can't Use DMA-BUF
DMA-BUF is a recent kernel feature that allows multiple GPUs to quickly copy data into each others' framebuffers. A use case would be the NVIDIA Optimus that pairs a fast GPU with an Intel integrated GPU, where the NVIDIA GPU writes into the Intel framebuffer when it is active. But, NVIDIA won't be able to use this infrastructure because it's GPL. Alan Cox replied on LKML to a request from one of their engineers to mark the API non-GPL: "NAK. This needs at the very least the approval of all rights holders for
the files concerned and all code exposed by this change. Also I'd note if you are trying to do this for the purpose of combining
it with proprietary code then you are still in my view as a (and the view
of many other) rights holder to the kernel likely to be in breach
of the GPL requirements for a derivative work. You may consider that
formal notification of my viewpoint. Your corporate legal team can
explain to you why the fact you are now aware of my view is important to
them."
The rest of the thread is worth a read (a guy from RedHat agrees that this code is GPL and cannot become non-GPL without relicensing from a major subset of graphics system contributors). This has a ripple effect: it means that all of the ARM SoC GPU drivers can't use it either, and it may prevent any proprietary drivers for the proposed DRI version 3.
Re-implement the concept with new code. Only way to block it is with a software patent, and aren't FOSS types against software patents?
The GPL is a bad thing.
Not because it's viral, because it's become much worse. A religion, and alas religions have their fanatics.
APIs GPL only? Seriously guys, WHAT THE FUCK?
And, as such, forbidden under copyright laws in, for example, the USA or EU.
The only way to avoid that would be to write your own kernel to ACT like (at an ABI level) the Linux Kernel.
If you do not like this, then please get in touch with your legislative branch and ask them to change the copyright laws.
Seriously. Freedom and GPL are two very, very different things. No matter how much you try to turn and twist it around, freedom never comes with a "but".
add.: captcha is "harmless" - oh, the irony.
Thus, continuing to push Linux into irrelevance. You whine that the Graphics chip maker need to provide better support for Linux, but it's the wrong kind of support.
I wan't free drivers for my gfx, dammit!
Also in a more intellectual note: this sets the line for all the android gfx drivers. They may have shoot the gnu in usermode but the can't shoot the gnu in the kernel...
and thats a good thing! I mean the WLAN problem has been nearly solved so gfx drivers is the last thing where linux is behind.
Well, I guess that's yet another way to make sure Linux stays niche in desktop use forever.
As AC since I'm sure this will garner much hate, but this is honest speculation with the intent of stoking real discussion:
1. NVIDIA and Intel want to use a new whiz-bang feature in the Linux kernel to bring faster and more feature-rich graphics to Linux. This is a good thing, a very good thing.
2. The current licensing in the kernel makes that impossible unless NVIDIA open sources its IP. Whether this is good is questionable because:
a. It means NVIDIA has to give up a competitive edge OR
b. NVIDIA has to write code and implement hardware in a manner that specifically prevents them from having a competitive edge.
3. NVIDIA's only other option is massive duplication of effort and a fork of the Linux kernel. This is a questionable premise.
So, given that NVIDIA's choice is to give up a competitive edge or to intentionally implement its feature set in an obstructionist manner, how is the GPL "good" in this case?
They woul dhave a bad time coming along anyway, since they can't be compatible with the secure boot (UEFI) way of working (workaround if one prefers), that is being adopted by major distributions: all Kernel level code, and X11 code, will have to be signed to work out of the box in a UEFI restricted boot environment. And any distro that would sign binary code coming from NVIDIA or whoever else would be mad.
It may be we get some months across a new "no working 3d drivers" dark ages on the Linux desktop, but one way or the other, the time for proprietary drivers is past.
-><- no
Am I missing something? Isn't this going to hurt Linux a lot more than it is going to hurt nVidia? Sure, it would be great if nVidia open-sourced their driver code, but it's pretty clear that this is not going to happen. What effect will this have other than to make Linux drivers for nVidia cards of inferior quality?
For Linux the religion, this is a triumph. For Linux the operating system, it is a major setback.
And under the definition of what constitudes a derived work for software in USA and many other locations, this would be a derived work of the GPL kernel.
As to "WHAT THE FUCK?", the fuck is copyright and derived works definition for software.
You may consider that formal notification of my viewpoint. Your corporate legal team can explain to you why the fact you are now aware of my view is important to them.
Translation: Go see your corp lawyers. FYI, you're about to get spanked.
So, binary modules are FINE, but now they're not??
Come on. Get real. Nvidia should have been shut the FUCK down a long time ago.
This is why even RMS allowed a linking exception for GCC. The point here is that the GPL is supposed to encourage sharing, not make GPL environments irrelevant. They may be pure, but so is HURD. And HURD has no users. So what's the point. Interesting that BSD/Apache/MIT is all the rage these days.
You better patent the technique now Alan before the system changes from first to discover to first to file. Nvidia could just patent it and then you wouldn't be able to use it either.
-- If you cast your bread on the water, sometimes it comes back angel food cake.
While Linus got lots of publicity for mouthing off at Nvidia over Optimus support, the truth is that X.org just recently released server 1.13 that has initial support for Optimus-like technologies and it would not have mattered one bit what license Nvidia used for its driver code.
The cold hard truth is: Nvidia isn't going to GPL its drivers and it couldn't do so even if it wanted to. Nvidia's developers *have* been trying to help out with adding code to the kernel for DMA-BUF that will be GPL and will help other pieces of hardware in addition to Nvidia hardware. There will probably have to be a compromise at some point on this even if the idealogical purists get their panties in a knot over it.
AntiFA: An abbreviation for Anti First Amendment.
Actually, he's telling them that they can use DMA-BUF in their video drivers. And so can anyone else, provided those drivers are released under GPL.
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
One of two things will happen.
1. This dude will get a check in the mail and he'll suddenly change his mind.
2. He'll mysteriously vanish.
Bullshit they can't use it! They can indeed use it. All they have to do is GPL their own code.
It's a two way street. You can't make it oneway simply because you're feeling selfish.
There, fixed it for you.
No it isn't. Copyright covers a specific expression of an idea. If I write my own code that does exactly what yours does, it does NOT violate your copyright in any way!
Oh that's just precious. NVidia with their god-cursed optimus that will NEVER support Linux has used GPL code?
Okay, let's push for a settlement on the matter. Require them to build and support Optimus drivers for X.org and for that other thing which is X compatible but not X... the name escapes me but I'm sure a thousand people here know what I'm talking about.
With this, can we FINALLY get NVidia to the table on the issue of opening their drivers and/or important interface data so WE can write the drivers?
Playing devil's Advocate here, as personally I agree with this (and don't let the proprietary nVidia driver anywhere near my system).
But just for kicks, how does the recent case of Oracle trying (and failing) to claim copyright on the Java APIs affect this.
If you cannot copyright an API, then you cannot apply a copyright license either.
What if nVidia challenged this with exactly the same arguments that Google used with Dalvik.
If I were to write fanfic for Harry Potter, this is considered a derived work, even though Rowling has only copyright on a specific expression of an idea.
Even though I may have written 80% or more of the words myself, my "Harry Potter and the Mixed Blood Prince" will never be allowed on sale.
If you want to include your code running in the kernel, you are making a derived work of that kernel and this is not allowed except by license of the copyright owners. Even if your additions are your own work entirely, the combination you want to produce is not.
for making it harder on companies that already support Linux for trying to get to feature parity with other platforms because of your stupid religion license. I'm sure many other companies are now re-examining their stand on future linux products and figuring out a way to move them either to the cloud or to the dust bin and just not bother with a pack of lunatics. Thanks guys it was mighty white of you to fuck with what we end users wanted because it hurt your feelings.
The problem is jackholes submitting mailing list posts to slashdot as if they're interesting news stores so all the armchair hackers on slashdot can harp on the issue like a herd of angry hobbits arguing about what to eat for breakfast.
You don't want to watch software being made just the same as you don't want to watch laws or sausages being made. If you really do want to get all the flame spam then be my guest and subscribe to the mailing list.
Correct me if I am wrong, but didn't NVidia have a small GPLed kernel module which communicates with the rest of the driver which is platform neutral (e.g. the same on Windows and Linux) and therefore not derivative work.
This is a bit of a gray area, but so far the Linux devs have not complained. So if NVidia exposes this functionality in their GPL kernel module in a platform-neutral way will that be ok?
Open source the bloody drivers. What's so difficult and/or damaging about that? Tradition says that drivers are closed and proprietary, but there's really no major threat these days of a hardware manufacturer gaining inside-knowledge from your driver source -- any realistic competitor on the ATI/NVIDIA level has probably already bought said inside knowledge from the Chinese firms responsible for actually manufacturing the hardware.
Open source your crap and be done with it. Problem addressed, and we can finally get decent graphics support in Linux.
Is that so many intelligent people have no idea how to sensibly quote email when replying....
No Nvidia, you cannot take open source code and mark it as your own to then force people to pay you for it.
What I'm wondering is, since he came out and said the little bit about using DMA-BUF with the proprietary code, and NVIDIA is starting to share specs with the nouveau devs, do you think NVIDIA might be able to help make nouveau work a bit better with optimus?
So therefore why are these purported patents a reason not to open the SOURCE CODE (not patents, though you should have no problem GPLing the patents: if you wanted to use it without opening your own driver, which they don't have to being the patent owner, then you have to GPL your stuff too, and you get to mooch of that stuff too)?
Patented algorithms remain patented algorithms even if you show the code that implements it.
NVIDIA stops developing the Linux driver.
the way to get business to play nice with open source is not to throw at them what amounts to religious arguments. show them that contributing back to OSS is good for their bottom line. that's the only argument that will win.
if a company forks, there comes a point where getting the goodies from the main branch is prohibitively difficult. if they continuously integrate with the OSS project this isn't a problem. you win this by not making the processes painful for them and continuing to provide good stuff that they want from the OSS project.
Isn't the Linux kernel and its API expressly exempted from the viral nature of the GPL? Per the COPYING file: “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".”
geek. lawyer.
Pretty obvious the linux crowd can't convince the lawyer-marketing team. They speak a different language. In their dictionary "cooperation" does not exist. They know competition, and that is all there is.
We don't need these competition suckers anyway. That paradigm is just blocking real progress.
And then he'd have an open operating system with propriatory drivers without bending over.
However, what he SEEMS to want is for SOMEONE ELSE who has written an open operating system to bend over and let a propriatory driver in. Pretty obviously HE doesn't want to bend over.
Not entirely sure why you and he want someone else to do it, though.
Android on ARM
That is all I think I need to say, in the long run hurting your performance there is a bad thing....
Settle down, techno-ignoramus. They asked to use an API marked as for GPL modules only under non-GPL terms and were denied. No GPL violation occurred. All that's going to happen is that nVidia will just have to leave out this feature in their Linux drivers until they get around to writing their own version, if ever. Sucks to be you.
User programs, not in-kernel drivers.
The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
They have many licensed components in their code. So they have to remove all that and rework it, and do it in such a fashion as to not get sued by those companies (who might claim that the nVidia programmers couldn't work on the new code since they'd seen the licensed code). This isn't just some more minor features such as S3 texture compression, but OpenGL itself. Go look it up, OpenGL isn't a free "do whatever you like" setup. There is licensing for it for companies like nVidia.
Even worse is that because the issue isn't just opening the source, but actually GPLing it, that makes it so much harder. Some of their licensed components are things the companies might be ok with source distribution. However nVidia doesn't have the right to relicense that code under the GPL. So even if they opened it, it wouldn't do any good as the GPL is what is required here.
So the argument of "just open the driver" is somewhat unrealistic. It isn't just that nVidia likes to have a competitive edge, though they surely do, but that it would be a major issue and a lot more work to try and do so, if it were even possible.
Again, take the OpenGL issue since it is a pretty fundamental one. nVidia licenses the code and has the latest OpenGL 4.3 implemented on cards that support it. Ok so let's say they decide to grab the Mesa code for an OSS branch. It's MIT license which is GPL compatible so good to go right? Well, not really. Mesa is OpenGL 3.1, 3 years out of date, and it only recently got that. So they can either deal without a bunch of features on all platforms, have two different drivers one full featured on Windows and such, one with less features, or they can invest a ton of work to try and make their own up to date OSS OpenGL implementation and hope they aren't sued.
None of those sound like very good uses of resources.
The situation now turned to be that hardware developers depend on Linux in the same way as Linux depend on hardware.
Example: home broadband routers. The whole industry of them is build on top of Linux. And it's a good idea to make hardware developers contribute to Linux instead of just taking and 'blobbing'. And many 'SoC for routers' developers starting to contribute.
Same thing with video drivers. Linux as a desktop won't loose a thing if Nvidia stops making its blobs. People who are already using Linux on desktop will be able to adjust. New users will choose different hardware vendor - and there is some choice there!
On the other hand - Nvidia depends on Linux. It depends on Linux on embedded market and on GPGPU market. So it is more financially important for Nvidia to stay with Linux then for Linux to stay with Nvidia. And I see no reason why community and Linux authors should give Nvidia (or any other company) any pampering.
On the other hand I see no good reason why Nvidia wouldn't open source their drivers.
Many people mention 'patents', but patents are supposed to be 'open' in a sense that everybody can already go and read filed patents. So opening source won't change anything.
Some people mention that Nvidia licences some technologies and doesn't have a permission from licensing company. That sounds weird too - if that technology is so important Nvidia can buy the company altogether. How many big companies are there on graphic market that can licence technologies? How many of them are interested in Linux? I'm pretty sure they could find a solution to licensing each other's stuff in Linux drivers.
So the only reason I see is that Nvidia is probably uses technologies it doesn't have licences for. But that'd... hmm... illegal, dare I say.
So obviously Alan Cox is much more of an expert than I am, but I've installed the binary nVidia blob on many, many machines, so I'm aware that there is a "shim" interface layer that gets built at install-time to bridge between the closed-source nVidia stuff and the actual kernel. This shim is visible, obviously you can *read* it if you unpack nVidia's installer, and it uses kernel header files at build-time.
It seems that this has to mean that there is already a way to get closed-source binary blobs to talk to the kernel, and that nVidia already knows how to do this.
Can someone explain why this is different? Why can't the DMA-BUF code be part of the shim, or part of a different shim? It's technically more complex, but I can't believe that nVidia of all people are slowed down by some technical complexity.
2*3*3*3*3*11*251
I've seen many messages from Alan Cox over the years stating that his opinion (and yes, that's all it is) is that just about every Linux kernel module is a derivative of his work on the kernel, and that any that are not released under the GPL (or another compatible license) infringe on his copyright. However, I've yet to see him actually do something about it (such as sue somebody). He's complained about the nVidia module for years, and he hasn't done one thing about it other than post messages.
If he thinks they are infringing, notifies them, and they don't stop, then he needs to actually follow through on his implied threats. However, he just continues to blow hot air as far as I can see. I can't imagine anybody actually pays any attention to his legal statements.
Or start writing for BSD. We're more than happy to have them.
I have a suggestion for nVidia. The OpenGL API with forward-compatible 3.3 core context should be little more than a wrapper for pushing data as-is onto the card. Once the legacy stuff is removed, the only remaining item of any complexity is the glsl compiler. So, extract the compiler into a standalone executable and call it from the driver to compile shaders. Implement hash-content caching, and this will be even faster than what you've got now. If all the legacy APIs are ditched and the compiler can be easily extracted, then this should not be a lot of work.
This way not only do we get a working modern driver, but since open source drivers don't support 3.3, all GPL OpenGL code will have to be rewritten to the newer standard. Thus, all you GPL fanatics will have a taste of your own foul medicine.
Please don't echo the Microsoft buffoonery of calling the GPL "viral".
If it's viral it's a virus you choose to contract.
Also, from what I understand in the GPL, that notice isn't an excemption added to the GPL, it is a notice that simply clarifies what is already in there.
And NVidia are deliberately not accepting a license to force others to comply.
(NOTE: the use of this symbol and the execution in the kernel of the driver IS a derived works. Seriously. This may be daft to you, but copyright law still makes it so. Four notes can make your entire song of 36 tracks a derived work and infringing for those four notes. Doesn't sound "right" either, does it. But that's the law. Get it changed if you don't like it.
Just a few months ago everybody celebrated when Oracle lost miserably in court. Oracle tried to argue that Java API is copyrighted and Google have to pay insane amount of money for reimplementing Java-like language. It didn't work out. Also, it is not US only thing, there was a similar ruling in EU court that was also taken into consideration.
Now we have a linux developer (whom I respect deeply), who claims that parts of the linux kernel API is copyrighted and it could only be used under GPL.
I'm sorry but you can't have it both ways.
But this is not the worst thing in the situation. Let's assume that using the DMA-BUF by NVidia is indeed covered by GPL. The only thing that would be forbidden by GPL is the redistribution of the compiled module. All the users would be forced to compile one on their own.
And here comes the biggest absurd of all. There is a system in place to prevent that. It checks if kernel entry points are GPL and refuses to link with non-GPL code. This system is only causing problems to the users, nothing else.
Any distribution or company would have somebody smart enough to find the defines in the code and patch them (to allow compilation on the user system in accordance to GPL).
All this system does is violate the spirit of GPL.
Ultimately all it will do is lead to nVidia not supporting Optimus on Linux. People need to remember that their "give a shit" index for Linux is way less than Windows to begin with. Then understand that most of their market in Linux is high end stuff like visualization workstations, CUDA compute systems, and so on. Linux laptops are not a big thing. It just is not a large enough market for them to care all that much.
So what that means is that they might well support it, if they can do so with a reasonably small amount of resources. However if it ends up being a real problem, they'll probably just write it off and not bother.
The ideological crap with regards to the GPL pisses me off. I think it is wonderful that LInux itself is GPL, however they shouldn't be hostile to non-GPL software. To me it would be as stupid as Windows refusing to allow an open source driver or program to run. There is no reason Linux shouldn't have a good setup to work with binary only drivers.
Developers need to understand that to most people, computers are tools and they are pragmatic about it. They want the tool that does the job well. So if you go and let ideology get in the way of usability, they'll just ignore you and look elsewhere.
Linux developers are not trying to "force" anybody to do anything. Nvidia is trying to force the linux community to accept their unacceptable "super secret" blob into the kernel agains the linux community's development and participatation standards.
If I showed up on your doorstep and said "you have to let me use your bathroom and your kitchen, but I am not going to wash my hands or put on pants" you would not be "forcing" me to (anything) by saying that my intended pantless, unwashed use of your facilities was unacceptable.
The Linux community is telling nvidia "we use soap and pants here, if you won't do likewise, we don't feel like accomodating you."
Nvidia _knows_ they want in, otherwise they wouldent be trying to get in, Linux Don't Care if they come or not, but if they come they need pants...
Requiring someone to meet minimum standards for participation is not "forcing them" to do anything,
No pants, no access is not an unreasonable position.
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
The preceeding mail from Jan-2012 mentions the reason why they need to have the drivers that interact with the interface gpl-ed:
'A bug on a driver using such low-level interface could cause side effects
at the wrong places. In order to handle such bugs, the developers and the
maintainers of both subsystems need to see the source code of the entire
pipeline, with is not possible if is there any non-GPL'd driver.
NAK
Mauro.'
You are a fucking moron; at least bing Alan Cox. I say bing, because you're probably to stupid to google, check his Wikipedia entry.
Linux developers don't care, nor shoud they, about the decision of one company to play nice or not.
Linux kernel developers have been letting Nvidia get away with the whole "binary blob" thing for a long time. Nvidia has taken no real steps to come into conformance with the GPL requirements. They keep getting a pass for their bad citizenship.
Eventually bad actors (Nvidia) either have to shape up, or they need to ship out.
At the moment Nvidia is freeloading on the linux kernel. They are putting themselves in there for free. Now they are asking to break even more rules, or more accurately, to have the rules changed in the name of their personal interests. Nvidia has fouled their own bed, but now they are whining that they don't want to have to lie in the filth of their own making. They are a full grown company. They know what they _ought_ to be doing. They want a pass to have things their own way regardless.
Sometimes you have to tell a spoilt child that they don't get the lolly this time.
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
Binary drivers suck: it means you need the vendor to recompile them for each kernel version. This leads to extreme difficulties with commercial use of Linux: you have pressure to use a particular version of the kernel for one reason, but you can't because the binary driver was built for a different version. You may have to try to get the vendor to recompile their driver for you, but then there is a schedule dependency. Why have the vendor in your release loop? GPL APIs also suck: Frequently custom hardware comes with proprietary non-GPL drivers, but which do come with source (usually terms are "free to use and re-distribute but only with my custom hardware"). I've seen where a kernel API changed from free-access to GPL restricted.. but now what? You are free to change the custom driver sure, but you can not use it because you are not free to change the vendor's license. Ugh. IMHO, both the binary drivers and the GPL APIs need to go.
The Linux promise: It will work someday, when the entire world arrives at a place of utopian freedom.
The Linux apology: We're sorry that it doesn't work now; just wait for someday.
STOP . AMERICA . NOW
I too have had this problem with contemplating licensing software or documents I create. GPL is great in concept, but why is _IT_ tainting a third party developed software? Nvidia in this case isn't the problem it is the stupid licensing terms of the kernel that are preventing linking to libraries and whatnot required to access the functionality. This concept of GPL tainting other licenses is the problem -- do we have have to bring out the book to write a file to the disk, or everytime we want to create a simple module for personal use go through the license dance? Nvidia drivers are proprietary because nothing would stop their competitors from reverse engineering their hardware via it's interfaces and this 'advantage' is what keeps them in business -- the other factor being that several of the technologies they use themselves are licensed from other companies and they do not have permission to distribute. The weakness here is that Linux is probably not using the GPL the way GCC does (aka you have a library exclusion... you can link your programs with the stdlib and things are fine...) Nvidia won't cower to linux it will just start ignoring it, so how 'bout we put out the olive branch now because having 3D acceleration is pretty nice, and AMD's drivers are always shit? Isn't anyone just happy they even have good drivers from Nvidia on linux period? By this definition no non-GPL software can use these kernel features so wouldn't that make the concept actually non-free... as in.. you no longer have a choice? I understand the problem GPL attempts to address, but it should not be venturing in this realm.
If you think that calling an internal function to the kernel is not creating a derived work, then you are not a copyright attorney who has studied computer science at post grad level ENDING WITH UNDERSTANDING BOTH COPYRIGHT AND SOFTWARE.
That's OK. There are professors of biology who insist that creation is true too.
And note: the fact of no consideration has been made of softare derived works and GPL makes no difference to the law. Until such consideration REFUTES the claim, the claim of this being a derived work remains law.
Like I said, you may have passed the course, but you didn't understand what you were learning, just how to pass the tests.
NOTE: IF NVidia want to use this API but do NOT want to GPL their code, they are free to implement the code they would be calling in the Linux Kernel. This, however, would have to go in a NON-GPL license kernel. I.e. they can write their own kernel. With blackjack and hookers if needs be, but they can't use the Linux kernel code.
0) People chose GPL v2 for the kernel for very good reasons and the sheer success of it from phones to all Top 500 clusters is proof ..nuf said on that.
1) You can use LGPL if you want to release code that is GPL but allow people to link with proprietary blob but without forbidding users to see and modify the LGPL code.
2) Linux kernel is GPL V2.0 licensed not LGPL...so if you want to bind to it and release the binary then you have to release the code under GPL V2 of your stuff that is calling the kernel stuff...you don't need to contact any body if you abide by this
3) You can request all the copyright holders in the kernel code to release that bit of the code to you under another license if you do not like GPL.
Their Optimus support for Linux requires they be able to use the same buffer sharing mechanism as everybody else (read: DMA-BUF), and the reason they want to be able to use this API is because they are currently developing Optimus support for their Linux drivers.
Furthermore, they are looking into supporting Wayland, but they wanted a 1.0 release first to prove that it wasn't just some fad before committing engineering resources to supporting it.
And no, if we don't let them use this API, they won't support Optimus on Linux, and Linux will be far worse off on laptops and embedded devices because of it.
Meh, whatever. The linux graphics system already does full motion HD video and medical imaging. And Intel's totally open stuff gets better all the time; as long as they have Keith Packard on their side, Intel will probably beat nVidia's performance in the long run anyway. Intel has already outlasted dozens of video card vendors, eh?
Not that super linux graphics performance really matters at all to the average employed adult. We're not that interested in fast-twitch games designed for people under 18, we're more interested in creating value for our families and communities.
Thanks! Live long and prosper!
What is the reason for this distinction?
That word "fork", it doesn't mean what you think it means...
This fork and forget behavior is allowed for BSD licensed bits, but not the GPL bits because the GPL doesn't let someone just make off with the goods like the BSD license does. So no, the Android peopld "can't fork and forget" the GPL.
The GPL _requires_ fair play. Thats why it is "better" in this case than BSD, because even after a fork you still have to play by the rules and the rules here are "you want DMA-BUF, you need to be GPL compliant." You have failed "forking 101". Your assertion is wrong.
"they have done it before"? Not wiht GPL ware they havn't, at least not where it involved the GPL'd bits like those at issue here.
NVidia has bad-citizen'd themselves into a corner here. Too bad. So sad. Bye bye.
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
I've never really understood so much of the background on this. I really don't. Nvidia are probably *the only* fucking company that really went the whole way and really release the right 'kind of ' full drivers for Linux. Yes, they are closed source binary. Yes, they are proprietry. Yes, they don't comply with religious level political idealogy. But they contribute in a less than optimal way to your platform.
And your platform, at least in the short and medium term would be vastly shittier without their efforts.
So, next you publicly go viral dropping a bucket of shit over them. Their response has been moderatly to try to come in and talk, make changes and be more of a interactive unit with you. I bet that the devs inside the company are probably very pro making progress but face real world limits of legal and other things that they themselves are not empowered to fundamentally change.
I'm not surprised at Alan's answer - but here is my raw take on this. What would have been the better way forward was to take their request and frame it globally to that group of people and put Nvidia's request forward. I appreciate that many would likely answer no, and I appreciate this would perhaps not be what Nvidia wanted, but it would have opened a bridge for interaction and perhaps longer term bridge building. Instead, they get a fuck you, fuck your company, and do this our way or the highway.; What were Nvidia trying to do? Provide an answer to the problem they had a bucket of shit thrown over them in public about. ie - trying to solve a problem they were abused about.
The benefit of doing this is fixing something in linux - albeit with a closed driver that people asked for. Linux users asked for this. Linux Kernal people bitched about it. Linux coders refusing to help provide this moves this off being a purely Nvidia are a bunch of fucks to shooting your own platform in both feet.
I don't fucking get it. These bits of code I presume are already fully in Linux. Sat there in daylight .Refusing to let Nvidia use them to help you do something_you_asked for is demented. Or rather - let me reframe that - Its really lame to not engage in a process to find a way forward instead of ramming the ideology down the throat of a vendor who is a closed source bunch - but have come to try and engage with you on a problem.
Let me put it more plainly. Linux needs Nvidia more than Nvidia needs linux - but together you make something that is symbiotic. You think your mythical Ubuintu tablets are going to surface on the very proprietry ARM platform by not getting down and working with people like Nvidia on problems. Linux won't run 'well' on their platform without their help. You want to be there? Take your heads out of your asses.
As much as Linux gets hobbled by closed source folks not playing the game, its just as hobbled by killing off their interactions and opportunities by being too hard headed about the religio-political idealogy.
And a fucking note to the Intel GPU Linux fanboys. The drivers have almost always been shit. And the hardware is low end garbage. I'll take a Linux box with Nvidia GPU *EVERY fucking time over intel gfx. Every time.
We`re all equal
that the API goes the way of the Dodo bird. The companies involved will either write their own code/APIs to bypass the GPL'd API, or they will simply ignore the API and not support it. Either way, in the end, money talks and the people who are focused on making money will win, and the folks focused on trying to fight a religious war about software will lose.
Who's Alan Cox?
systemd is Roko's Basilisk.
A company wants to try to make their product work better on your OS, and you tell them to fuck off? Why am I not surprised?
Enjoy your ideological win. Likewise, enjoy your permanent relegation to second class status in the desktop OS world. Nvidia certainly won't cry themselves to sleep if their drivers don't work as well under Linux as they'd like. It's not as if losing the few thousand video card sales (integrated and discrete) that are made to desktop Linux users would affect their bottom line much.
Well, JUST IN THE USA, that would be $150,000 (times three for wilful infringement) for copyright infringement FOR EACH COPY MADE.
Alan could download 10,000 copies of the driver from the NVidia site and buy himself an Island!
What is the GPL license holders dual-license their work and get a license fee from nVidia? There should be nothing wrong with that.
You have no idea on what a syscall is, don't you?
I swear, GPL fanatics. One of the epic big fuck-ton idiocies: calling a OpenGL implementation just a "driver". How many fucking drivers out there have a compiler, or a scheduler, etc?
Additionally, most of the NVIDIA's (and for that matter AMD's) closed source GL implementation is the same code as found for MS-Windows. When they go over to make it work on Linux, Linux is a horror. X11 sucks people, the kernel does (in my opinion) way too much when it comes to graphics.
Sighs.
So this is what will happen:
1) A number of Linux kernel developers will continue their asinine attitude.
2) NVIDIA will continue to support Linux but reinventing the wheel (and possibly) better of various kernel APIs/features. It's okay their driver replaces a great deal of the X11 implementation anyways, because DRI/DRM sucks.
My bet is that this is about getting Optimus support working in an intelligent way for Linux (Bumblebee is junk people, it is a horror hack of junk).
That all these drivers sit as a part of the kernel source code should make people shit their pants: what the fuck are the drivers for soooooo many devices doing in the source code for the _kernel_? *oh* because too many of the kernel interfaces are changing too often. I appreciate the need for evolution, but drivers in the kernel source code smells bad. On a related note if people say for maintenance, that is bullshit me thinks. That ultra-older hardware, likely the drivers are borderline working correctly... for the past, like 5 years, the sidewinder joystick port driver can only detect one gamepad, if you daisy chain several it fails to detect correctly.
In an ideal world, more of the kernel interfaces (not just those to user land) would be stable.... or more ideally, more interfaces are exported to user land avoiding that a driver needs to sit in side kernel space... USB HID I am looking at you, most of that code should NOT be in kernel!
I should probably post this anonymously, to avoid all the bad karma... ...but fuck it. Getting bad karma for this would just make me feel good as I'd know I've forced some people to think about the issue.
I agree entirely with what you've said. In fact, I wrote my own open source license, The Antiviral License. The section "Lack of Silly Distinctions" is especially relevant to this discussion.
I'd thought about writing such a license for quite some time, but finally decided to do it after needing a function to calculate MD5 hashes for a Minecraft classic server I was working on. I didn't specifically need a non-GPL function, as I had no intention of distributing the code, but I like to leave my options open. ...but every freely available implementation I could find was GPL.
So I set about writing my own from the reference documentation, which I assumed would be easy since I'd done the same for SHA1 and following the reference documentation was easy. I found that the documentation for MD5 provided example code, but its ambiguous licensing terms rendered it useless. (I forget exactly what, but it's something stupid like mixing statements of "public domain" and "all rights reserved.") The documentation also left a lot to be desired when it comes to endian issues. It explicitly says to use big endian for this and little endian for that, then says nothing at all about a couple of other things, and given the nature of the algorithm it isn't something you can just figure out by seeing where the math goes wrong. If it doesn't give you the right answer, the answer you do get gives you no clue whatsoever about where you went wrong.
So after trying random combinations of endianness for a while, I give up and decide to consult the reference implementation to figure out the correct endianness. However, the code is blatantly unreadable, and after trying to understand it for an hour, I'm no closer to figuring out the answer to my simple question about the endianness of one part of the process.
So I look at the code for the GPL md5sum program. Interestingly, it strongly resembles the reference implementation's code, but claims to be a copy of someone else's implementation which is public domain. So I find that person's code, and he freely admits to copying the code from the reference implementation, claiming that doing so is OK since it's public domain. (...and it might be, but it might not be. Like I said, the licensing terms are ambiguous.)
Indeed, every implementation of the hash algorithm I could find appeared to be a derivative of the code in the documentation. ...and, like I said, it's pretty much all picked up the GPL licensing terms for some fucking reason, turning it into code that I can't use. Eventually I simply had to resort to making random changes until finally the code started spitting out the correct answers. The correct endianness was obvious in retrospect, which probably explains why it wasn't documented.
So, while I was planning to release my code as public domain, as I initially thought that attaching any license to such simple code was dumb, I eventually realized the GPL people are being every bit as dumb every day, and it's time people started doing something about it. So I decided to use the license for anything I release. Insisting that people not use my small little functions when they choose to spread the GPL virus is certainly no worse than insisting that I use the GPL just because I use one small little function in what is otherwise mostly my own work.
The MD5 code is available here if anyone cares. Also some SHA1 code and some FFT code there. IIRC, FFT code is another area where everything is infected with the GPL, which is unfortunate as the algorithm itself, while not anything particularly difficult, seems to lack
Just like herpes. You know, since you pretty much cant contract herpes without doing something that results in contact with an infected person.
I think thats a perfect analogy, GPL is just like Herpes. You don't want it, and once you get it, it doesnt' really stop you from doing anything, but it makes ti a lot more obnoxious to do certain things.
Sounds like a dead on match. Good show.
GPL is just like Herpes.
What NVidia needs is to team up with Intel, ARM, AMD, Red Hat and other sane entities developing Linux and create one big binary stable uberwrapper around all GPL code, essentially a binary driver API. And then GPL freaks (non-corporate developers constitute less than 25% of all Linux developers these days) can have their GPL-only APIs just for themselves...
I guess that's what will happen in the event Linus steps down as a maintainer. Some corporate entity will take over this role and will hopefully make Linux binary stable. GNU zealots will retreat to HURD and disappear from the radars.
Coding etudes
The current Nvidia binary blob resides in a bit of a grey area. They have a binary blob that was originally written without looking at the linux specs, and is not a derivative work of the kernel.
They then have an open-source "shim" that is clearly a derivative work of the kernel that allows the binary blob (which has its own API) to interface with the kernel (which has a different API).
The GPL says that any derivative work must be released under the GPL. Normally (as a logic shortcut) this means anything linked against the kernel, however in this case there is a real argument that the binary blob is NOT in fact a derivative work.
However, now we have a new funky feature being added to the kernel. If the binary blob is updated to make use of it, then there is a reasonable argument that it now actually IS a derivative work of the kernel and thus should be released under the GPL.
The GPU is no anymore a peripheral device, it's more and more integrated on the same die as the CPU. Intel, AMD or ARM have plans to lowering the difference even more on how GPU and CPU will exchange data and will view the rest of the system. Basically, the CPU cores and GPU cores will share the same location into the architecture. This move is not so different from the integration of the FPU core into the CPU that have existed back to the 80486/68040 days. About ten years before the FPU integration, the FPU chips was a lucrative business: this part was so expensive that it was an option that only a few can buy. Not anymore, FPU less CPU are now only found in the lower part of the ARM embedded market. There is no x86_64 chip without FPU by the design of the instruction set. GPU is the next core to get the same integration.
What this means ?
First, since Nvidia don't own a licence to build x86_64 chip, the game is actually already over for them. There known that since the failed merge talk with AMD and explain why there focus on the high end and ARM chips since this time. This also explain why Linus Torvalds "fuck you Nvidia" response was focused on the Tegra ARM SoC despite the fact that the original question was about a x86_64 laptop.
Secondly, Intel and AMD known that sooner or later, the GPU core will be so integrated with the CPU core that there cannot be managed anymore by only a driver to do in a efficient way there new roles aside of the graphic display. The trigger point will probably be when the GPU will passe on the CPU side of the MMU (or something that look like this). At this stage the paging management for the GPU will be almost impracticable from within a driver to cooperate efficiently with the core operating system, not counting the brainfuck crap in case there are not developed by closely related peoples. This don't automatically say that GPU driver will cease to exist for some graphic aspect, but the GPUCPU part will end up into the kernel for the most critical aspects. It's easy to see why on Linux, access to the GPU from a proprietary driver is really not an option for the future (even if the current issue is only about DMA sharing data between devices).
And the implementation is the Linux Kernel CODE. Which is GPLd and, since linking programs creates a derived work, this means your desire to make a linux kernel driver creates a derived work which must be licensed appropriately.
NVidia are free to write their own kernel that uses this API.
They can't link to the Linux one.
If we're calling licences such as the GPL "viral" then we should refer to proprietary closed-source licences as "dead-end".
"Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
it's a virus you choose to contract.
Like a STD for people who refuse to use condoms? That's appealing.
And while GPL may not be viral, it is my-way-or-the-highway. Now, if that were coming out of some 800lb gorilla, it might be effective. But since the community around the GPL has about as much pull as the sickly kid on the playground who always gets picked last, it just means everybody else picks the highway.
You may argue that the GPL is the big dog in FOSS, but looking around at the various large FOSS projects out there, Linux is the only major GPL'ed software. Most others are their own license that tends to be a bit more permissive, or they're LGPL (which is, surprise, more permissive). The only advantage GPL has is in volume, i.e. the number of projects irrespective of size or even success. This just tells me GPL sounds great on paper, but maybe not terribly practical.
"If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
Now nVIDIA has to implement their own private API. Yay, what a fantastic win for the Linux community.
Well, it's a crazy made-up IP law hack, so it's not going to have a perfect real-world analogy. A virus as an analogy is as good and as bad as any. The point is that it will infect your code, and it can be difficult to avoid. That serves MS marketing quite well. On the other hand, they would probably not use the analogy of their own software being like a blood-sucking parasite or a tax - yet both are pretty good analogies.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
Of *course* a discrete card is going to spank an integrated one. However you're talking about a $250 card vs an entire laptop costing $500.
And unless you're doing CAD or gaming, the integrated stuff is just fine. My 2-year-old i3 with integrated graphics handles basic effects and does hardware-accelerated h.264. Realistically, that's 99% of what it spends its time doing.
See: http://lwn.net/Articles/154602/ By using EXPORT_SYMBOL_GPL the kernel's linker simply prevents any kernel module NOT marked as GPL, which is using EXPORT_SYMBOL_GPL'ed functions, from loading. EXPORT_SYMBOL is not magically allowing non-GPL code, it just means that people can play ignorant and pretend they didn't know better. IANAL
And while GPL may not be viral, it is my-way-or-the-highway.
Show me a license that's not "my way or the highway". In fact, show me any legal contract that's "my way or... you know, do whatever you want."
.
http://en.wikipedia.org/wiki/Tragedy_of_the_commons
Nothing more than a line in the sand.
What if I produce GPL code that exposes effectively the same API as the kernel, and the implementation of that API directly calls the kernel. Is that legal?
What if I was to then release the same code (or just the header files the define the new API) under a different license?
Can't Nvidia just write a LGPL shim that sits between the DMA-BUF code and their own proprietary code? Am I missing something here?
Yes, normal system calls. nVidia wants to link against internal kernel functions.
So you've never heard of GCC, or the GNU userland utilities that most Linuxes and BSDs (including OS X) use, or the Busybox userland utilities that all the rest of the (embedded, etc.) Linuxes use? All that's GPL, and (IMHO) more important than the Linux kernel (even though I'm not one of those folks who cares about calling it "GNU/Linux").
"[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz
If the the sources were opened, too many hardware bugs would be revealed to end users. You would see many
"if (THE_CHIP_VERSION = 599955 && THE_PRODUCT_SN = 2344447) do_another_workaround();". How dare they let you know you bought a trash.
I'm so glad for "free software".
I'll stick with BSD thanks.
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
Viral is an excellent descriptor, but not in the pejorative as they'd probably hoped. Switching completely over to Linux from Windows was like gene therapy to me, curing my life of the unwanted proprietary software and licenses that I'd been plagued with for years.
Their choice of wording is easily explained, of course, because from the perspectives of under-educated hypochondriacs and Windows users, viruses can only be malignant things to be feared, but never vehicles weilded by better minds for greater good.
I am really not understanding this. We use Win32API in Wine. The reason being that it is just an API and not Windows code. But the kernel API is different? Is this some sort of extension of the "statically link" clause in the GPL?
You have a nice playground called linux, and you ask everyone who comes to play in it to follow your rules, except for parts around the edges where you let other people make their own rules. One of the playground bullies comes along and says you should make the shiniest most fun part of your playground where you ask everyone to follow your rules into an "anyone else can make the rules" area. This bully says you have to do it because he needs to make more friends, and all the people he wants to be friends with play in the shiny part of your playground. You tell the bully that no, he has to make friends by being nice, not by making other people follow his rules, and he calls you a meanie doodoo head and says it's your fault he doesn't have any friends.
Face it, the only reason for DMA-BUF at all is to use multiple GPUs, some better than others. It will typically be an Optimus laptop with Intel + Nvidia, or maybe AMD APU + AMD GPU. But without proprietary drivers the bigger GPU is entirely pointless! Say you have an Intel IGP plus a nvidia GPU, if you use nouveau on the nvidia GPU then you lose so much performance and battery life it's useless and you're better off disabling it and staying on Intel. Unless you like wasting your money for a minor improvment with terrible inefficiency.
So, linux is really jumping the shark, I guess what's left is distros should switch to BSD just like debian/kFreebSD, starting with Mint. Unless this terrible situation is resolved.
The Oracle case was about whether Google took Oracle copyrighted code to reimplement the API/Runtime of Java. In this case, Alan Cox is trying to dictate the license that a client of the API uses. That is a major overreach on his part. Unless if the API requires specific classes to be passed/referenced as value types which are only described inside of GPL'ed code and not describe in any documentation external to that source, he cannot say squat about licensing of the client code. I don't care if he thinks that the GPL gives him that right because the GPL does not overrule the copyright of any author especially anyone dynamically linking to a library. Effectively, what this means is that the majority of LGPL'ed code is really no different than the equivalent GPL'ed code because the GPL cannot dictate licenses of dynamically linked code. They can insist that their library is not distributed with the executable but that is as far as it goes. The GPL needs to be challenged in court on these grounds. I believe the linking clauses are an overreach and violate copyright of others.
If the API only makes use of generic value types then they can be used by anyone without having to reference any GPL'ed code. A long only the method signatures (the API) are referenced in your code and the API does not require any undocumented class objects as parameters then Mr Cox can whine and complain all he likes but he does not have a legal leg to stand on. APIs, whether being reimplemented or accessed by clients cannot be copyright.
Mr. Cox would have to use a "magic" class type known only to his GPL'ed code to lock down the API but that could be circumvented potentially with a clean room reverse engineering project to determine the structure of that class and reimplement it. Alternatively, he could have a generic initialization method that only actually unlocks the API if you override the abstract class with a specific implementation known only to the GPL'ed code.
Sorry Alan, but if you really don't want to share then don't release your code in the first place.
Jesus was a compassionate social conservative who called individuals to sin no more.
It requires crossing the user/kernel boundary multiple times, which is an expensive proposition.
One of the reasons Apples drivers and Windows drivers tend to be faster than Linux drivers is they live in kernel space; in both cases, it's mostly so they have an API to push pages out when they've done a calculations which they end up not using.
Copying to kernel space in the graphics pipeline, followed by copying back to user space to do the compositing, and the copying back down to kernel space to get it in the frame buffer so it can be displayed is a lot more expensive than it actually needs to be.
Forcing the driver out into user space is the "punishment" that's exacted because they don't GPL their driver, which as other people have correctly noted, they really can't because of cross-licensing agreements, patent violations which are hidden in code and protected by EULA from reverse engineering to discover the violations, and licensing for things like H.264 and the rest of the Sorensen CODECs.
Worried about gifts? There is a solution of your worries. Visit www.rightflorist.in/Gurgaon/Gurgaon_florist.asp to check out the wonderful floral special bouquets along with tasty delights like cakes, sweets and chocolates.
It's bullshit like that which makes the Linux biotope unsuitable for the desktop and other fields, and shows why the GPL is destructive, not useful for anything interesting, and generally not a well thought-of concept.
It shows why extremism is destructive in any field.
You may all bitch and moan about "proprietary closed shit", but at the end of the day, that very shit provides viable and accessible interfaces for people to do interesting stuff with.
Fight hunger. Filet a politician and send him to a 3rd world country of your choice.
as Nvidia already does.
I guess Nvidia already have a way to do what dma-buf does (maybe in the Windows driver, doesn't matter).
So they take their proprietary interface and make it dual licensed (GPL and their proprietary license).
Then they make a GPL converter from their interface to dma-buf.
In this way they have no derived code from dma-buf that are propreritary, and can use the functionality.
Think it is far fetched? This is what they _already_ do with their Linux drivers. They have a GPL/propreritary layer that are compiled every time you install a new driver.
This again points to the central lie of the GPL...
All that ranting and raving about good "free" code versus evil "closed" or "proprietary" code is just propaganda; it's just a lie. Advocates of the GPL are always saying that they are protecting the freedom and rights of users... except of course for the obvious fact that Nvidia are also a user (even if they only use it one one system while developing their drivers, that makes them a user) and the GPL is being used as a club against them to try to get them to violate legally binding arrangements they have with other IP holders. This is also an instance of the GPL being used to block the "freedom" of all users of Nvidia hardware who will not have access to certain features and/or performance... simply because some zealots were demanding that everybody else bend to their will. Do they have that legal right? Of course... they may use and enforce whatever license they choose to... but in doing so they advertise their dishonesty to the world when they dare to open their mouths to utter the words "free" and/or "freedom". There is absolutely no legitimate reason to restrict the use of any API calls or any kernel functions in any way. When something like this occurs, it's proof that the GPL has nothing to do with "freedom" and everything to do with attacking the concept of IP.
GPL = fake freedom. The license is regularly used to force others to do things under the banner of "freedom"
BSD = actual freedom. users can do what they like...even run code that other people do not like.
This GPL stuff is getting tiresome... dictators always twist words and often like to play with the words "freedom" and "free" and while I am not invoking Godwin's law here (I specifically deny any equivalence in intent, effect, level of evil, etc) I cite here a very infamous example of such a twist only to illustrate how badly these words can indeed be twisted: Surely we can all remember the sign "Arbeit mach frei"?
In summary: Just because some jerk waves the word "free" around, it does not mean he intends for you to be free at all... it matters not how big the word is written, where the word is written, what promises are made relative to the word, etc. True freedom is true freedom... NOT freedom to be dictated to and to operate only within defined boundaries. GPL advocates often claim to be protecting us all from various restrictions tied to IP... but then they turn around and use those very same IP laws (copyright and patent law) to enforce their own tyranny over users. I thought we were supposed to all be opposed to copyright laws and patent trolls and other people who claim to own "intellectual property" and who use that "ownership" to tell others what they can and cannot do...
One word vote with your pocket , buy AMD and ATI , avoid the NVidia scammers until they publish full specs and gpl2 Linux driver
developer http://flamerobin.org
Waiting for a fuck you linux fuck you video from nVidia
Part ideology, part pragmatism: Linus wanted to create a kernel with a license that would force everyone to play nice (i.e. share code/improvements), but at the same time he wanted user apps to be able to freely use the kernel as intended, regardless of their license. So he added a preamble to the GPLv2, clarifying that code that links to the public (userland) kernel interfaces is not regarded as derived from the kernel code.
it is time to finish with blobs. If they have problem, create specs and hide inner workings.
well, there definitely is less to maintain if there's no hw to use the feature.
world was created 5 seconds before this post as it is.
Alan Cox and Linus, you guys are my heroes.
And, this is just one of the many, many reasons I stay far away from Linux on the desktop. It's like a bunch of screaming children all saying "mine, mine, mine".
When you have herpes, do you benefit from giving other people herpes?
If not, it's a stupid analog, and you are a stupid person.
You are not alone. This is not normal. None of this is normal.
NVidia needs to simply comply with the GPL and get it over with so that we can move forward and collaborate.
Opportunity for WP8 to implement a mini-Optimus which could use an ultra-basic graphics chip (just what's needed to render Metro) paired with the usual GPU (all packed in the same SoC with the CPU, as usual). This would make battery life skyrocket when non-gaming or non-H.264 tasks are executed. In general, Android will get ruined by the Linux kernel eventually (and Linux's unstable ABI). Google were smart enough to not use X.org and PulseAudio, but not smart enough to not use the linux kernel. This is because Android was designed in the Symbian era, when smartphones weren't meant to be updated (beyond bugfixes). Now that the iPhone and Windows Phone are getting updates, the unstable ABI of the Linux kernel is showing. Ooops! Google could have bought QNX and have the most badass mobile OS outthere. But no, LinuxIsAwesomeForEmbedded. PS: Read here for Motorola's efforts to upgrade their phones (read: re-write the drivers of the SoCs): http://news.cnet.com/8301-1035_3-57526994-94/android-users-outraged-over-motorolas-broken-promise/ All that FUD about how companies purposely don't upgrade their phones just got shot down in flames. It's not that they don't want, it's that they can't, because it involves significant rewriting of the drivers.
Most of the userland on BSD is BSD licensed. It's not the same ls, sort, ps etc as Linux. A few, like grep, were GPL for a while.
BSD?
When you have herpes, do you benefit from giving other people herpes?
Maybe you haven't had an orgasm before, but ...
Might I suggest "terminal"?
IANAL and I suspect neither are you... By my understanding _none_ of this piviots on the dirrivitave work requirement.
The blob isn't really in questions so much, in and of itself it is fine. It isn't allowed to link with the kernel without being compatabily licensed. Think if it as "the blob isn't allowd to include the kernel" rather than "the kerne; isn't allowed to include the blob". The grey area comes because this is something the end user(s) do post distribution and the license only imposes duties on the distributor.
Because of the above loophole in the grey areas of the license (among others) the kernel creators "reserved" APIs for people who are not cheating via such means. Note that NVidia wants to let their "shim" have access to (e.g. use) the API code that is flagged "play nice or fark off" (e.g. GPL code only).
So having gotten by on a technicality, they want to have a larger, newly developed subset of the kernel included under the aegis of their technicality. The blob may stay as it is but it may not encroach beyond its little hole unless it comes clean.
Note that the new feature system (general use or GPL only designations) were added because of this sort of nonsense. So it's not like NVidia shouldn't have seen this comming. There is little point of them acting all surprised about it at this late date. They have been assuming that they woudl get a pass because "Linux needs them" but Linux doesn't _need_ anybody... Pride and the fall as it were.
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
The flaw is that you can't be sitting, coding merrily along, and suddenly your source has been (thunder crash) infected by GPL!. You choose if you want to use GPL code, and you pay for it in the same manner you pay to license any other code. The only difference is in the manner of payment.
Although I do like the "unintentional infection" defense - gee Judge, I was just putting together this video, and these copyrighted songs infected it! It's not my fault!
The most popular BSD (by a wide margin), OS X, uses a GNU userland.
"[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz
...can't be "gently pushed" into open-sourcing their core work, remember Java. (The little-told story about the open-sourcing of Java was about the Brazilian Digital TV platform). I wouldn't be surprised if more open-source graphics drivers come up soon.
As far as I know, OS X uses very little GNU-produced or GPL-licensed code. XCode has replaced gcc with LLVM as the default compiler, and Samba has been replaced with an Apple-created SMB/CIFS server.
It must be a relatively recent development, then. At least as of Snow Leopard, it was all GNU.
"[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz
So you've never heard of GCC, or the GNU userland utilities that most Linuxes and BSDs (including OS X) use, or the Busybox userland utilities that all the rest of the (embedded, etc.) Linuxes use? All that's GPL, and (IMHO) more important than the Linux kernel (even though I'm not one of those folks who cares about calling it "GNU/Linux").
GCC is moving to GPL3 , forcing BSD to use Clang away from gcc.
Practical honest answer from one Linux user which puts some emphasis on the "free stuff" (as in Freedom):
I've stopped buying NVidia gear years ago precisely because the only workable drivers were (and still are) closed source. It goes against what I consider important. Plus it made a maintenance of my PC harder (even with lots of effort spent on this by NVidia and RPM Forge).
From that time on I'm buying Intel or ATI - they might not have the best 3D performance, but FOSS drivers DO work (I've played say UFO Aftermath using Wine with ATI card and FOSS driver which is part of Fedora distribution, 1080p video playback on some Intel chipset works too). The only "sad" part was spending 12â on the game or on DVDs. :)
Thus, thanks to Intel and ATI and FOSS volunteers I do have options other than NVidia. So I think by not providing decent FOSS drivers, NVidia is hurting only themself.
hany