Binary drivers suck: it means you need the vendor to recompile them for each kernel version. This leads to extreme difficulties with commercial use of Linux: you have pressure to use a particular version of the kernel for one reason, but you can't because the binary driver was built for a different version. You may have to try to get the vendor to recompile their driver for you, but then there is a schedule dependency. Why have the vendor in your release loop?
GPL APIs also suck: Frequently custom hardware comes with proprietary non-GPL drivers, but which do come with source (usually terms are "free to use and re-distribute but only with my custom hardware"). I've seen where a kernel API changed from free-access to GPL restricted.. but now what? You are free to change the custom driver sure, but you can not use it because you are not free to change the vendor's license. Ugh.
IMHO, both the binary drivers and the GPL APIs need to go.