The General Public License is a powerful license with a powerful ideology. The GPL forbids use of GPL'ed code in closed-source, proprietary software. The model has already proven itself, but sometimes mistakes happen. GPL'ed code found its way into a closed-source kernel module; NVIDIA's proprietary beta Xfree86 driver. This is the story about how mistakes happen, and how they can be fixed with polite communication.
Ralph Metzler is just another one of those 'thousands of developers' you hear about developing software for Linux. Ralph was checking out the sources for the Linux 2.3 kernel, and he noticed that a chunk of memory conversion routines were copied line for line out of his bttv.c video driver source into NVIDIA's code.
Tony Bennett at NVIDIA grabbed a small amount of bttv.c and integrated it into the Xfree86 driver, without realizing that the code was GPL'ed. Nvidia was contacted about this oversight, and politely responded in a positive way to Ralph. I got to talk to Ralph to see how it all worked out.
I learned from Rich Black, PR manager for NVIDIA, that they are currently changing the code for the next revision of the Xfree86 driver, and the GPL'ed code will be removed from the driver within the next one to two weeks. I got to talk to him, too.Ralph Metzler: I received E-mail by Tony Bennett, and he also said he would fix it and they apologized for any possible infringement or any violations, and it was an oversight and they would remove it as soon as possible.
Slashdot: Are you happy with that?
Ralph Metzler: Yes, of course. Of course, it would have been better if it had never happened. I wasn't especially happy about seeing that they released binary-only drivers now, and I just wanted to try them out, and then I see that they re-used GPL'ed code.
Slashdot: ... and then they threw in a credit for someone else who wasn't even you.
Ralph Metzler: All right, I think that was David M[iller] or something. He made some patches to this code, and while he was mentioned in the bttv code before those routines, they probably thought it was all his code, but it was originally mine. He made some patches so it works with newer kernels. They probably thought it was all his original code. It was also probably just a mistake.
Slashdot: The way it stands right now on the Web site, people are able to download [the driver], and it's not GPL'ed.
Rich Black: I think it's one of those things where our corporate rule is that we do not open up our code, and we do not have open code, and we will not do that.
Slashdot: That's fine, and that's understandable, but you're in the position that you're either going to have to open it up completely, or not use it at all. Waiting until next revision and then saying, 'Oh, well, it's fixed now' is a bit of a problem, because right now you're in violation.
Rich Black: Right, which we understand, and it will be taken care of within the next one to two weeks. I understand we're in violation of that now, and it was something that was done strictly as a mistake on our part, and somebody was going through writing some code, and it was completely done on accident. It was not a known violation at the time, it was something that he is aware of now, and is seeking to alleviate the situation and take care of it. I guess I can't change anything about how we are in violation of the GPL right now, but it's something we are going to take care of as soon as possible. With the next version of the software, we'll take care of that, and we'll no longer be in violation.
Slashdot: Would you be willing to open source the one kernel module that uses that code?
Rich Black: From what I understand, that is something that might be opened, but I cannot state as 100% fact that I know for sure that that it is the direction, because it is our general rule that none of it is going to be open sourced, but from what I understand is that one [module] might be made available.
So, that's the story. Big company makes a mistake, developer notices mistake and politely informs big company, big company recognizes mistake, apologizes and makes efforts to correct the problem. Wouldn't it be great if it were always this easy? The open nature of the GPL makes 'borrowing' source code extremely easy, and sometimes mistakes do happen. With any luck, polite messages and open communication will save the day.