The GNU General Public License (GPL) is a software license that promotes software freedom. Free as in speech, not beer, as they say. From the preamble it sets forth its goal:
[T]he GNU General Public License is intended to guarantee your freedom to share and change all versions of a program—to make sure it remains free software for all its users.
It is designed to make sure that:
- “you have the freedom to distribute copies of free software (and charge for them if you wish),”
- “you can change the software or use pieces of it in new free programs” and
- “you know you can do these things.”
Further it expounds:
To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
And to drive the point home in case you’re unsure:
For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
Now contrast the above with this first paragraph I found in a plugin released under the GPL on WordPress.org:
All functions defined in this plugin should be considered private meaning that they are not to be used in any other WordPress extension including plugins and themes. Direct use of functions defined herein constitutes unsupported use and is strongly discouraged. This file contains custom filters have been added which enable extension authors to interact with this plugin in a responsible manner.
Enter the dissonance: use this code however you wish but please don’t use it in any way.
I can use his code in my theme according to the license under which it’s released. But I would feel guilty because he asked me not to use it — and I’m sure he must have felt odd adding restrictive clauses that were in direct contradiction with his GPL-licensed code. You see how messy it is! I can only speculate as to why he would want to restrict his code, but I would guess it had something to do with wanting to retain ownership over his creative domain.
In the end I found a tutorial with code examples that were easier to follow so I didn’t have to bother with the plugin. But the small ordeal illustrates the fragile dance of many who create products for WordPress (especially commercial products) between adhering to the GPL and “please don’t screw me over with your freedoms.”