blogstrapping

Zed Shaw Is Not My OSS Friend

Zed Shaw writes open source software. He seems very proud of this fact, and demands respect for it. He also gives others little or no respect that most of us can see (though I am pretty sure he probably does so in non-prominent ways that he could use as a counterargument). He uses contradictory reasoning to disagree with others, and gets indignant at the disagreement of other people.

As I recently said about the man:

He says some smart things sometimes (laced with profanity), but also says some monumentally stupid things. I think he's a classic case of a strong-personality smart guy who outwits himself, and ends up not actually examining his own assumptions enough to avoid coming off like a clueless jackass sometimes.

Let us examine the situation in a bit more depth.

This will go in your permanent record.

Zed Shaw was once famous as the creator of Mongrel, a Web server written in Ruby. He then became equally famous for blowing up at the Ruby community and excusing himself from that community's company in some kind of epic hissy fit. Over time, he has developed a number of rants, screeds, and hissy fits that are every bit as abrasive as one of Rails creator DHH's conference presentations, but less technically oriented and helpful for actual coding. His fame has gradually shifted from recognition of his work on Mongrel to recognition of his abrasive personality and sense of entitlement.

One of the more entertaining things he has created is Programming, Motherfucker -- Do you speak it?, which is in general hilarious (in a good way) and full of good ideas he took too damned far, to the point of denigrating other good ideas and dismissing them out of hand with profanity laced scorn. Basically, it's a good rant that went a little too far -- without which, of course, it would not be as fun to read.

More recently, he wrote Why I (A/L)GPL, in which he attributes much of his notoriety in the Ruby community to his use of a more permissive set of terms for distribution than he now prefers:

I wrote Mongrel and then gave it away, on the hopes that it would help a bunch of other people, and that giving it away would come back to me in some way. Maybe a job, or some respect, or hell maybe my own company doing more software like it.

. . .

After Mongrel I almost need companies to have to admit they use my software. I would actually rather nobody use my software than be in a situation where everyone is using my gear and nobody is admitting it.

Or worse, everyone is using it, and at the same time saying I can't code.

He goes on to complain that "Programmers Are Plagiarists" (direct quote, including capitalization):

You take the software, and use it like Excalibur to slay your dragon and then take the credit for it. You don't give out any credit, and in fact, I've ran into a vast majority of you who constantly try to say that I can't code as a way of covering your ass.

This all seems to add up to basically a strong sense of entitlement and hurt feelings over the fact that he's not lauded as a hero. He's so emotionally injured by all this that he goes so far as to call the world's programmers (by implication, including me and probably you) "plagiarists". For the record, I've never used Mongrel for one of my projects, and if I had I would give him credit for producing something I found useful (most likely just before saying that he may be a good hacker but would probably make an awful employee). Maybe I'll use it in the future. Maybe I'll use (or write) something else, just to avoid the taint of his karma.

This is not really about his record with Ruby, or about his hurt feelings over Mongrel, or even about his decision to use the LGPL, GPL, or even AGPL (egad!) for future projects to try to force people to give offerings at his temple. This is about his passive-aggressive attacks on people who disagree with him all while claiming everyone who writes open source software should be singing songs together around the campfire.

Freedom and courtesy go hand in hand.

More recently than all the above, he wrote Is BSD The New GPL?. In it, he starts passing out a ration of shit to people who find his recent licensing behavior objectionable. He quoted a couple of "tweets" to kick off the party, and identified what he sees as an inconsistency in their reasoning:

@jacobian @zedshaw Django uses the BSD, so Lamson can ship an example of Django integration. Lamson's GPL means Django couldn't ship w/that same code.

@jessenoller @zedshaw The problem with you using the BSD code with GPL'ed code is that the BSD'ers can't reciprocate. A company using the code can.

Wait a minute, is this some kind of trick? I thought BSD was all about "true freedom" to use their code? When did they start getting pissy about people not returning the favor? I thought that whole "viral" thing was why they hated the GPL? I guess I'm not in Lawrence, Kansas anymore.

What I'm seeing is the following double standard among BSD license users:

  1. If you are a commercial company like Apple or Google then BSD licensors love you and want you to have "true freedom".

  2. If you are a GPL project, they pressure you into releasing your code BSD licensed and get offended because you use their code.

Of course, the situation is nowhere near that simple. Only someone who has never stopped to think about why someone with different motivations might choose to use a copyfree license would come to the conclusion that things are as Zed describes them, I think. For instance, even if we go with the most simplistic interpretation of a principled choice for using copyfree licenses, as he has, we should consider the consequences of that choice, which include the fact that "freedom" is a matter of universal rights -- which are still violated by people who claim to be all about freedom but restrict that of other people.

The people whose "tweets" he quotes are referring to a very simple fact that he appears to overlook willfully. He replied [1] to one of them thus:

I find it funny that people cry it's not fair I use the GPL and use their BSD software, but then don't cry when a company uses their gear.

My analysis of the situation, and specifically the essence of what both @jacobian and @jessenoller were saying, was passed along to Zed Shaw in this form:

@zedshaw -- It's not that you don't reciprocate; it's that you demand reciprocation, but hypocritically deny others the same consideration.

He also seems to completely miss the fact that a business using copyfree licensed code in a proprietary codebase can still contribute back to the original project, where the code can still be used in that project under its own license. A GPLed project, on the other hand, establishes a licensing bubble from which nothing can escape, including back to the original project.

