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.
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.
Us FOSS types are against greedy cheaters using our work for their profit, while not sharing theirs, with the community for non-profit purposes.
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?
And this is why graphics support will always be a third class citizen on linux.
Congratz!
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.
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
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.
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.
So you get incompatible interfaces doing the same job, these interfaces will probably be closed source making a hell as every vendor will end up implementing his own version
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.
Well, this is not really just "some dude". His disappearance will be noticed.
c++;
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.
Are you hating or just misinformed? NVIDIA ranks second in terms of total lines changed for the ARM kernel, and fourth in terms of number of changesets for all employers or organizations. That's sharing.
The only thing they don't share is their graphics drivers - which seems like a fair trade overall. nVidia has licensed patented code which they couldn't share even if they wanted to.
NVIDIA will likely just build their own DMA memcpy routine - because copying memory is SOOO unique.
Full disclosure: I develop (unrelated) proprietary kernel modules, I'm very familiar with the licensing, patent and copyright issues and we work within the GPL limits defined by the kernel team.
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.
No, this is why linux exists in the first place.
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.
A couple years ago, back when they had the upper hand, NVIDIA did not even open up the drivers for their ethernet chips, $DEITY knows what trade secrets could have been hidden in a ethernet driver.
Also, don't say that they're not opening the code because it's licensed by third parties: they don't even release documentation for their chips. The truth is that they don't care about open source, and will behave only when forced to.
Full disclosure: Linus Torvalds develops the linux kernel, he's very vamiliar with the licensing, patent and copyright issues and relationships with NVIDIA, and sent them to "fuck themselves" (sic.).
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.
I have a sincere question about proprietary code.
If the concepts underlying the code are indeed patentended then is the copying of said code not protected by the governing countries laws? If I had patended a really cool/advanced algorythm then by showing it's implimentation how am I hurting my 'invention'? I was of the understanding that by recieving a patent for an invention I was able to show everyone how I did it because I was protected by law from anyone implimenting it for a period of time with out my explicit permission.
So I guess tl;dr if someone got their hands on Nvidia's/ATI's driver code and showed the world how would that effect patents and/or intellectual property rights?
A loop, by its nature, continues. If that didn't make sense, start reading this sentence again.
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
What's your point? Everybody plays on the same field, which gives the GPL developers many advantages.
Even if it is true that NVIDIA is just in it for the money, I think capitalism works the same way. Capitalists only contribute taxes, wages, and such because the are FORCED too, no difference here. These things are good for everybody in the long run as long as they're managed well. People get working drivers, Linux gets more users, life is good.
Linus can bitch and moan all he likes - the fact is that he set all this in motion and had no problem with NVIDIA keeping to themselves for 12 years while doing the same thing. Why did he suddenly become pist? Because they decided to roll their own infrastructure code - due to the fact that they couldn't use the gpl version.
So, Linus is pissed because NVIDIA didn't do what he wanted, not because they do a bad job. He's pissed because they don't contribute or integrate into standard Linux DRI drivers. But they did exactly what they had to do in order to maintain their non-derivative status.
Reap what you sow.
I worked with Daryl Strauss on open sourcing the 3dfx graphics cards. I worked with 3dfx management and XFree89 foundation on the initial test and release. I know how this goes. NVIDIA knows how this goes also. I'm a huge fan of Open Source/GPL. But I'm also a realist - if an investor drops a few million on a new invention - she gets to decide how it gets made and distributed (as long as they stay within the copyright rules laid out by Linus himself).
Why does that matter? All that matters is that I have a perfectly usable set of computers that do what I want. I don't care if dear old gran or my neighbor uses it. I hope they would for their own benefit, but I don't care if they don't.
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.
If I actually cared about desktop market share that might mean something, only I don't. I don't care what other people use and what I use varies depending on what I'm doing.
Yeah, I had a sig once; I got bored of it.
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.
Arm is not the problem for nvidia, hey they even have a gpl'd driver for their geforces there. It's not a memcpy mechanism, just a way of sharing buffers between devices by making a file descriptor that can be passed around through unix sockets to any other program, or passed through any other way.
nVidia is doing the right thing on arm, better than most others out there. The problem is spefically their x86 drivers still not adhering to the GPL, while wanting to benefit from shiny GPL interfaces.
I agree with you 100%, a patented piece of code has far more power being open sourced than being proprietary. In fact it's practically radioactive.
But it also has the potential for disaster, as IBM-SCO demonstrated. Trolls can sift through code looking for violations. Investors look at such things and weigh the pros/cons and sometimes decide that being proprietary affords more protections.
I'd love to have everything open source - and I always encourage it wherever I go. At the very least, code should go open source when patents expire. But businesses have a different perspective, and they see code in terms of sales, market and distribution controls.
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!
Intel 3D is "good enough" now for most purposes including less demanding games. I'd like a stronger graphics solution, but closed drivers is why I didn't buy an NVidia or AMD graphics solution for my last rig. Back in the day I bought a laptop with an ATI chipset because it WAS open (a high end Toshiba Tecra). It survived for six years with no worries about drivers being EOLed. Closed drivers suck... Ubuntu kinda made it work, but not for real geeks - brittle and inflexible, and increasingly not worth the effort. Closed drivers have made Linux a second class citizen on the desktop IMHO, but that doesn't have to be the case anymore. It's a shame for those trapped at the higher end though.
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?
Does it matter the intentions of the person going through the code if some infringing code is found is it any more legal if it is obfsucated by compilers? Maybe if there is infringing code the patent holders of said code should be informed since it is their legal right to assert their claims. Maybe if this was the case where all code that holds patented material was to be availible to all to review but not implement the result would be the realization that no one can really innovate with the current system and force the market to correct it's self like capitalizim it's self insures?
A loop, by its nature, continues. If that didn't make sense, start reading this sentence again.
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.
Why does that matter? All that matters is that I have a perfectly usable set of computers that do what I want. I don't care if dear old gran or my neighbor uses it. I hope they would for their own benefit, but I don't care if they don't.
If what you're doing with it only includes things that do not require broad support, congrats. If on the other hand you'd like to still play games on a PC and not have to reboot to Windows, this stance is in fact one of the things that relegate us Linux users to second or third class status.
It is a legitmate question as to why Nvidia doesn't open source the drivers or write new open source ones. The most logical thing is the chicken and egg problem of there being no money in it because there are no users, and no users because there isn't enough support.
We have awesome desktop environments, the same browsers (or better) as every other OS, and generally the same hardware support. This is the one last thing that always results in a "nope".
"Can I play games on it?"
"Only if you want to play ancient games over a decade old, or humble bundle games."
"So, nothing made in the last 10 years?"
"Want to fiddle with WINE?"
"Nope."
End of discussion.
I was raised on the command line, bitch
"Nemo me impune lacesset"
Two ways: Because as everybody brags about nowadays, the version of an invention in the patent application usually does not actually match the 'produced' patentted invention and as such usually either doesn't funciton or is intentionally broken.
Secondly: because it might show their competitors that they are in fact, possibly through obfuscated means, using a patented implemention based on a competitors designs and thus that said competitor is due licensing royalties of which they have not been paid for the last X years of transgression and thus due punitive damages as well as future licensing revenue.
IANAL, but I have years of experience regarding patent related discussions here on slashdot :D
If you ask that, you have no place in this thread, site, or internetwork. Get out.
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
So I guess tl;dr if someone got their hands on Nvidia's/ATI's driver code and showed the world how would that effect patents and/or intellectual property rights?
Keep in mind the difference between patent and copyright. The GPL is about copyright. Proprietary code is about copyright. Patents are a whole other level of encumbrance.
There are many ways to implement any algorithm of moderate complexity. The implementation is not trivial and is the copyrightable part. If you write code that implements an algorithm someone has described to you, then you can say with reasonable confidence that it's your code. If you read someone else's implementation, then go try to implement it yourself, your brain is likely to carry the template of the prior implementation. This is the origin of the "clean room" reimplementation philosophy. It suggests that someone releasing Nvidia's code could potentially poison the whole world, and invite copyright claims on even moderately complex algorithms.
If the algorithms are patented, then it doesn't matter how you implement them, it's always infringement. One of the "stimulate innovation" parts of patenting is that, if your algorithm is protected by patent, then you are well advised to make that algorithm known, such that your competitors can specifically not use that method, but rather invent something better.
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.
The patent system is broken. Those who strive for new ideas and create new designs never seen before are far overshadowed by people patenting variations on blinking cursors, linked lists and sorting algorithms.
The patent system has congressional oversight - which is broken also. The patent system is abused by large corporations who push through hundreds of patents a year knowing that not all of them are truly unique.
I said no... but I missed and it came out yes.
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.
Now I have to admit that I have been playing Minecraft lately... but honestly, gaming is not a reason that I have a computer.
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 that is exactly what the GGP was saying. Open source is no capitalism. Which is not to say that capitalism is bad. It's just that open source works differently and Linux is open source.
He's pissed because if you don't integrate, the resulting operating system is a mess to develop, debug and maintain. Not to mention, that it's much worse for end users.
Which is an elaborate way of saying:
they did exactly what they wanted to do, in order not to share code like everyone else on the desktop (ATI, Intel) is doing.
I don't doubt that, but why are you throwing patents into the discussion, when patent protection is independent from the open source status of the code, as patents by definition must be disclosed?
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?
Well, you have to be an imbecile to use nVidia embedded stuff. The deal with the ethernet cores ("ip" in the ASIC/fpga lingo) in their chipsets was that they bought the crap ip block from someone else, and it was a damn bad one, not only very bad on features, but also very buggy. Think RealTek but only much worse. With nVidia, you don't get errata documentation, you don't get nVidia engineers help track weird bugs in their shit, you get nothing.
They're trying very very hard to change that for the ARM SoC division. But unless they actually "let go" most of their upper and middle management, it is a lost cause. Someone with half a clue will go to TI or other SoC vendor with an extremely good track record. The only thing nVidia is good at is GPUs, they are not good at anything else, and they are not even good at sharing that GPU stuff with other companies in a meaningful way to create hybrid products.
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
There is very little benefit in having open source software which people can't alter and distribute because it would infringe on someone's patent. That is not open. Of course they could always write a statement promising not to sue over patent infringement, but that would water down the patent.
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.
Now I have to admit that I have been playing Minecraft lately... but honestly, gaming is not a reason that I have a computer.
Sure, and I don't game that much either. That said, lots of people do who are more or less trapped on Windows.
I was raised on the command line, bitch
"Nemo me impune lacesset"
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.
What do you mean 'forced to'? If NVIDIA wanted to, they could just shut down their open development programs and go all 'Apple' on your ass. They're still waaay ahead on all counts against AMD. So they will still sell cards, and maybe even make whole computers out of them... oh wait...
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.
Linux is capitalism stretched over an open source platform - this is no longer a dorm project. There's a enormous amount of corporate money in Linux development, to say otherwise is not reality. I've been to IBM research and spoken with their developers - each project is evaluated and priced with expected commercial services and hardware sales before it gets developed.
My point about NVIDIA sharing the ARM kernel is no different - that's not their horse race - and so they contribute as a way to expand the ARM platform and to be competitive in the tablet/low power market. Their main product is graphics and scaler acceleration, and that's what they sell. It's a litigious world in hardware, and NVIDIA is a single market company, unlike AMD or Intel.
Releasing documentation is hardly a silver bullet to open source, as there are some amazingly complicated mechanisms to the feeding and management of a GPU. The ATI documentation might as well be written in ancient greek - it hasn't resulted in better drivers so far. The register list itself is 166 pages long for the R6XX 3D interface. AMD drivers were generally worse than NVIDIA up until recently.
Lastly, the issue with patents has everything to do with licensed third-party code, protection from patent trolls, and market competition. It has little to nothing to do with open source, other than exposing oneself to high litigation risk and leaking trade secrets. That said, NVIDIA plans on releasing an open source TEGRA graphics driver on ARM with some documentation as well. That makes sense, as tablet GPU's are basically last-generation products that have been shrunken and rewired for low power.
I don't take sides with NVIDIA here - I'm only sharing my own experience having sat in boardrooms and also coded with developers. If it were as simple as open-sourcing the code then nVidia would likely have done that. But aside from the legal issues, developing quality GPU drivers is insanely hard. NVIDIA generates a single driver blob for Windows, Linux and OSX. That's engineering.
Just from a technical POV, the drivers are upwards of 25mb in size, have code dependencies throughout hardware, drivers, and usermode. They interact with hundreds of registers, tens of thousands of calls, and require near real-time latencies in a non-realtime kernel. I have my doubts that anyone other than nVidia would be maintaining that code ANYWAY. The extra cost, goodwill and community spirit may not be enough to persuade them that it's worth the trouble.
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.
Linux is capitalism stretched over an open source platform - this is no longer a dorm project. There's a enormous amount of corporate money in Linux development, to say otherwise is not reality.
The fact that many capitalists are taking advantage of Linux, while at the same time improving it, doesn't mean that you can say that the open source model of the Linux kernel resembles capitalism. It's so far away from the concept of capitalism, that thinking about it ("to each one according to his need, from each one according to his abilities") it's possibly closer to communism... except that it works.
I've been to IBM research and spoken with their developers - each project is evaluated and priced with expected commercial services and hardware sales before it gets developed.
And would IBM with its corporate culture have *dreamt* of releasing source code for free, which could be used by its competitors too, before Linux entered the scene?
I kind of agree with the rest of your post, but I think that just as NVIDIA poured millions into the development of their cards, so did their users in order to buy them, and they have all the rights to ask NVIDIA for first-class support, which doesn't happen with binary drivers (not even on Windows, as soon as your card ages more than 12 months. And this is true for AMD too, by the way).
AMD OSS drivers are catching up very slowly, but they're finally doing it (for instance, for R300 class hardware you get support from the OSS drivers that is comparable to the binary ones - and better, because unike the binary drivers, the OSS ones work out-of-the-box, still support older cards, get bug fixes and work with new kernels). Part of the code that is being written for AMD and Intel chips can be reused or adapted for other chips, and most important, it can be used to train new developers in writing a 3D graphics card device driver, which is something that until now was exclusive to the developers employed by some GPU manufacturer. This is an investment that won't go away when the next GPU architecture is out, and it cant' be ignored IMHO.
And what about Intel? They got to the point where they only release OSS drivers, with OSS drivers supporting their new hardware even before it comes to the market, and next-gen Intel GPU are sophisticated enough that many average Joes won't feel the need for a discrete GPU anymore. I wouldn't have believed this was possible just a couple years ago, yet we got there. So while I accept your understanding of NVIDIA's position, I don't share the "defeatism" according to which things must either work their way or can't work at all.
There is no patented code, the US (and EU) patent law say so: mathematical algorithms are not patentable.
End of story. Now you only need to explain this to the patent offices and patent courst, which still believe it's possible to legislate Pi=3.
"The more prohibitions there are, The poorer the people will be" -- Lao Tse
it is time to finish with blobs. If they have problem, create specs and hide inner workings.
Nvidia opened up ALL kernel parts needed for their Tegra chips. The only closed-source parts are firmware files and the user-space driver.
that thinking about it ("to each one according to his need, from each one according to his abilities") it's possibly closer to communism
No, with GPL, even those who do not "need" are given. And even if you are a struggling startup, you still get no exemption from your GPL obligations. Not close to communism in any sense.
Capitalism (and communism too) is based on the obsolete scarcity model - goods are scarce so rules have been defined for a "fair" exchange of goods. GPL takes into account that the scarcity model is not true any more for "software" goods, or "source code" goods. This is a major way in which GPL differs from capitalism and communism both.
But other than that, communism is a economic as well political philosophy. GPL doesn't need any of the political support needed by communism. The legal support it does need (copyright) is more readily provided by capitalism oriented polity than communism oriented polity. So, while differing from both capitalism and communism in the major way of scarcity management, it is ever so slightly closer to capitalism.
Bingo Dictionary - Pragmatist, n. A myopic idealist.
the secrets in their ethernet driver were bugs.
hw bugs, iirc.
world was created 5 seconds before this post as it is.
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.
Well, I had to go back to Nvidia, as my ATI adapter glitched constantly on my desktop. Like as in everytime I opened an application. And we're not even going to talk accelerated applications like full screen video. No problems now. And my 3000HD netbook will not work with ANY acceleration. And we'll not even talk of my prior ATI driver issues under Windows (yes, I keep it around for games, basically.)
It's not the years, honey, it's the mileage. - Colonel Henry Walton Jones, Jr., Ph.D.
BSD?
When you have herpes, do you benefit from giving other people herpes?
Maybe you haven't had an orgasm before, but ...
The only thing they don't share is their graphics drivers - which seems like a fair trade overall. nVidia has licensed patented code which they couldn't share even if they wanted to.
Yeah, they were using that excuse 10 years ago. You'd think in the past 10 years they would have completely re-written their driver and could have expunged any code from it that couldn't be open-sourced.
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 fact that many capitalists are taking advantage of Linux, while at the same time improving it, doesn't mean that you can say that the open source model of the Linux kernel resembles capitalism. It's so far away from the concept of capitalism, that thinking about it ("to each one according to his need, from each one according to his abilities") it's possibly closer to communism... except that it works.
I didn't say that the Linux Kernel is run in capitalist fashion, in fact I said Linux is capitalism stretched OVER an open source model. By that I mean that capitalism has a big say in what goes into the kernel and how the kernel moves products into commodities. They pay almost all the bills, employing a major number of kernel developers.
And would IBM with its corporate culture have *dreamt* of releasing source code for free, which could be used by its competitors too, before Linux entered the scene?
Obviously you have no experience in the mainframe history. Yes, IBM did freely release source for all of their mainframes until they were threatened by the US Government with the Sherman anti-trust act. As a result, they split the software code into a separate business and were made to charge money. Even after this, source was generally available for systems until the days of PC computers (1980 onward) and shared with little care for licensing.
I kind of agree with the rest of your post, but I think that just as NVIDIA poured millions into the development of their cards, so did their users in order to buy them, and they have all the rights to ask NVIDIA for first-class support, which doesn't happen with binary drivers
Thanks, and I agree with most of your assessments, your views are quite valid and well thought out. Like I said, I am a big proponent of OSS and (in most cases) GPL work.
But I also work in software tool development, and I can see why many developers are threatened - we make a living selling proprietary technology. I'm sure if you released a open source clone of a modern AMD chip, that AMD would have problems with that. AMD participates in Linux because it is advantageous, not because Linus is such a stand up guy, and certainly not because they believe all technology should be free.
Surely you recognize that nVIDIA is fighting for marketshare here? They are fighting against commoditization of their product and increasingly are under attack by AMD and Intel who "give the GPU away in for free!"
Take for example Alan Cox's employer, Intel. I can say without a doubt that it is in Intel's best interest to commoditize GPU's. They see a future without GPU's, where you buy more cores and faster CPU's to generate better graphics. System software is commoditized and hardware is king. Graphics are moved away from discreet hardware and run on Intel hardware - thus selling more hardware and eliminating competitors. That's what they say is the future.
nVIDIA has no interest in commoditizing their GPU products. They want to participate as they always have, supporting the product, but not to the point of eliminating their self-professed advantages. Their biggest Linux customers are movie production, engineering and visual design. On the Linux Platform, those customers only care that the the drivers work. It would be nice if it was OSS, but not necessary. On Windows they have a huge gaming market (which could demand open source drivers), but obviously the Win world is not about OSS.
And that's what I mean by capitalism on the Linux Kernel - it's not a campfire with marshmallows being passed around - it's companies competing to sell hardware in the Linux Market. Small players like nVIDIA have much more to lose than Intel or AMD. At some point it will become more of a chore to maintain their proprietary work and they will likely go open source, but
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
And this is why graphics support will always be a third class citizen on linux.
Congratz!
's/always/currently/g'
Larabee my have failed. But MIC survives. If demand exists (big IF), I can imagine in the not so distant future, a startup discrete graphics card company, or Intel itself, bringing a 96 to 128 core MIC type graphics card to market, with wholly open source drivers. The performance wouldn't be nearly as good as an integrated GPU from AMD/nVidia, but it would be 'good enough' for OpenGL Linux applications, and anyone could work on the driver code. If the board design incorporated hardware support for something like either 3Dfx' original scan line interleaving, or nVidia's Scalable Link Interface, in a 2 or 4-way setup, the performance *could* be pretty phenominal, and open souce. I'd think 512 MIC cores with a good scalable driver would yield impressive 3D performance indeed.
What are you talking about? Although it tends to move back and forth between hardware generations, overall AMD builds better GPUs than Nvidia does.
Plus, Nvidia's future is in question. With CPUs being "fast enough" for most people, both Intel and AMD have gone the CPU/IGP route. Once those IGPs get "fast enough" for most people, that leaves a very small market for dedicated GPUs. What's Nvidia's roadmap for that?
...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.
Oh, do fuck off. We can't all know everything. A tiny, tiny bit of context would not go amiss. Slashdot is supposed to be an inclusive news site, not an exclusive clubhouse.
systemd is Roko's Basilisk.
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