James Clarke & Notes

Thoughts on the GPL

Just some random thoughts while reading through Free Software, Free Society. Covering the GPL with web-services and unofficial distribution of GPL software.

Web-services and the GPL

How does the GNU General Public License (GPL) apply to an application that runs as a web-service?

Here the program running the web-service may never be released to the public and thus never distributed. The source code would never have to be released even though depended on GPL’d libraries or code. This is because the users of the system are not downloading the software, they are merely interacting with it via an API.

This allows companies or people to develop web-services using libraries that are available under the GPL without ever having to release the source code for their web-service software.

The Solution?

After a bit of research it looks like this has been thought of before. The Affero General Public License (AGPL) is basically a modified version of the GPL that includes the use of software over a computer network. Also from their FAQ it suggests that the next version of the GPL (version 3) will include this provision.

This still raises a few questions, when the GPLv3 is released, what will happen to software released under the GPLv2? Will all the current software that is licensed under GPLv2 be available under GPLv2 and GPLv3? As I understand you cannot revoke a GPL license, therefore people will still be able to develop web-services that depend on versions of libraries that have been released under GPLv2, even though the latest versions are now under GPLv3.

The GPL and Unofficial Distribution

How does the GPL deal with an unofficial release of software? If I create a piece of software that depends on some GPL code or library, therefore binding my software to the GPL. What happens if someone illegally obtains my software and distributes it? Is it possible to force the recall of the software and all code, or am I stuck with it now being ‘out in the wild’ for anyone to use or modify and redistribute?