Plugins and License

This topic describes the license that applies to Foswiki extensions.

The purpose is to help new extension developers to choose the correct license for their extensions and to ensure we have a common understanding in the community of the licencing of extensions.

The short version

  • Foswiki is released under the General Public License (http://www.gnu.org/copyleft/gpl.html) version 2 or later.
  • Foswiki extensions such as Plugins and Addons/Contribs that are distributed must be released under the GNU General Public License IF they meet the criteria

If an extension is distributed, it must be distributed under the same GPL license as Foswiki if one or both these criteria are met
  • The extension is being called through one of the many handlers implemented in Foswiki (listed in EmptyPlugin).
  • The extension calls functions in the distributed Foswiki code (like the Foswiki::Func API.)

The longer version

First - if you have not already - you should read the General Public License. The General Public License is commonly just written as the acronym GPL.

It is easy to read and there are several translations to other languages at the site.

After that you should pay attention to the FAQ section about plugins.

What the FAQ says is

If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in.
  • It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.
  • If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means the plug-ins must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed.
  • If the program dynamically links plug-ins, but the communication between them is limited to invoking the 'main' function of the plug-in with some options and waiting for it to return, that is a borderline case.

This is the interpretation given by The Free Software Foundation. It has to our knowledge not been tested in court, but it is the best guideline we have, an we have based the simple extension GPL criteria on this.

With traditional Foswiki Plugins and other extensions that are written in Perl and uses the official Foswiki API there is little doubt if we follow the FSF interpretation. The two act like one program and share the data structures. Foswiki makes function calls to the plugin (the many handlers) and the plugin makes function calls to the core (e.g. the API in Func). Traditional Foswiki plugins using the standard handlers and Foswiki API must be licensed under the GPL if distributed.

If an extension (written in Perl, or C or any other language) is a separate program that uses the Foswiki topic files in the data and pub directories you do not need to use the GPL license if you distribute the extension.

If an extension calls Foswiki bin programs like view, save, rest to create and manipulate topic content the program is considered a separate program.

If an extension is being called from a Foswiki plugin, and given data to work with and returns procesed data back to Foswiki, the extension called from the plugin is still considered a separate program. It is possible to write an extension that consists of a plugin released under GPL and a proprietary module. It is also possible to write an extension that consists of modified Foswiki programs released under GPL and a proprietary module. These methods to bypass the GPL are accepted in the community.

In the following we are assuming that the extension meets the criteria "called by the plugins handlers and/or uses the Foswiki API" and therefore must be distributed with the GPL license. Extensions that do not meet this criteria can be license and distributed as you like.

So what does this mean to you as a plugin user?

Only positive things!

  • As a user of a Foswiki plugin you have the right to use the software as you see fit, without asking, without registering, without paying anyone.
  • As a user of a Foswiki plugin you have the right to modify the plugins for your own use. You do not have any duty to make these modifications public. However - the Foswiki Community will be thankful for any contribution and we encourage you to share your work here at the official Foswiki site. But it is entirely up to you do decide.
  • As a user of a Foswiki plugin you have the right to distribute copies the software to others, as long as you comply with the rules in the GPL. It is when you copy and distribute GPL software that you have to be careful!

So what does this mean to you as a plugin developer?

  • If you develop Foswiki plugins or modify existing plugins for your own use or for your employer, you do not have to offer the code to the public.
  • If you are paid to develop extensions for clients and they own the software, it is their responsibity to license the software if they choose to distrubute it. And they do not have any obligation to distribute the extensions.
  • If you develop and distribute Foswiki extensions, you must license the software under the GPL IF the extension meets the GPL criteria given above. And it is acceptable and recognized in the community to split an extension in a GPL part and a proprietary part, even if the GPL part has little or no value without the proprietary part.
  • You can choose to distribute your extensions in any way described in the GPL. You do not have to post them at the official Foswiki web site. But the Foswiki Community encourage you to do so and will be very thankful if you do.

I wrote a plugin for my company - do I have to distribute it?

No. The GPL only governs the distribution, not the use of the software. If you wrote a plugin as an employee for the company, there is no obligation to redistribute it. Nevertheless, if this plugin is not company specific and you think it is useful to others, the Foswiki Community would very much appreciate if you share it with the community, e.g. package and post it on foswiki.org.

I made a plugin for myself - why should I publish it under GPL anyway?

Because it is to your own advantage and because it makes you feel better.

  • When you publish a plugin or an improvement to a plugin the entire community can improve it further and these improvements will benefit YOU.
  • The more value adding plugins the Foswiki project can offer, the more satisfied users do we get, and the more contributions are made available that at the end will also benefit YOU.
  • When you download Foswiki it is the result of...
    • Many many 1000s of hours of volunteer work given to you for free. Your contribution - large or small - is adding to the value of Foswiki.
    • Many commercial companies have paid developers to create new features for Foswiki and allowed the result to be published under GPL, even when they did not have to - because they know that overall - they get much more back than they invest. And your contribution is part of what they get back.

What many do not understand is that GPL works by using the copyright laws. Any work done by you is owned by you. If you work for a client that pays for your work your client will most likely own the copyright as part of your mutual agreement. If you are employed to write software your employer normally owns the copyright. If you write a new plugin it is essential that you claim your copyright in the code and in the topics as well as the GPL license.

If you make a significant modification to a plugin, you claim copyright for the modification while maintaining the original copyright notices.

If you make minor modifications or bug fixes to an existing plugin you should not add yourself to the copy right statement. Most plugins have a copyright note that mention the original author AND Foswiki Contributors.

If you take over responsibility for an existing plugin no longer maintained by the original author, you should extend, not replace, the original copy right note by adding yourself.

If you include portions of code from another GPL (or equivalent license) in your extension you must preserve the copyright and license statements in the reused code.

From http://www.gnu.org/licenses/gpl-faq.html#HowIGetCopyright :
Under the Berne Convention, everything written is automatically copyrighted from whenever it is put in fixed form. So you don't have to do anything to "get" the copyright on what you write--as long as nobody else can claim to own your work.

However, registering the copyright in the US is a very good idea. It will give you more clout in dealing with an infringer in the US.

The case when someone else might possibly claim the copyright is if you are an employee or student; then the employer or the school might claim you did the job for them and that the copyright belongs to them. Whether they would have a valid claim would depend on circumstances such as the laws of the place where you live, and on your employment contract and what sort of work you do. It is best to consult a lawyer if there is any possible doubt.

If you think that the employer or school might have a claim, you can resolve the problem clearly by getting a copyright disclaimer signed by a suitably authorized officer of the company or school. (Your immediate boss or a professor is usually NOT authorized to sign such a disclaimer.)

Foswiki plugin contributors are encouraged to get the copyright of their employer, school or client assigned to the individual contributor. This reduces lengthy negotiations with legal departments for each and every contribution.

What is the Foswiki Community view on being payed to develop software for clients?

It is very positive. It is perfectly OK to be paid to develop software. It is perfectly OK to eat and buy clothes for the kids. You should not feel bad about it.

Yes, there are many people that develop software for free on the Foswiki project. But there are also many that try to make a living from working for clients. We all have our reasons to spend time on Foswiki.

The Foswiki Community will not only accept that companies invest in having Foswiki technology further developed. It will assist and encourage such activities when it benefits the overall value of Foswiki.

It is all a matter of making the end result a win - win for everyone.

-- Contributors: KennethLavrsen (totally re-written in 2009 trying to include the comments from the previous version from the old project. The parts that caused objections have been removed.)

As an example of not quite the same license as Foswiki Core, I (SvenDowideit) develop all my Extensions as GPL3 or later, as I prefer GPL3 to GPL2 (for reasons somewhat exposed on RelicenseCoreCodebase).

-- SvenDowideit - 20 May 2009
Topic revision: r3 - 20 May 2009, KennethLavrsen
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy