> Why would the GPL have been a "no-no" for carriers?
Because carriers are staggeringly stupid, I think.
> I can't think of a single Android device that doesn't let you install your own build on it.
I wish that were true: "Unlike the DROID, the Milestone has a bootloader that only allows signed Firmware to load. This prevents users from booting Custom ROM images not signed by Motorola that have become popular in the Droid modding community."
If carriers really wanted to lock down devices, they would use techniques like the crypto cards ATMs have do. Instead, they do the equivalent of asking you really nicely not to root the device.
Motorola tries harder than most, though, I will agree.
The kernel is GPL, but that doesn't stop you to write non-GPL apps on top of it. However, using a GPL OpenJDK would have made every single app on Android GPL.
Ie. apps that only use the Java system libraries don't have to be GPL'ed, only modifications of the VM itself. Google didn't want to place this restriction on Android vendors.
No, that's related to writing kernel modules. I'm talking about writing propriety apps on a gnu/linux distribution, android in that case. This is totally legal and doesn't depend at all on the kernel license exception. Think skype on ubuntu. However, if the toolkit/sdk you're using on a gnu/linux distribution is GPL, then all your apps will have to be GPL, unless you use a non-gpl sdk or write your own non-gpl sdk as Google did.
> The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
I can't think of a single Android device that doesn't let you install your own build on it. (After some coercing, of course.)