Wednesday, July 15, 2009

Gah! Up is Down! Right is Wrong! Make it Stop!

Today, some programmer named Zed Shaw wrote a blog post titled Is BSD The [sic] New GPL?. The crux of his article is that because a few people have, dog forbid, proselytized for the BSD license and tried to get some other projects that are currently using the restrictive GPL license to switch to the BSD license because the viral GPL license prevents code from flowing equally in both directions between the projects that, therefore, the BSD license is now just as bad as the GPL.

What... the... Fuck?

Because a few people suggested that, hey, maybe you guys would consider dropping some of those restrictions on your code so we can all, like, share equally, Zed Fucking Shaw thinks that's exactly the same as a viral license that puts restrictions, in perpetuity, on the code you write as well as on all derivative products, and any code that happened to have been stored on the same hard drive as your product for a little while1. I'd expect anti-logic like this from a marketing executive, lawyer, or clergyman, but not from a programmer. This is a pathetic excuse for logic. It's Orwellian logic. Right is wrong. Up is down. It's not missing the point, it's closing your eyes and screaming "nah-nah-nah" so you can claim you're unaware of the fucking point.

Now, I'm a big fan of openness. Almost every line of code that I've ever written that wasn't written specifically for a client or employer has been released in some form, either under a liberal license like the BSD or MIT license or simply given out as public domain code2. But I have not used and will not use the GPL. In fact, when people ask me if they can include code I've written in a GPL'd project (which they don't have to do, so I do appreciate the gesture) I always grant permission, but specifically request that they document the fact that my code is not covered by the project license.

I'm not a fan of the GPL quite simply because I don't see the GPL as "open". The GPL is not defined by what it is, it's defined by what it isn't. It's "against" proprietary closed source code. It's against corporations. It's against software as a commercial product. It's all about what it's not. It's a political movement replete with a manifesto. No joke. A fucking manifesto. The GPL is about openness in the same way that Stalin was about peace and kindness. And you know what? I don't want my code tied up in a political movement. If I want to share, I'll happily share with no expectation of a direct return. If I don't want to (or can't) share, I won't publish my code.

Sir Isaac Newton uttered a very famous line long ago in what is one of the greatest displays of modesty ever recorded. He said, "If I have seen further it is only by standing on the shoulders of giants." And that modest statement sums up the way science, and all meaningful pursuit of knowledge works. Knowledge is expanded when it is shared. When solutions to problems are shared, that frees us up to tackle the next obstacle rather than spending time solving problems that have already been solved by others. Which, if you read their propaganda, is exactly what the GNU foundation people think they believe. But anyone who has actually read their license terms knows that obviously they don't, because you can't reconcile that with the viral restrictions in their licenses. If you truly believe that knowledge is not a zero-sum game, and that sharing knowledge tends to increase the sum of societal knowledge, then you don't go putting petty restrictions on your knowledge.

Sometimes, when you fight fire with fire, all you get is a bigger fire and you certainly don't put out a fire by loudly exclaiming that water is the new fire.

1 - Okay, I'm kidding about the last one.
2 - Well, that's not completely true. I also don't release code that I know is bad because I don't want people copying or learning from code I know has serious problems.


Steven Fisher said...

Man, you just said it even better than Daniel.

Jeff LaMarche said...

Thanks man. That's high praise.

Spaced Cowboy said...

I've released code under GPL, under BSD, under public-domain, and sold commercial software for a living. I'm leery of the GPL for exactly the same reasons you are, though I think you'll get a few ... robust... comments on your stance :)

The reason for commenting though, is to point out that Sir Isaac Newton, great man that he was, was also a bit of a git. That famous phrase you mention was written in a letter to Robert Hooke - one of Newton's greatest rivals at the time, and Hooke (he of Hooke's Law fame) was a man of very short stature.

What Newton was *actually* saying, in a meticulously polite put-down was "nothing you have ever done has been of any worth to me". Git :)


Jeff LaMarche said...


I expect some lively discussion. Zed didn't allow comments on his post, or I would have happily started the discussion over there.

Can I ask what your source for the Newton context is? The metaphor actually goes back to before Newton's time and originated as nanos gigantum humeris insidentes (dwarfs standing on the shoulders of giants), something that Newton was almost certainly aware of. In the context of Newton's letter, the quote comes directly after (and as part of) a compliment on Hooke's work, so I'd have to say that if it was intended as a rib, it was an exceedingly subtle one indeed.

That's not to say that Newton wasn't a git. Many really smart people in history have been.

Spaced Cowboy said...

The source was my Physics professor at Cambridge. Although the public record has them being generally amicable, the history we were introduced to at Trinity was rather more acidic and both parties gained from gentrification over time.

Hooke *had* just accused Newton of copying his work, without accreditation after all. There was a bit of a public spat, followed by a general love-in. It's the general love-in that gets publicised...

I know the phrase goes back a long time before Newton used it, and it was in common usage at the time, but since Hooke *was* what would have been called a 'dwarf' at the time, that just makes it more likely, IMHO.

From what I was led to believe, Newton was a pretty poisonous character in general; I just don't really see him doling out compliments like that... In any event, History (suitable capitalised) has adjudged him humble and gracious, so who am I to argue - it just amuses me, that's all.

LKM said...

