Tiki Wiki CMS Groupware is licensed LGPL 2.1. There have been many discussions about licensing and how it affects us when re-using code from other Open Source projects.
License compatibility is a very hot subject and the Open Source Initiative (OSI) has issued a Statement on License Proliferation and its impact on code sharing & reuse.
After careful analysis and many discussions, it has been concluded that it is appropriate to use code (such as libraries) licensed PHP, BSD, Apache, ( Apache 2.0 is only compatible with LGPL v3 - see http://www.dwheeler.com/essays/floss-license-slide.html ) MIT and LGPL (except for incorporating code licensed only under the LGPL v3; using it as a library is fine) within Tiki. We can not however use GPL code, unless it is dual-licensed with one of the 5 above.
These 5 licenses are precisely the licenses the PEAR group recommends in their announcement where they state "[you] should fairly safely be able to also use any PEAR package without licensing worries, be it for commercial or non commercial, closed or opensource use."
Dual-licensing was another issue. Here, we agree with the fine folks at Mozilla:
If a piece of code is dual- or triple-licensed, that means that someone (the licensee) who modifies and/or distributes it can choose which of the available sets of license terms they are operating under. Therefore, we can continue to use libraries such as phplot which is dual licensed PHP and GPL.
The Tiki team strives to respect the wishes of authors and to respect all licenses. If you are aware of any code in Tiki which you think is inappropriately licensed for the project, please bring it to the attention of the developers on the dev list or IRC channel.
For the Tiki community,
marclaporte
marclaporte @ php DOT net
2010-12-20 note: zlib License is also OK.
http://www.softwarefreedom.org/resources/
http://en.wikipedia.org/wiki/License_proliferation
http://www.gnu.org/licenses/gpl-faq.html#AllCompatibility
http://www.dwheeler.com/essays/floss-license-slide.html
https://www.osadl.org/fileadmin/checklists/matrix.html
Alias
LibLicense
Licensing
Tiki License
The rest of the page is kept as background information. Thank you to everyone who contributed.
background info & discussions
[+]
After some fresh news tonight, we can ONLY have code in tiki SVN that is under the BSD License or the LGPL. The PHP License is not compatible with LGPL.
refer to http://www.gnu.org/philosophy/license-list.html
-+...+-
PHP License, Version 3.0
This license is used by most of PHP4. It is a non-copyleft free software license which is incompatible with the GNU GPL.
We recommend that you not use this license for anything except PHP add-ons.
...
The PHP License is incompatible with the LGPL for similar reasons. Here is my (Terence) understanding of the problem. As most of the libraries under the PHP License have been modified, Tiki is considered a work based upon these libraries and the rest of Tiki code under the LGPL. The LGPL requires that any work derived from LGPL code to be released under the LGPL. This means that the library code we use must be released under the LGPL. This would violate the PHP License since it states that "No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License."
goldmoon: Are you sure? The web page states only that PHP license version 3 is incompatible with the GPL, NOT the LGPL. There might be a great deal of unnecessary rewriting, if the licenses actually are compatible. In fact, the PHP license does not contain ANY clause that extends the license to code added by the Tiki team. The "covered code created under this License" does not extend to new code written by the Tiki team, as the PHP license lacks the "viral" clause found in the GPL. I believe the LGPL and PHP 3 licenses are compatible. I think we can apply our own license to our own code, even though we produce application combining PHP code and our code. We should check for verification from the ultimate authority .. Zend. Zend uses the same license as PHP, but has lawyers and experts and experience enforcing its license.
Terence: The problem is if we modify libs under the PHP License, Tiki becomes, arguably, a derivative work of these libs. In such a case, the LGPL requires that the work as a whole be licensed under the LGPL. The PHP License does not allow anyone but the authors to relicense code protected by it. That's my take on the problem.
Sulimma: "So, just also release the modified libraries separately under the PHP license. Then you have contributed to a modified library. Tiki then is using this new PHP licensed library. That's exactly the same situation as when using unmodified PHP licensed libraries.
Think of it this way: What would happen if an original PHP developer joined the Tiki team? She would still modify PHP and its libraries and in addition modify Tiki. Both can happen under different licenses."
Damian says, the PHP libraries that we have used can in most cases be rewritten from scratch, this is something that Im currently looking at with POP3 as a example
GMuslera: Maybe for still using pear packages, and maybe some more things, Zzoss Installer could be used. Seems to be an installer for PHP applications, run in windows/linux, is LGPL, and between more features, can install PEAR packages, so for this particular problem it maybe could download on installation the needed pear packages so they could not be bundled with Tiki.
This is a tree of our current lib/ with licenses. They need removing and replacing:
- lib/
- lib/Date/ - PHP License v2
- lib/pear/ - PHP License v2
- lib/sheet/ole* - PHP License v2
- lib/webmail - GPL and PHP License
- lib/webmail/htmlMimeMail.php - PHP License v2
- lib/webmail/mimeDecode.php - PHP License v2
- rewritten and included in 1.9rc3 for tests mose
- impacted features : mail-in, webmail, forums, edit_page (used by import), import phpwiki
- after tests that will be backported to 1.8
- lib/diff.php - GPL
- replaced with Text_Diff (LGPL) in BRANCH-1-8 (terence)
- lib/Galaxia/src/ProcessManager/GraphViz.php - PHP License v3
- lib/graphviz/GraphViz.php - PHP License v3
for i in `grep -rl "php.net/license" *`;do grep -r "$i" *;done
lib/wiki-plugins/wikiplugin_wikigraph.php:include_once ('lib/graphviz/GraphViz.php');
tiki-wiki_graph.php:include_once ("lib/graphviz/GraphViz.php");
lib/tikilib.php:require_once ('lib/pear/Date.php');
lib/newsreader/newslib.php:require_once "lib/pear/NNTP.php";
lib/pear/HTTP/Request.php:require_once('lib/pear/Net/Socket.php');
lib/sheet/grid.php:require_once( "lib/sheet/ole.php" );
lib/sheet/grid.php:require_once( "lib/sheet/ole/pps/file.php" );
lib/sheet/grid.php:require_once( "lib/sheet/ole/pps/root.php" );
lib/sheet/grid.php:require_once( "lib/sheet/ole/pps.php" );
lib/commentslib.php: include_once ("lib/webmail/htmlMimeMail.php");
lib/webmail/tikimaillib.php:include_once("lib/webmail/htmlMimeMail.php");
tiki-admin_include_webmail.php:include_once ("lib/webmail/htmlMimeMail.php");
tiki-g-run_activity.php:include_once ("lib/webmail/htmlMimeMail.php");
tiki-mailin-code.php:include_once ("lib/webmail/htmlMimeMail.php");
tiki-webmail.php:include_once ("lib/webmail/htmlMimeMail.php");
lib/commentslib.php: require_once ("lib/webmail/mimeDecode.php");
tiki-editpage.php: require ("lib/webmail/mimeDecode.php");
tiki-import_phpwiki.php:require ("lib/webmail/mimeDecode.php");
tiki-mailin-code.php:require_once ("lib/webmail/mimeDecode.php");
tiki-webmail.php:require_once ("lib/webmail/mimeDecode.php");
tiki-webmail_download_attachment.php:require ("lib/webmail/mimeDecode.php");
(as lib/pear is in path, some pear call are without path, you can get whole list with
for i in `grep -rl "php.net/license" *`;do grep -r "`basename $i`" *;done
Some possible alternatives:
- Net_POP3 (BSD License) - Provides a POP3 class to access POP3 server. Support all POP3 commands including UIDL listings, APOP authentication,DIGEST-MD5 and CRAM-MD5 using optional Auth_SASL package
- POP3 client class (BSD License) - It features POP3 server access using normal and APOP login methods, calculation of mailbox statistics, listing of individual message sizes and identifier numbers, retrieval of arbitraty messages separating the headers from the body, limits on the number of message lines that may be retrieved at once, marking messages to be deleted, resetting the list of messages to be deleted, and issuing of the protocol NOOP command to avoid connection shutdown while in idle state.
- SMTP client class (BSD License) - It can relay message delivery to a defined SMTP server or directly deliver messages to a recipient's SMTP server for urgent message delivery. It supports connection timeouts, SMTP authentication, POP3 before SMTP delivery authentication, returns message delivery success, detects extensions supported by the SMTP server, and takes advantage of the SMTP PIPELINING extension to buffer SMTP commands, providing much faster queueing of messages when delivering to a large number of recipients (bulk mail).
- Text_Diff (LGPL) - provides a text-based diff engine and renderers for multiple diff output formats
- MIME E-mail message composing and sending (BSD)
- User definable headers and body parts.
- MIME encoding of text and HTML body parts with user defined character encoding using quoted-printable.
- Addition of file parts (attachments) with automatic content type detection.
- Forwarding of messages received from somebody else as intact attachments
- Support for multipart/related messages (eg. HTML messages with embedded images, stylesheets, frames, etc..)
- Support for multipart/alternative messages (eg. text and HTML versions in the same message).
- Encoding of message headers with user defined character encoding using q-encoding.
- Definition of the error delivery address setting the Return-Path header calling sendmail program directly.
- Several sub-classes for sending messages by different methods: PHP mail() function, sendmail, qmail, SMTP (with support for authentication and direct delivery mode).
- Wrappers that emulate the mail() function using the SMTP, sendmail and qmail delivery sub-classes.
- Support for sending personalized bulk mail by replacing the contents of the message parts that differ for each recipient.
- HTML and plain text message parts can be composed using template engines. An example that works with Smarty template engine is provided.
Instead of trying to replace everything, a batch script could be created to go fetch the required libraries, which would avoid the packaging and distribution problems. For everything in PEAR, the pear command line utility could be used. The only required thing is a script to grab everything. For all the other libraries, some wget and tar will to the trick. I just hate the idea of having to change stable and tested libraries due to licence problems, especially when there is a possible work around.
- Access to PEAR repository
- Access to other web sources
- Shell and web interface (default in setup.sh and tiki-install.php?)
- Will require a simple configuration file to identify needed libraries and their location.
Plus! I'm ready to take over the project. --lphuberdeau
- lib/phplot.php - GPL and PHP License
Has been removed from 1.9 along with its links to draw the stats graphs
Damian
Note : It seems the
CVS status of that file is actually the opposite : it's absent from BRANCH-1-8, was never removed from HEAD and was put back in 1.9 by mose in a merge. I think we should examine if it reappeared in 1.9 by human error or if the merge script has a problem (considering the similarity with CVS issues we had).
Chealer9
Notes from redflo:
- As far as i know, there is no problem with php license in a LGPL environment as soon as we don't modify the libs. Most pear libs in tiki have the only modification to disallow direct execution of these files. There are workarounds for that: put htaccess files there or better: tiki installer should create some dirs outside the httpd root directory. Directories for image/file storage, mail attachments etc. should be created outside httpd root to.
not usually possible on some shared hosting spaces Damian
- really check what license the files have. Pears latest mail mime files have no restrictions at all. Just keep the copyright header and you're in no trouble.
More notes from redflo:
Today i tried to figure out why PHP license is incompatible to GPL (not LGPL) License. If you compare the PHP License V3 with the newer BSD License, then you can see that the PHP License is almost the same with two sections more.
Section 5 protects the license text itself (as far as i can understand that english) and section 6 adds a advertising clause. This advertising clause may cause practical problems like in the old BSD License: The BSD License Problem.
So in my point of view there is no reason why we should avoid PHP-Licensed code in tiki - especially because tiki is not GPL licensed, it is LGPL licensed!.