After a bit of discussion, I came to the realisation that while I am keen to make sure that libkakapo is open source, I only care about how others improve the library, rather than what they do with it.

Pragmatically, I don't mind if libkakapo was to be used by a closed-source project, so long as if the project made some great improvements that those changes ended up in the main source.

I had chosen GPL for the library more or less by default. But using GPL for the library means that your projects must be under the GPL as well - the linking clause requires it. This makes no sense for a library where I'm only interested in the drivers, not your project source.

LGPL means that both open source projects can use these drivers (which is good, because they can't use Atmel's ASF), and closed source projects can as well. The only obligation closed source projects have is to ensure they distribute the library source with their firmware (or generally make the library source available), and that any modifications to it must be included as well.

I think this is a nicer balance and I know a few people have asked about how to use this library on closed-source projects they're being paid to develop for customers. I'm actually very supportive of that, because it indirectly funds improvements to the library. And that's definitely a good thing.

So there we are: libkakapo is now LGPL.