Yea, Zed Shaw is obviously wrong, but l don't really get this whole recent anti-GPL movement. It's just a license; use it if you agree with it, don't use it if you don't agree with it. Just like the people who use a share-alike CC license, some programmers don't want their code to be used by people who don't want to publish their modifications; yet I don't see a ton of "CC share-alike is not about openness" articles.

Share-alike is okay for pictures, but not for code?

To me, that feels like saying that pictures somehow have more creative value than code. It's okay to be protective of pictures, but not code.

I don't release any of my code under the GPL. In fact, most of my code remains closed. Where are all the "knowledge is expanded when it is shared" articles about closed-source code? Most of us would call such articles "zealous", yet it's okay to write them about the GPL, as if programmers were somehow wrong to release their code without wanting others to profit without sharing. At least the people using the GPL are releasing their code.

I guess I just don't really understand the point of all these anti-GPL articles. What's wrong with programmers releasing their code, but not wanting their code to be used by entities who won't publish changes? Yeah, I can't use it in my projects, but then, I can't use closed source code, either. And I'm glad there's stuff like gcc and the Linux kernel I can at least use as an end-user, and contribute changes to.

Neil J. Patel said...

I think GPL has it's place and works for a lot of the free software community without them having to resort to religious-status about it.

I'm lucky enough to be paid to write free software, and much of my code is licensed GPL or LGPL. Personally, if I'm doing anything special, I do try and write that component as a library and license it under LGPL, as it's always nice to see companies as well as other developers using your software.

That said, a lot of people write their code in their free time and the very least they want from that code is the ability to see where it ends up and how it evolves, and I think the GPL serves its purpose there.

There are a lot of us in the Linux world who don't have OTT views on the GPL, it's a license and serves it's purpose. You get a lot of projects adding clauses to their GPL license which explicitly allow proprietary plugins etc.

One thing that's interesting is the Free Software Foundation's stance on web-services etc, and the circus of GPLv3, may cause normal developers to move towards a more stable license. For instance, the often used 'and later' from the GPL header seems to be going out of fashion, with developers not as sure as what 'and later' will stipulate in the future.

chuckfletcher said...

Zed Shaw is officially a "crank". He is a talented programmer, but quite a prickly pear. See This earlier article alienating the Rails community:

Thanks for the interesting response. BTW - I'm looking forward to meeting you at the iPhone classes in NYC!

Chuck Fletcher
@chuckfletcher on twitter

Scott said...

"What's wrong with programmers releasing their code, but not wanting their code to be used by entities who won't publish changes? "

The biggest problem I see with the GPL (and I'm new to programming so feel free to take that into consideration) is that it fractures the Open Source Community like the tower of Babel story. I certainly believe that people have the right to release their software under any terms they choose, but also believe that the GPL is ultimately a hinderance to its own mission of trying to increase the availability of open source code. Instead of people working together on projects, you have the splintering of effort in many parallel directions separated only by ideology--it's something every programmer hates: inefficient.

Heath said...

I'm not involved in any communities containing or formerly containing Zed Shaw, but I've read a couple of articles mentioning him, and a couple of his posts, and I gather that his has a reputation for being an ass.

That said, I really don't understand your point at all. You're ok with companies potentially using BSD software and never releasing the source or even mentioning the origin of the source (as required by the Apache License). You're not allowed to collaborate with Apple on the iPhone OS, but they might be using your BSD code inside it. However, when Zed utilizes your BSD code inside a GPL project you are disappointed.

This seems like an unfair double-standard.

Randal L. Schwartz said...

I believe in the choice of an author to choose the license they want for the code they create. As an original author launching a project, I might choose the GPL, or I might choose something in the BSD/MIT/Apache/Artistic camp ("BSD" family).

It's important for me as an author to know the consequences of choosing either license. While the GPL license will ensure that each modified version of my code that is in turn redistributed will clearly come with source code, it does indeed limit the opportunities for people to use my code to only those circumstances.

A license like the BSD license is far more "commercially compatible", and will find a far greater use of the code. Admittedly, some of those uses will include locked-up source code, but in general, the rising tide lifts all boats, and I suggest there will also be *more* open-source uses as well. And if the point of sharing the source code is to get it widely used, the BSD license makes a strong argument.

Finally, just as I support the original author the choice of GPL or BSD, I also would suggest that I support the *additional* authors their *own* choice as well. And this is the problem with the GPL license: it applies to all additional contributions, putting the *first* author in a *special* position that takes away some of the rights of later authors to choose their own path. People choosing the GPL for a project are also taking away authorship rights from future contributors, and need to understand that.

Cheesily summarized, I'd use the GPL if I could never trust the users of my code to do the right thing, and I'd use the BSD family if I trust them to do the right thing as often as they can. I prefer to live in a world of trust, so more often than not, I use the BSD license family, and encourage others to do so as well.

sheldonh said...

Great input, Randal.

Even in licensing, pragmatism is the way. Recognize that licenses are tools, and appreciate that different problems are best solved with different tools.

As a side note, all this "viral license" business is silly. All licenses _must_ be viral, because of the relationship between licenses and copyright. Copyright is viral.

I remember the first time someone presented this idea to me. I knee-jerked, but couldn't for the life of me argue it down. :-)

itsolusenz said...

Hi Friend,
Congratulations for this nice looking blog. In this post everything about Web Development. I am also interested in latest news, sometimes i posted on Customized application development

pbsl said...

thanks for sharing this site. you can download lots of ebook from here