There could be a number of reasons for what Nvidia is choosing to do here. I've worked for a company that provided a kernel module separately (though, it was all GPL). There were a number of reasons for this:
* The architecture of our driver did not fit with the subsystem we were playing in (this was a SCSI module). We worked with the package maintainers, and without a near complete re-write of our code, it would not have been accepted.
* Part of the above design was cause by cross-platform code we had (parts of the driver was shared between Windows, Linux, AIX, others).
* When supporting customers that run older version of a distro, there would be no-way to give them the latest features if the code was part of the kernel. So our latest product offerings would be incompatible with older systems. We would have been at the mercy of RedHat and SUSE to backport our drivers into their older releases. (or would have had to pay them a lot of money to do it).
We had a driver that basically started development in 1997 or so, that there was no-way we were going to rewrite it just to get it into the linux kernel.
For us, it was just way cheaper to supply the drivers outside of the kernel.
> For us, it was just way cheaper to supply the drivers outside of the kernel.
While that's certainly fair enough, and rational in economic terms, when a user base reads between the lines that "you're not worth spending the money to do things properly", I can also see it eliciting a more visceral and less rational response such as Linus'. I think that in any case though, money isn't the issue so much as Nvidia wanting to not share their toys.
* The architecture of our driver did not fit with the subsystem we were playing in (this was a SCSI module). We worked with the package maintainers, and without a near complete re-write of our code, it would not have been accepted.
* Part of the above design was cause by cross-platform code we had (parts of the driver was shared between Windows, Linux, AIX, others).
* When supporting customers that run older version of a distro, there would be no-way to give them the latest features if the code was part of the kernel. So our latest product offerings would be incompatible with older systems. We would have been at the mercy of RedHat and SUSE to backport our drivers into their older releases. (or would have had to pay them a lot of money to do it).
We had a driver that basically started development in 1997 or so, that there was no-way we were going to rewrite it just to get it into the linux kernel.
For us, it was just way cheaper to supply the drivers outside of the kernel.