Open source Atheros wireless network driver development ran into a similar problem a few years back, where a huge brouhaha erupted over the fact that development on these wireless drivers within the Linux community was being distributed under the terms of a copyleft license, thus preventing that development from going back into the codebase of the original driver project distributed under a copyfree license. When the dust settled, some GNU/copyleft partisans essentially ended up apologizing and ensuring the original, copyfree Atheros driver project got the code under friendly license terms after all. The bad press was evidently enough of a deterrent to the maintenance of GPL lock-in, in this case. Zed Shaw, on the other hand, seems immune to such opprobrium, just assuming it is a consequence of everyone in the world but him being the asshole.

When all is said and done, it just seems a bit hypocritical to many that someone (like Zed Shaw) might launch a protracted whine onto the Internet, belaboring the demands for reciprocation and credit that he seeks for the code he writes, then specifically sets out to write code that implicitly depends on copyfree licensed code and licenses his code under a copyleft license so that the original project can never make use of it at all. Obviously, people find his projects useful, or they would likely not give two shits about it -- but they're also obviously annoyed that he refuses to let other people use his code in the same contexts where they use the project on which it depends, especially given the hypocritical nature of the demands vs. what he himself gives others.

"Don't lecture me on freedom while denying such freedom to me," in other words.

Define "friend" for me.

At the end of his Is BSD The New GPL? complaint, we find a section entitled We're All OSS Friends Here. He opens the concluding section with a statement of his scorn for those who have differences of opinion about licensing:

There's a deeper problem here than just GPL vs. BSD. First off, I don't believe in idiotic dichotomies like this.

That does not seem very friendly, but it might be justifiable as part of a statement that we should all be friendly with each other, and this is an "idiotic dichotomy" that keeps us all from getting along. Okay, taken in a vacuum, I guess that makes a certain amount of sense. It utterly ignores the good reasons some people disagree on license choice, of course, but so far it serves as a statement of his position, which is fine. It is good to know where he stands.

Next, however, he goes on to set himself up as specifically sitting on one side of the "idiotic dichotomy" he identified (which, incidentally, makes him one of the idiots, by his own implicit definitions):

The real problem here is that a bunch of people who give software away get mad at other people who give software away because of some retarded difference in their interpretation of "free".

He appears to just want to impose a particular set of principles on the community of people who prefer copyfree licenses as their sole motivation for preferring them -- principles that create for him the perfect opportunity to treat them and their code exactly the same way he claims he and his code were treated by others, prompting him to choose GNU licenses instead to enforce recognition of his heroic contributions to the world. He wants people to release things under one of the several BSD Licenses if they want to, but to then be happy that he takes their code, uses it, redistributes it, builds things on it, and specifically excludes them from any recognition or reciprocal technical support that might arise from his dependence on the technical support of their projects, and what he builds with the help of that dependence.

If he did not demand from them things he is unwilling to give them, the people involved in those projects would probably be less annoyed by his behavior.

The very next thing he says is:

For fuck's sake, we're both on the same damn side! Petty squabbling over bullshit like this, and even worse doing it in such a contradictory way, is stupid. This kind of useless bickering doesn't help promote excellent software and "freedom" to express yourself with code.

I think he means "'freedom' to express myself with code", because -- as he seems to have missed -- he is refusing to allow those original projects to adhere to their own licensing standards while building on what he has made. If you want to keep the code to yourself, go ahead, but please do not presume to lecture me on how I am not supporting your freedom to express yourself with my [2] code by pointing out that you have not given me the same consideration.

Finally, he wraps up with this gem:

Because, I am releasing my code for you to use, unlike most of those corporations you seem to love.

Some developers of copyfree software certainly choose copyfree licenses because of principles that involve support of corporate business endeavors, just as some developers of copyleft software do. In fact, copyleft licenses are often used precisely because of their usefulness in the effort to create and maintain anticompetitive advantage over other organizations and open source development communities while at the same time reaping some of the benefits of open source development.

Are you familiar with "open core" development? That's where the core of something is distributed under an open source license, but extensions to it that make it actually useful to a much greater degree can only be had at great expense, supporting the corporation's business model. Copyleft licensing is far more useful for this development model because competitors cannot create similar extensions and keep their source closed. Only the owner of the copyrights for the copyleft components are able to fully take advantage of that business model.

One might notice the "open core" model sounds strangely similar to what happens to the licensing situation of a copyfree licensed project when someone starts developing copyleft extensions to it. You get a "copyfree core" project, with a more restrictive copyleft model of development based on copyleft principles.

Dear Zed Shaw:

You create a licensing trap with your extension code, so that people have to decide between reimplementing what you have done in a pseudo-cleanroom environment, giving up their own licensing choice, or simply doing without the opportunity to build on what you have created. For those who have the luxury of the time and other resources necessary to undertake the first option, that is surely the most palatable, and the last is a common choice as well. Those who choose copyfree licenses are unlikely to choose the middle option, unless compelling practical need overrides the concerns that prompted them to choose a different licensing model than you in the first place.

For those who do not choose to just drop their own licensing preferences in favor of yours, the difference between your "contributions" and you never having "contributed" at all is only that you are effectively making sanctimonious demands on the contributive spirit of others -- demands that you, yourself, would not similarly choose to fulfill.

That does not sound very friendly to me. You are not my "OSS Friend", Zed.

Notes

  1. It appears that he has somehow ensured I do not have access to his Twitter commentary on this matter any longer. Twitter keeps telling me I am "not authorized to see this status". Maybe he deleted it, or maybe there is something else going on. I am not a Twitter expert by any stretch of the imagination.

  2. Well, not exactly my code. As far as I'm aware, he has not used any of my code. I'm just sympathizing with the people whose code he has used, here.