Spring is Sprung

by Charles Miller on September 23, 2008

The news today, 190 days before April 1st, is that SpringSource has changed their policy for distributing patch releases. From now on, they will only be making patch releases available to non-paying customers up to three months after the release of the major version being patched.

  • Three months after the release of a major version of Spring, it will no longer have patch releases made available publicly
  • All fixes will continue to be committed to the public source repository and
  • paying customers will have access to later point-releases, but
  • those releases will not be tagged publicly

On the face of things, this seems more than a little petty. The most common reason for having an End of Life policy is to save money supporting old versions, but given these releases are being made anyway, how much time and money are you saving by not tagging something in CVS?

It makes more sense when you consider that the reasoning is not to save money but to make it. This decision is aimed at people like us1. People who who through the necessity of having to ship software can't keep up with the bleeding edge, and certainly can't afford to upgrade a major component of our application every three months, but at the same time haven't felt the need to buy enterprise-level support.

You can't begrudge people their right to make a bit of cash, especially when your pay-cheque comes from selling software built on top of their library. Still, it doesn't feel entirely right either.

I think the problem is that "professional open source" changes the language of open source software.

To a young open source project, downloads are king. You proudly proclaim on your website “Downloaded over 100,000 times this month.” People who use your software are your community, the reason for your project existing in the first place. And you know that some admittedly small percentage of those users will answer a few questions on the forums, or suggest a cool new feature, or even contribute a patch. Then when you quit your day job to run the project, the size of the community is what gives you a market into which to sell your support and consulting.

Then the language changes, often around the time the outside investors show up. The people who are downloading and using your software are no longer your community, they're the ones who are taking your code without giving anything back. They're the free-loaders. Or, to quote Rod Johnson in the Server Side thread:

SpringSource continues to expose our open source code, which costs us millions of dollars annually to develop. This policy does affect users who think that open source is a way for them to get extended maintenance of high quality enterprise software for free, without them lifting a finger.

You are doing work, and you deserve to get paid for that work especially if someone else is making a profit off your back. It's a perfectly valid point of view. It's the point of view behind every commercial software release. But it's the language of a commercial vendor talking about piracy, or a shareware author about why so few people register. It's a π radian turn from the reason you originally chose the Apache or BSD license for your project rather than, say, dual-licensing under the GPL.

The obvious response is a semi-fork. The source is still there and still Apache-licensed, so if the community is interested they can maintain an alt-spring vendor branch and tag off new releases themselves every so often. If demand for patch releases is high enough this will happen almost inevitably, so long as SpringSource keep their promise to keep everything in public CVS.

1 I do not speak for Atlassian.

Previously: A Work of Fiction

Next: Everything that is wrong with Facebook apps in one screenshot