Over the past few years, a friend of mine wrote an HTTP server [1] in C++,
intended mainly for use in embedded systems, where something like Apache
would be too large or too difficult to use. When he was comfortable enough
with the code, he released it under the GPL license, but also provided an
alternative license for pure commercial use [2].
Over time, be became aware that multiple companies in China were
downloading his webserver and embedding the software into commerical
products. Since these companies did not negotiate an alternative license to
the GPL, they were then bound to the GPL license and my friend would have
been within his rights to buy a unit and demand the source code. His
chances of actually *getting* said source code were nil. The Chinese
companies don't care and it would have been prohibitively expensive for him
to sue. Since his intent was to make money off the codebase (and he spent a
few years working on the software [3]---following the HTTP spec [4] isn't
easy and there are some rather interesting corner cases).
So what did he do? The next release was no longer under the GPL. You
want the code, you have to buy it [5].
It was thus said that the Great der Mouse once stated:
Where's your code, Mr. Mouse?
Almost all of it is up for anonymous ftp from
ftp.rodents.montreal.qc.ca.
Some interesting stuff there, but without a clear license what can I do
with the code?
But it's
his, to do with and to distribute as he pleases.
Everybody keeps saying this as though it somehow makes it all OK.
As I remarked in a response to Cameron Kaiser,
[...],
and after Dave said he would release the source when he was
good and ready to (his right, I might add, and even though he
doesn't have to justify why he wants it that way, he did),
His *right*, feh.
Just because he has a right to do something does not mean it is a good
thing for him to do. (My usual example is farting in a crowded
elevator.) Yet I've now seen two people writing as though "it's his
right to do this" implies some kind of "he should be not be criticized
for doing this". I don't get it. Do you really think it does?
For me, he should not be criticized for making his source code
unavailable. I've seen freeware that came as binary only, no source code.
Shareware too (in fact, I've rarely seen shareware come with source code).
By the same token, if he wants to smoke a pack of cigarettes a day and die
of lung cancer, more power to him (not that I want him to, just making a
point). Dave's a grown-up, and if he makes a bad choice, well ... that's
his decision (as long as it doesn't negatively impact others).
One more story. A while back for a project I had in mind (which I didn't
do for other reasons) I took a look at existing blogging software, the most
popular of which (at the time) was Moveable Type. Written in Perl, but the
license wasn't an open license at all. Couldn't copy it. Couldn't transfer
it (licensing wise). Major restrictions on the number of authors and blogs
a single instance could do. Couldn't redistribute. Couldn't really modify.
But you got the source code!
I rejected that codebase as soon as I finished reading the licensing.
Didn't bitch to Mena or Ben Trott though. They wrote the code. They
licensed it as they saw fit. I just deleted my copy and went on.
-spc (Oh, by the way, I have this GREAT text based digital clock program,
uses a large font so one can view it from across the room ...
anyone interested?)
[1]
http://www.gladesoft.com/products/seminole/index.shtml
[2] I'm told, by my friend, that due to the way embedded systems are
typically constructed (from a software point of view) that the GPL
licensed code practically never used if at all possible. Since his
webserver (which could be compiled for standalone use) was meant to
be used in embedded systems (and it was quite easy to embed into
larger programs), he was willing to offer the code under a different
license to those companies so interested. The other programmers
that helped him in this (myself, one other, and a few people that
provided a few patches for various real time operating systems) were
okay with this.
[3] With some help. I mainly helped with interpreting the HTTP spec [4]
but did write a bit of code (MD5 hash, some date-manipulation
routines, and making sure his code could understand HTTP/0.9
requests).
[4] HTTP/1.1 - RFC-2616
Authentication for HTTP/1.1 - RFC-2617
[5] Not that I have a problem with him doing this---not only did he fund
the development himself, but I did get paid for my work, along with
the other developer that helped him.