As hosted development platforms become browser-accessible, new issues will arise regarding freely sharing source code among developers. Bungee Connect’s most recent update (April 20, 2008) introduced its first (and still very early) version of a source code share. This creates a hosted code repository for Bungee Connect developers, and opens a raft of questions about the future of Free Software licenses in the age of hosted development.
Allow me to outline three code-sharing scenarios, and provide some thinking on how current open source licenses might fit:
- Importing shared open source code would allow you as a developer to import another developer’s source code into your own code.
This scenario could mandate that your code must now be contributed back to the original developer. For example, if the code was made available to you under the AGPL, then even without distributing the code, you are obligated to do so. However, if the imported code was made available under the GPL, then you likely don’t have to contribute the code back unless you do something to re-distribute the code you received from the share.
From my reading of the GPL, it is specifically triggered when you “convey” the software you make with GPL-licensed code. (This was coined by Tim O’Reilly as “the SaaS Loophole.”) However, if you were then to share your own code that included the GPL software, you would be bound by the terms of the GPL to share your code under the same license. (For both GPL and AGPL code, this might get messy if you have also imported code that was shared under an incompatible licenses. But that’s nothing new in FOSS licensing, is it?)
- Linking to shared open source code would allow you to make modifications to shared code separately and independently from whatever project you are working on. Essentially, you would be able to modify the shared code as you need, and then link to it like a library.
It appears that there is no FOSS license that has considered this scenario! Because your application is hosted, you never “convey” your software to another party, so the GPL and LGPL don’t get triggered. On the opposite extreme, the terms of the AGPL would be applicable, as mere access to the software (rather than conveyance) applies. So, even by trying to insulate your code from the AGPL-shared code, you would still be bound by its terms. There is no Affero version of the LGPL–probably because this scenario has not been considered until very recently.
- Linking to shared proprietary software would allow you to use another developer’s software without any access to its source code. Like a Windows DLL, you can use its APIs, but cannot modify its functionality.
This scenario is certainly an option that many developers would want, but it’s really not that relevant to the FOSS licensing discussion, so I’ll leave it at that.
Is there need for an L-AGPL?
Likely, the most free way of sharing your code in a cloud-based code repository would be under a license similar to the BSD license, which allows other developers to take source code, use it, and modify it without an obligation to provide those modifications. Some developers find the BSD terms too liberal. If I share the software, I’d like for people to at least provide their fixes back so that I can benefit from their work as they have from mine.
The AGPL, on the other hand, may seem too draconian for some developers. I want to share my code under license to enforce the submission of fixes, improvements and extensions to my original code, but
I don’t want to force other developers to open the code for their entire project just because they included my code as a component. The AGPL would do that. So other developers may forgo using my code because I shared it under a license that is too viral.
Sound familiar? It should. It’s the same reason why many FOSS projects choose to use the LGPL instead of the GPL. But at this time, there is no L-AGPL (or A-LGPL).
What are your thoughts or insights? Are there places where my understanding of the licenses is incorrect? Is there a need for an L-AGPL? If this seems an issue exclusive to Bungee Connect only, why do you think that?