Last week I published a new app to the Ubuntu Store, which isn’t anything particularly new, but this time I didn’t use my normal license, instead I went permissive. This is something I’ve been wavering on for a while now, and is the result of some developer soul-searching about why I’ve been using the GPL and what it’s done for me.
Free as in mine
In the past I’ve always used the GPL or LGPL, not for philosophical reasons or because I thought software should be free (in the RMS sense), but because I was selfish. I used the GPL because I wanted to make sure nobody built something on top of my work without sharing it back to me. In my mind, using a strong copy-left license ensured I couldn’t be left out of someone else’s success with my project. And in a way it worked, I wasn’t left out, because most people never used, let alone built on, my projects. I was trying to solve a problem I didn’t actually have.
You aren’t gonna need it
YAGNI (You aren’t gonna need it) is a principle of extreme programming that says you shouldn’t add features to a project until you know that it’s actually necessary. I don’t usually pay much mind to trendy programming methods, but I think this one might be applicable to the way I pick licenses. If my project aren’t being used and extended by others, why am I worried about it happening enough that I want to put restrictions on it? Maybe I don’t need the GPL’s protections afterall.
A new direction
So from now on I’m going to prefer the BSD for new projects, and I’ll work on converting old ones to this license when I’ve been the only contributor. The worst that can happen is that somebody benefits from my code more than me, but that wouldn’t be much different to me than having nobody benefit from it more than me. I won’t actually lose anything. Nor will I be restricting my future options, on the contrary I can always go from a BSD to a GPL, but going the other direction is quite a bit harder once you accept contributions.