A Cloudy Future

One of the things about getting older is that you learn to ignore things until you have to do something about them. It's a learned efficiency I suppose, rationing your increasingly precious time out to the unceasing demands upon it. I finally realized I have to do some serious thinking about cloud computing.

"Hang on a minute, don't you work at Google ?" I hear you say. Well yes, but in my defense many of the people who work at Google don't have anything to do with cloud computing. Some of us have to keep the conference rooms clean, write Open Source/Free Software, things of that nature.

But several recent events have stirred my aging brain into action. A couple were colleagues of mine leaving their current, extremely stable employment to join increasingly risky cloud computing startups. That's not so strange here in Silicon Valley, I remember some wacky people leaving nice safe enterprise computing jobs to go do something strange with "Web 2.0" startups, and look how that turned out. One of them drives a Ferrari now (but he always was a bit of a show-off). The third was from a rather more unlikely source, the Free Software Foundation's (FSF) annual General Meeting, LibrePlanet, held in Boston, Massachusetts.

I was fortunate enough to get invited to give a keynote there, as a sort of comic relief whilst people were waiting for Richard Stallman (the founder of the FSF) to turn up and articulate the state of the Free Software universe. I was in the middle of my talk, "The Elephant in the Room: Microsoft and Free Software" busily pontificating about Microsoft's nefarious plans for dominating the Web and software as a service when I got heckled.

It wasn't any ordinary heckler either, it was Bradley Kuhn, the former Executive Director of the Free Software Foundation. Fixing me with a steely glare, he said "So doesn't this mean that the GPL is the new BSD license and that Google is the new Microsoft ?" I must confess I was a little non-plussed.

I'll answer the second charge first, then explain the first. Without speaking on Google's behalf, my opinion is that companies, however large they become, tend to keep the character of their founders so long as the founders are still there. Google is still led by a couple of computing science graduates from Stanford University and one of the old school Sun Microsystems executives. Whilst they are around I have no fears of looking in the mirror and seeing a hazy reflection of Clippy the talking paperclip. Funnily enough there is finally hope of change at Microsoft for exactly the same reason.

