After I suggested that I might use AGPL for my Cassandra filesystem, somebody asked why I would choose that particular license. I answered briefly in a comment, but I think the subject deserves a fuller explanation.

First, I’ll try to explain what AGPL means from my perspective. The basic intent of GPL generally is to ensure a healthy “commons” of software anyone can use free of charge. It does this by requiring that people who use distribute software based on GPL code make that code, including their own modifications, available to others. Unfortunately, the way GPLv2 was worded, this did not cover the case of the GPL software being used to provide a service. The code itself never gets onto users’ machines (this makes me wonder in the case of Java bytecodes and such) and thus the requirement to publish never gets triggered. Many companies have taken advantage of this loophole, but I feel it violates the spirit of the license under which they received the code. Even though I have historically considered GPL-style licenses to be anti-profit and have preferred BSD-style alternatives, I appreciate the efforts Affero made to preserve the intent of GPL more than GPL (v2) itself was doing.

My preference for BSD-style license was also predicated on a belief that most people would try to do the right thing even if they weren’t required to. Unfortunately, that belief has been weakened over time. The final nail in the coffin was a recent case when someone I follow on Twitter claimed that a particular piece of software had the “worst possible licensing” which precluded using it. He said that AGPL would force him to publish all of his own code – a lie explicitly contradicted by the AGPL text itself – and that dual licensing was a “bait and switch” tactic. I wonder if he yells at the free-sample folks in the grocery store too. What’s sadder still was the limited reaction he got. One author of the software in question correctly referred to his attitude as “captruism” – capitalism for what I want to sell, altruism for what I want to use. Kudos to him. Others who should know better – people who have historically taken a more aggressive stance than I have on software freedom, and who have pressured me to release my code before it’s even usable – not only remained silent but continue to aid this individual in his effort to promote himself and profit from the work of others. You know who you are. Shame on you. Saddest of all, this is not an isolated case. This combination of “aggressive freeloading” by some, aided and abetted by others’ apathy or bought silence, is quite common.

Here’s the thing: I actively want to prevent such people from using my work, even if that means I forego some chance to profit along with them. Consider it an example of the Ultimatum Game; even ignoring other considerations, I might use AGPL as a deliberate goad to those who have expressed antipathy toward it. To answer the facile but inevitable counterattack, this is not because I despise wealth creation but because I value it. Monetizing others’ code is not stealing – I’m not that kind of extremist – but it’s not wealth creation either. It’s conversion of raw resources into refined ones, and an abundant pool of freely available software representing all kinds of innovation is an essential resource for software-related wealth creation. If those who profit from it fail to replenish the resource pool, that’s in the same category as overfishing or strip mining and I don’t condone that sort of thing. There is nothing in AGPL to preclude somebody else taking my code, combining or aggregating it with their own innovative code licensed however they want, and profiting from the result. More power to them, but if they modify my code then yes, I darn well want those changes contributed to the commons even if they’re hidden behind an online service. Don’t strip-mine other people’s property.