For those who didn’t quite get the irony of the previous blog title… I generally find Linus Torvalds to be quite unreasonable. So I was rather surprised by his sensible response.
But trust Linus to generate some positively outrageous outbursts only days later:
Especially around 48:15… Linus raging at nVidia. For what? For not releasing open source drivers? Single worst company they ever dealt with?
Well, correct me if I’m wrong, but as far as I know, nVidia is the only company that even offers a technology such as Optimus. As far as I know, Radeons cannot do this (at least not in systems with Intel IGPs). Aside from that, if I’m not mistaken, nVidia also pulled support for Optimus for versions of Windows prior to 7, simply because they could not get it to behave reliably enough (but I haven’t heard anyone complain that Optimus didn’t work when they installed Vista or XP on their Windows 7-certified laptop with Windows 7 preinstalled). Perhaps, there is a small possibility that nVidia isn’t just doing this to spite linux users? They may actually be doing their users a favour, just as with the aforementioned Windows support. If it can’t work reliably, it’s better if it’s not available at all. Else people will just be complaining about stability, data loss and whatnot.
I really don’t get his point. nVidia’s closed-source drivers are certainly not the only closed-source drivers for linux/Android. On the other hand, they are widely considered to be the best graphics drivers for linux, in terms of performance, stability, and feature support. nVidia has been committed to good linux support from early on (not to mention other OSes, such as FreeBSD and Solaris, which get ignored altogether by other vendors).
Just shows how little Linus really understands about the world, I suppose. The REAL problem here is that the linux kernel, X.org and the OpenGL subsystem don’t have properly defined interfaces. Which is at least partly Linus’ own fault. It’s much easier to reliably support a technology like Optimus on Windows 7, because its driver model has specific interfaces for it. It requires two drivers from independent vendors to share data together. The problem with linux is that updates to kernel, X.org and whatnot requires updates to the drivers as well. This means that you have to have very specific versions of all parts in order for them to work together reliably. The linux community seems to use open source as a crutch for this: if you can patch the sourcecode and/or (re)compile everything on the same configuration, it is more likely to work together.
But even then it is not without problems, because not all OpenGL implementations are alike. Most open source drivers are part of the MesaGL project, and as such, use the same basic interfaces. But there are also drivers which implement their own OpenGL, such as nVidia and AMD’s drivers. They are all OpenGL-compliant, but unlike in Windows, they are not compatible beyond the usermode API itself, and as such, they cannot share data through a standardized interface.
Here is a more in-depth article on what a mess linux is in terms of graphics: http://blog.mecheye.net/2012/06/the-linux-graphics-stack/
Linus should look before he leaps. He is part of the problem here, not part of the solution. I get the distinct impression that he does not even understand the problem. Which is sad for a person in his position.