Last week, a reader wrote in with this question:
[Y]ou’ve got all this great code, but you haven’t declared a license. Is it public domain, or BSD?
This is, as they say, a fair question. I address it today.
I prefer to use code with BSD-like licenses. I don’t want to have to think about whether using some code in a particular way is kosher or not, or deal with GPL-style obligations. It’s a transaction cost I’d rather avoid.
I have no ideological commitment to “open source” in general, or the GPL in particular. I like open source, find it helpful, and like to “give back” in such small ways as are natural to me, but I have no interest in advancing it as a “cause”.
Therefore, when I opt to explicitly license my code under a permissive license, it’s almost always going to be 3-clause BSD.
I have decided not to adopt a “blanket” license for the code I publish on this this site. Ironically, my reasons for this are the same as those underlying my preference for the BSD license; a desire not to have to think about irrelevant things.
I write this blog as a somewhat informal exercise; much of the code I post consists of things that just happened to catch my attention. My nature is such that a blanket permissive license would cause me to stop and think: “Wait! Do I really want to write this? Am I giving too much away?” The fact that such thoughts are foolish would do nothing to suppress them; hence, no blanket license.
If you want to use code that you see here, you have a bunch of options:
- Some of the more complex stuff is explicitly licensed
- You can ask; I can’t really imagine saying no
- You can rewrite the code after understanding its design; this should be trivial, and avoids copyright issues
- As a practical matter, I’m extremely unlikely to know if you just grab the code
I’m sincerely sorry I can’t be more generous. I’m happy to release stuff under BSD on a case-by-case basis, but licensing is something I don’t want to have to think about by default, and a blanket license would cause me to do so.