When you’ve got open-source software available under a permissive license with multiple companies trying to make money off it, an eternal concern is fragmentation. Fragmentation of standards, of APIs, of implementations, that either contribute to long-term unmaintainable codebases or to customer confusion and desertion, much like what happened with UNIX. It’s not unique to computing; even in supermarkets, when people are given too many options, they’re more likely to walk away than to purchase anything at all.
In the vast majority of cases, however, companies around a piece of open-source software — particularly infrastructure-level software — aren’t interested in making money directly from the software. Instead, they aim to profit from a host of opportunities surrounding the code itself: support, professional services, proprietary differentiation on higher layers, and so on. A rare exception is the dual-license model a la MySQL or ownCloud, where you can purchase a proprietary license to the same (strongly copylefted and corporate-owned) codebase so you can build closed products by modifying it or building upon it.
In my opinion, the Affero GPL (AGPL) has always been an underappreciated license. Its goal was to require that even when software was provided as a service, the underlying GPL code would still remain open. Unfortunately, it never really took off to the same extent, in part because SaaS tends to build upon permissively licensed software, if it uses open source at all. Nobody wants to give up their opportunity to differentiate, but the GPL will follow you all the way up the stack and force it all to be open.
With those dual and seemingly opposing forces in mind, what I propose would solve many of these problems is an Affero LGPL (ALGPL). Code using the LGPL, unlike the GPL it’s based upon, must stay open itself while allowing other code that links to it to stay closed. This provides for the potential of a forcibly open infrastructure stack that still enables companies to differentiate at higher layers. It means companies would be free to build products on top of it as long as they returned any modifications only to the ALGPL codebase itself.
Here’s a concrete example: If you build an OpenStack cloud, then add additional proprietary standalone components to that cloud, you’re good — even if they link to ALGPL components. Feel free to make money all day long. If you modify existing components, you need to return those changes (if you’re providing any externally facing services). As mentioned, this will have the benefit of reducing fragmentation without preventing differentiation in interesting ways.
I received strenuous responses to an earlier piece suggesting that people generally get why they should contribute back to open source, so here’s an alternative. For people and businesses new to open source, provide fences so they can’t work contrary to their own long-term interests.
What do you think?
Disclosure: Rackspace is a client. Oracle and ownCloud are not clients.
AGPL is usually about free riding, not fragmentation or adoption « Luis Villa says:
October 9, 2012 at 10:00 am
[…] other licenses don’t share. Maybe there will be more confusion if/when someone drafts another Affero-style license, but it doesn’t appear to me to currently be an issue. (By way of contrast, the confusion […]
Bradley M. Kuhn says:
December 14, 2012 at 8:45 pm
I’m months behind noticing this post was here. As the inventor of the Affero clause and a co-author of AGPLv1 and AGPLv3, I can tell you that I’ve been taking these calls for a Lesser Affero GPL seriously. The drafting problem, though, is harder then it looks. I’m working with my colleagues over at the FSF about it. Get in touch if you want to help.
My1 says:
April 23, 2018 at 6:38 am
I totally agree. which is why I wrote my own license, based upon the Ideas of the LGPL and the AGPL.