I can't speak out of experience about the Xorg API, but at least from the kernel's prospective, you have no idea what you're talking about.
Originally Posted by falloutboy
I'm leading a team that develops a fairly large non-GPL software that runs inside the Linux kernel. Much like the nVidia driver, our software is cross-platform and uses a thin and well-established layer that separates the logic layer from the kernel-support layer.
I should add that our software uses far more API's than the nVidia driver on one hand (E.g. I/O, files, networking, etc) while doing far less fancy memory management footwork on the other. (Plus, we are 1/5 the size of their module)
Based on your post, it should be safe to assume that we spend most of our time tracking upstream kernel API changes, but in real life, we rarely spend more than an hour or two when an API does change (once every ~3 kernel releases) - and as I said, we use -far- -far- more API's than the nVidia driver.
As I said, I don't have experience with Xorg APIs, so I can't really comment outside my domain, but based on my own experience and the API's that I use, the talk about unstable APIs making life difficult for out-of-tree kernel developers is pure FUD.
And yes, from time to time we do face functions that are GPL-only (and cannot be used by us) - forcing us to develop our own code (E.g. we have our own module loading facility as several symbol loading facility). However, unlike you, I understand the rules of the game: The Linux kernel was designed for in-kernel OSS development and not out-of-tree proprietary kernel development. If I -choose- to live outside the tree and develop non-GPL kernel module, I must also accept the fact that certain functionality is limited or missing and that it's well within the right of the Linux kernel community to prefer OSS in-tree kernel development over me. As the saying goes: Those who live by the sword, die by the sword.
P.S. Windows API changes are usually far more invasive, and require far more work (And yes, service packs can break working kernel code).
DEV-NG: Intel S2600C0, 2xE52658V2, 32GB, 4x2TB, GTX680, F20/x86_64, Dell U2711.
DEV: Intel S5520SC, 2xX5680, 36GB, 5x320GB, GTX550, F20/x86_64, Dell U2711 (^).
SRV: Tyan Tempest i5400XT, 2xE5335, 8GB, 4x2TB, 9800GTX, F20/x86-64, Dell U2412.
LAP: ASUS N56VJ, i7-3630QM, 16GB, 1TB, 635M, F20/x86_64.