Web Services and open source libraries - licensing

BarsMonster picture BarsMonster · Sep 13, 2010 · Viewed 8.5k times · Source

Could you please suggest which are the well-known "open source" licenses allowing me to use libraries under these licenses in proprietary webservice (accessible in Internet to the public), which I am not going to make opensource.

I am ok to state somewhere that I am using the library, and I am ok with sharing the changes I make in the library.

I guess GPL ones does not work here, as I am not going to release whole product as GPL, what are other options?

That's what I've found about Meebo & libpurple:

I have a licensing question. Do you guys feel that Meebo's use of libpurple is acceptable given the GPL status of the libpurple codebase? According to a post on the Meebo website, they feel that they are not required to release their source code because they do not directly distribute binaries to customers (since Meebo is a web application). The reason that I ask is because I am thinking about starting a project using the libpurple codebase and I'm wondering what the licensing restrictions would be.

And the libpurble developer replied that it's ok :-S

Also, I've found this:

The loophole referred to is that an “Application Service Provider” (hence “ASP”) gains the benefit of the freedom of a copyleft license, by running the program and (presumably) gaining whatever benefits come from having people access the running program across the network; but the provider can argue that they themselves are not redistributing the work as such, so they are not obliged to offer recipients the same freedom.

That says that we can use GPL v2 & v3 code in web services while we are not distributing the application itself (for example like google does). Is that correct?

Answer

Brian Campbell picture Brian Campbell · Sep 21, 2010

This wound up being a long answer, so for those who don't want to read it all:

tl;dr: You don't have to worry about running the code on your own server, unless the license is AGPL. You do have to release your source code if you use GPLed JavaScript libraries, but those aren't common. In some cases, it may be beneficial to release your modifications even if you aren't required to.

That says that we can use GPL v2 & v3 code in web services while we are not distributing the application itself (for example like google does). Is that correct?

Yes, this is correct. Many companies use their own modified version of GPLed code in-house, without having to distribute the modifications.

From the GPLv3:

To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

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.

...

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

This means that you have permission to use and modify the program on your own servers, even with users interacting with it remotely, without any of the additional conditions, such as providing the source code, that are required of you if you "convey" the program itself to another user. So as long as you are using it internally on your own server, you can run modified GPLed code to your heart's content without having to distribute the modified source to anyone else.

The GPLv2 also doesn't restrict running the code on your own server, and thus doesn't require you to distribute source code of your modifications, though it is a little less explicit about this case than the GPLv3 (which is very clear):

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

From the GPLv2 FAQ:

A company is running a modified version of a GPL'ed program on a web site. Does the GPL say they must release their modified sources?
The GPL permits anyone to make a modified version and use it without ever distributing it to others. What this company is doing is a special case of that. Therefore, the company does not have to release the modified sources.
It is essential for people to have the freedom to make modifications and use them privately, without ever publishing those modifications.

The AGPL is a license that is designed to require you to distribute your source code to your users, even if you are just running it on a server. It was created because the GPL does not provide such restrictions, and some people wanted such restrictions on their software. Not nearly as much software is released under the AGPL as the GPLv2 and v3, however.

Almost all free software licenses listed by the FSF, or open source licenses listed by the OSI also have no restrictions on running code on your own server.

Now, one thing to watch out for is that all of the above applies only to code running on your own server. JavaScript code, which is sent to the client and run on their machine, is entirely different. The GPL does apply in this case. Most JavaScript libraries (jQuery, Prototype, Dojo, MooTools) are released under permissive licenses (MIT/BSD-style), though be sure to check the license of any library you use; some people might release libraries under the GPL or LGPL.

Even if you are not required to release your source code, in some cases it may be beneficial to do so. In particular, if you make lots of modifications to a project, and then they release a new version, it might be a lot of work to go through and re-apply all of those modifications to the new version. If you instead send the patches back to the original project, and they think that your patches are good enough to apply, then your changes will be part of the upstream project, and any changes they make will include your modifications.

Now, if you're using a library, that reason might not apply to the code that is just using it, but it will apply to any fixes or enhancements you make to the library itself.

Standard disclaimer: I am not a lawyer, and this is not legal advice. If you need actual legal advice, please talk to a lawyer.