The public domain, BSD, GPL, and all that

Why you might want to read this: I summarize in plain language the differences between the public domain, the BSD-style licenses, and the GPL-style licenses. I don't claim there are any novel insights here, but I feel like I rarely see the various open-source licenses compared to the public domain, which seems like a useful point of comparison.

Suppose that archaeologists were to unearth a set of previously-unknown notebooks written by Leonardo da Vinci. Suppose further that in these notebooks, they found designs for some sort of computer, and the source code for an operating system designed to run on this computer. What would be the copyright status of this source code?

The public domain

According to the laws of essentially every developed country, the source code for daVinciOS would be in the public domain. This means, essentially, that anyone could make as many copies of it as they wanted to without having to ask anyone’s permission. They could also modify it freely, and then make as many copies of the modified version as they wanted. Basically, they could do anything they wanted with it.

The source code for daVinciOS would be in the public domain because of its age. In most countries, any written document more than about a hundred years old is in the public domain. (Exactly how old a document has to be varies by county.) In at least one sense of the word, code in the public domain would be about as “free” as you can get: Anyone can do anything with it.

This is in sharp contrast to the copyright status of most software that exists today, which of course was written in the last few decades. The source code for most existing software is copyrighted, which means that in order to make a copy of it, I have to ask for permission from the copyright holder. He may grant permission, or withhold it, or grant permission only after I give him some money, or whatever. And if I make copies without his permission, he can sue me for that.

But what if I’ve just written some software, and I want people to be able to share the source code freely, and make as many copies of it as they like? This seems to be more complicated than you might expect. This lawyer seems to say that you simply cannot place something in the public domain—you have to wait for the copyright to expire. These lawyers say that a “dedication” to the public domain is easy in the US, but that something called “moral rights” makes public domain dedications difficult in most European countries. So the legal status of voluntarily placing something into the public domain seems to be somewhat questionable.

This hasn’t stopped people from trying, though. At least one popular open-source project has been declared to be in the public domain by its authors: SQLite. SQLite is a small database engine whose website declares that it has been dedicated to the public domain. However, if you delve a bit deeper into their website, you’ll find information about obtaining a license to use SQLite if the lawyers at your company insist that you need one. This presumably arises because of the legal questionableness of placing something in the public domain.

The Berkeley Standard Distribution (BSD) license

Given the legal vagaries surrounding placing code in the public domain, what’s the generous software writer to do? Well, even if one can’t relinquish copyright, one can use a license to grant essentially everyone on Earth the right to copy your code and do anything they want with it. This ends up being pretty close to having the code in the public domain: Anyone can now do anything they want with the code, including copy it, modify it, modify it and then sell it, whatever.

Of course, all of this had been known for a long time: the Berkeley Standard Distribution (BSD) license is a license exactly like this, as is the related MIT license. The BSD license was developed because the people that wrote BSD Unix wanted to make it so that anyone could do just about anything with their code. BSD-style licenses seem to be the nearest thing to placing code in the public domain that is definitely valid from a legal standpoint.

The GNU Public License (GPL)

But suppose you write an application, and release the code under a BSD-style license. Now somebody comes along, takes your code, adds all sorts of improvements to it, and releases a new-and-improved version of your application. But they decide they want to make a lot of money, so they sell binary copies of the program, and keep the modified code to themselves. They make a mint, and don’t give any of the money to you. Is there anything you, the original author, can do to stop this? Under a BSD-style license, no: people can do whatever they want with the code, and that includes modifying it and not releasing the modified code.

And this isn’t just a theoretical concern. This is basically what happened when Apple developed Mac OS X. They took BSD Unix, wrote a proprietary windowing system on top of it, and now sell binary copies of the resulting software. They hold the copyright on the proprietary windowing system, and have never released the source code for it. Which of course they have every right to do, under the terms of the BSD license.

Perhaps not surprisingly, some software authors don’t want this sort of thing to happen to their software: it allows someone else to profit from your hard work, and it encourages people not to give back to the community by sharing their modifications of the source code. So they release their code under the GNU General Public License (GPL), which stipulates that if you modify the source code, you can’t release the modified program without also releasing the source code for the modified program. So in at least one sense, the GPL is less “free” than a BSD-style license: the GPL imposes more restrictions on what you can do with the code. But GPL advocates argue that by placing a small restriction on what you can do with the code, the GPL helps to ensure the freedom of the source code in the long term.

And if you don’t like the limitations/freedoms imposed by the GPL, you can always just wait a hundred years or so…