So what did Bradley mean by "GPL being the new BSD" ? The GNU General Public License (or GPL) is the most popular Free Software license. It's a reciprocal or "copyleft" license in that in order to be allowed the right to redistribute the software (normally forbidden under copyright law) the distributor has to agree to make the source code available to the recipient under exactly the same terms. In other words, share and share alike. The main point of the GPL license is it is impossible to use it to create proprietary software. It's deliberately designed that way by a man who views proprietary software as immoral. The Berkeley Software Distribution, or BSD license is a much simpler document. Essentially it allows anyone to use the code without restriction, so long as the copyright notice and disclaimers of warranty are preserved. The main difference between the two is that BSD licensed code is freely used in proprietary software (Apple's proprietary MacOS X is based on BSD code), whereas the GPL is designed to ensure all derivative works remain Free Software.

But the fatal flaw in the GPL is that the reciprocal clause is only triggered by the act of redistribution. This works well in the world of traditional software, where in order to use a program it must be directly distributed to the recipient. Under the GPL that person then inherits the same rights to the software source code as the distributor had. But now consider the strange new world of cloud computing, and software as a service. The way software works in this world is completely different. Most of the complex logic and the actual programs themselves live as software only running within server farms, communicating solely by network requests sent from a client Web browser via downloaded javascript programs.

There is no "distribution" here, so the reciprocal clause of the GPL is never triggered. In such a world, service providers can use GPL licensed code in proprietary back-end server farms with impunity. This seems contrary to the spirit of the authors of much of the GPL licensed code used in this way, although it strictly complies with the license. It means that, as Bradley warned, GPL code can be used in the cloud computing market in exactly the same way as BSD code can be used in the traditional software market.

So what can be done to fix this ? Should anything be done to fix this ? After all, traditionally distributed software is still the majority of software used in the world, so why worry ? The FSF think they have the answer, and so in conjunction with Affero, they created the Affero GPL license (AGPL). Affero is a company who write network software used in the software as a service world and who firmly believe in the concept of software freedom as espoused by the FSF. The result was this creation of a variant of the GPL to cover this important new threat to Free Software. The current AGPL is a version of the GPL version 3 (the current standard GPL version), with one important addition:

"..if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software."

In other words, when you interact with this software running as a service in the cloud, you must be able to get the source code, just as you would when receiving a normally distributed GPL licensed program.

For network services running in a cloud, this brings back the fairness provision that the original GPL intended, and returns the freedom that Free Software promises to all users and developers.

Currently the AGPL is a minority license as compared to the GPL. Not much Free Software is currently written directly to serve cloud computing network services.

But cloud computing is going to change the industry in as profound a way as client server did in the late nineteen eighties to nineteen nineties. The ability to easily provision and scale up software services based on the Free Software LAMP stack (Linux / Apache / MySQL /PHP or Perl or Python) or more modern fare such as the open source Java software framework Hadoop is going to massively change the way software is developed. Of course at my day job, it already has for many of the engineers.

Even old fogies like me are going to have to learn some new tricks in this world. Free Software is going to have to adopt as well. I still have lots of Samba code to write first (no, Samba isn't a finished product yet), but if I ever work on cloud computing code, I'd like to see it under the AGPL, in order to preserve the freedoms I've been able to enjoy in conventional software development these many years. Without the AGPL, our freedoms will depend on the kindness of strangers donating their modifications to our code back to us, as they did in the days before the GPL license and the FSF was born.

The LibrePlanet conference also had some very interesting sessions on Free Software Web services, run by the people behind http://identi.ca and http://autonomo.us/. Check them out to learn more about Free Software network services and cloud computing.

Jeremy Allison
Samba Team.
San Jose, California.
5th April 2009.


on Affero

I did not know about the Affero GPL. Excellent info!

Who is software for?

From a programmer's perspective, Jeremy succinctly stated his case, and indeed, the Affero and GPL3 do stymie the use of software in such a way that no business out there in the real world can adapt these applications for their business, or would be silly to try. Business is all about a competitive edge and GPL3 and Affero suppress this notion superbly. For the history buffs here, that was one of Stallman's primary goals. The end result -- no knowledgeable business in their right mind would bother with software under these licenses, and if they did, they would rue the day.

This is why BSD/MIT/Apache licensed software has prospered and grown, while SourceForge.net is littered with the undead corpses of software that hasn't moved forward for five or more years. Businesses adopt Linux because they have no intention of changing it! In fact, most businesses prefer a slower development cycle. Same with PHP, Java, and most programming languages. Adopt, but not adapt. But when you get into business applications, the rule is adapt and not adopt. GPL harmonizes with the former, and BSD. et al harmonizes with the latter. Notwithstanding Stallman's political philosophy.

Re: Who is software for?

Of course, that is wrong on just about every score, and is a willful misunderstanding of how the GPL works.

There are a great deal more business apps out there licensed under the GPL than under the BSD/MIT/Apache licenses, and for very good reason.

The only possible reason why a company would see a permissive license as preferable to a copyleft license is because they wanted to exploit (resell?) the software without feeding back changes, which might also put them in a bind if they wanted to profit from ongoing improvements to the original codebase.

This kind of motivation might appeal to an Apple or a Microsoft, but most businesses and/or other end users just want things that work, and are happy to feed back bug reports and/or changes to the original tree. The software is there to help them get their job done, and is seldom the job itself, so they don't want the responsibility for its upkeep and maintenance. The license is in many ways an irrelevance to them so long as the software does what it says it does, or they know who to ask to fix it.

Stallman as usual got it right.

Excellent explanation

This was an excellent explanation of the AGPL in layman's terms, thanks!

Layman :-)

google's deafening silence on AGPL

Excellent article Jeremy on a very important subject but i haven't heard much from google on the matter.Has anyone else?

I think your too good for them Jeremy...they're very lucky to have you.

Back to top