Untangling licensing options to achieve better collaboration on free web software

The ‘loophole’

Lots of people write frameworks and plugins and libraries intended for use on the Web. A lot of that is FOSS. But, as everybody knows, free software licenses like the GPL lose their “virality” when used for the web, since you’re not giving away any software (which would then force you to make the code available), you’re just providing a service. As long as you don’t give away the software, you can keep your modifications nice and cozy inside your server, without anybody knowing about it, and it’s still all legal.

Less Sharing

Occasionally I’ve made small contributions to such software projects and I might eventually release some of my own. But you know, I like Linus’ tit-for-tat attitude, and I’d like to get back improvements from people who are using my web-related stuff.

Sure, a lot of people contribute back, as you can see on GitHub, even if they don’t have to. Some folks are just that nice. But, and I’m taking a wild guess here, there’s a large hidden part of users who make modifications and don’t give them back simply because it’s extra work making it look nice, maybe conforming to the project’s coding standards, removing private, company-specific stuff, etc., and the employer only cares that it works, not that it’s shared back. So a lot of potential hacking freedom mojo is lost due to time/budget constraints or just pure laziness.

A solution?

Apparently I’m not alone in thinking this, as the FSF wrote the Afferos General Public License (AGPL) specifically to cover this area, which was previously overlooked. Now you have to give back modifications on AGPLed code, whether you give away the code or just provide a service with it over a network. Great! Now I can make a Rails plugin and get back some contributions!

Small problem though: like the GPL, the AGPL is viral, and so the installation of a mere plugin would require the whole app to be open-sourced as well. Fat chance.

The same problem existed in the desktop world, so they came up with the LGPL, which lets you use the library in proprietary software, but forces you to give back changes you made to the library itself. Sadly, there’s no “ALGPL” equivalent for us web folks. So what now? Are we doomed to have our FOSS mojo drained forever into the gutters of licensing loopholes?!

No!

The solution!

While not as good as making an ALGPL, the clever FSF guys put a nice little linking exception in both GPLv3 and AGPLv3, allowing you to use software licensed under any of them together. What does that mean?

It means that now you, application developer, can take my AGPL plugin/library and use it on your app, which is GPL, and give me back only changes you make to my stuff.

Wait a minute! So you’re saying I have to license my code as GPL?! Kind of, yes. But since you don’t give out your code anyway, to the outside world it’s completely unknowable if it is indeed GPL or not. You just stick a LICENSE file in there with the GPL text and that’s it. Nobody has to know about it, and you don’t have to do a thing (and I won’t even check if the file is actually there). For the web, GPL == proprietary.

Sounds convoluted? Nah. It’s actually quite simple. Summarizing:

  1. Put the GPL text in a hidden file in your web app;
  2. Install my plugin/library;
  3. Change it around, make it better;
  4. Give me the changes.

That’s it. Since other people will also be giving me their improvements, you will also benefit, all of that while keeping your application nice and proprietary. Good, eh?

  • Share/Bookmark
  • The conveying part is exactly what makes it possible for you not to release the source code for App 3 (GPL). That is, of course, as long as App3 is a web application, for which you will not distribute any executable code. "The terms of this License will continue to apply to the part which is the covered work" means that you'll have to give back changes you make to the code from App1 (AGPL). "But the work with which it is combined will remain governed by version 3 of the GNU General Public License", and the GPL doesn't require you to give the source code *unless* you also give executable code. Assuming App3 is a webapp, the executable is only on your server, so only your server has a right to the source code. That's how I understand it anyway, but I'm not a lawyer.
  • pheonix
    I've been reading section 13 of AGPL v3 license.

    It is as under:

    "Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License."

    If I understand correctly, let there be an application App1 licensed as AGPLv3 and another Application App2 licensed under GPLv3. If I create another application App3 utilizing App1 and App2, then the part of App3 derived fro App2 are governed by GPL v3 and parts of App3 derived from App1 are governed by AGPL v3, only when we "convey the resulting work", i.e. convey App3. Now checking the description of "Convey" in terms and conditions section of AGPL v3 license it is stated as :

    "To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying."

    So the steps mentioned by you does not hold good. I beleive what section 13 of AGPL v3 implies is that we will have to provide source code for App3 as whole, but the reciever would have to treat the part of App3 derived from App2 as GPLed code whiel other parts of App3 as AGPLed code. But we cannot keep the source code of App3 derived from App2 closed.

    Please comment....
blog comments powered by Disqus