me for my point i just do not buy nvidia hardware but do not try to hurt nvidia in that way..
maybe the FOSS buys should stop fight again nvidia on nvidia hardware and they really should buy amd hardware :)
i really should send Linus an email "buy amd hardware you noob."
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).
P.S. if you read this  interview, you'll notice that nVidia is not really concerned about kernel API changes. (Even if they don't like the API's)
1) The lack of a stable API in the Linux kernel. This is not a large obstacle for us, though: the kernel interface layer of the NVIDIA kernel module is distributed as source code, and compiled at install time for the version and configuration of the kernel in use. This requires occasional maintenance to update for new kernel interface changes, but generally is not too much work.
That said, the kernel API churn sometimes seems unfortunate: in some cases, working interfaces are broken or replaced with broken ones for no seemingly good reason. In some other cases, APIs that were previously available to us are rendered unusable.
I think with APIs that lock out closed-source drivers people in general mean DRM and/or KMS stuff.