<?php
// this script has no license. which I think is kind of ironic, or
// something. ha, ha, ha.
//
// - pgl@instinct.org

// this code sucks.

$zversion '1.4.5.0';
$zupdated '2004-08-31';
#$zupdated = 'Sat Jul 19 19:19:09 CEST 2003';

function gbselect($name) {
    global $
$name;
    
$select "<select name='$name'>\n";

    foreach (array(
"good""bad""don't care") as $num => $val) {
        
$select .=      "<option value='$num'"
                
. ($num==$$name " selected" "")
                . 
">$val</option>\n";
        }
    
$select .= "</select>\n";
    return 
$select;
    }

$w['community'] = !$community
    
"Hackers like accepting code under it\n"
    
"Hackers dislike accepting code under it\n"
    
;
$w['combineproprietary'] = !$combineproprietary
    
"Combine with proprietary and redistribute\n"
    
"Cannot combine with proprietary and redistribute\n"
    
;
$w['combinegpl'] = !$combinegpl
    
"Combine with GPL'ed code and redistribute\n"
    
"Cannot Combine with GPL'ed code and redistribute\n"
    
;
$w['sharesource'] = !$sharesource
    
"Must share source of redistributed version\n"
    
"Can redistribute binaries without source\n"
    
;
$w['patents'] = !$patents
    
"Must include patent license with contribution\n"
    
"Not required to include patent license with contribution\n"
    
;

$bsd['community'] = !$community             'Y' 'N';
$bsd['combineproprietary'] = !$combineproprietary     'Y' 'N';
$bsd['combinegpl'] = !$combinegpl             'Y' 'N';
$bsd['sharesource'] = !$sharesource             'N' 'Y';
$bsd['patents'] = !$patents                 'N' 'Y';

$lgp['community'] = !$community             'Y' 'N';
$lgp['combineproprietary'] = !$combineproprietary     'Y' 'Y';
$lgp['combinegpl'] = !$combinegpl             'Y' 'N';
$lgp['sharesource'] = !$sharesource             'Y' 'N';
$lgp['patents'] = !$patents                 'Y' 'N';

$gpl['community'] = !$community             '?' '?';
$gpl['combineproprietary'] = !$combineproprietary     'N' 'Y';
$gpl['combinegpl'] = !$combinegpl             'Y' 'N';
$gpl['sharesource'] = !$sharesource             'Y' 'N';
$gpl['patents'] = !$patents                 'Y' 'N';

$mpl['community'] = !$community             'Y' 'N';
$mpl['combineproprietary'] = !$combineproprietary     'Y' 'N';
$mpl['combinegpl'] =  !$combinegpl             'N' 'N';
$mpl['sharesource'] = !$sharesource             'Y' 'N';
$mpl['patents'] = !$patents                 'Y' 'N';

// added after a suggestion by havoc (havoc@harrisdev.com // http://bigdog.org)
$licenses = array('bsd''lgp''gpl''mpl');
$attributes = array('community''combineproprietary''combinegpl''sharesource''patents');

foreach (
$attributes as $attribute) {
    if ($
$attribute==2) {
        foreach (
$licenses as $l) {
            ${
$l}[$attribute] = '-';
            }
        }
    }

?>
<html>

<head>

<title>
Open Source License Quick Reference Chart
</title>

<meta name=description value="A quick reference chart for comparing various open source licenses, with the option to select your bias. Includes source code.">
<meta name=keywords value="open source, licenses, free software, license, license quick reference, gpl, gnu, shared">
<? include 'metatags.inc'?>

<?=$style_head?>

<style type="text/css">
<!--

b.note    { font-weight: normal; color: #000080; font-family: lucida console, monospace; }

-->
</style>

</head>

<body>

<center>

<p>based on version <?=$zversion?> of <a href="http://zooko.com/license_quick_ref.html">Quick Reference For Choosing a Free Software License</a> by <a href="mailto:zooko@zooko.com">Zooko</a> (updated <?=$zupdated?>)

<p>please see the the <a href="http://zooko.com/license_quick_ref.html">full document</a> for notes and the latest version.

<p><table cellpadding=2 cellspacing=2 bgcolor=#999999>
<tr><td bgcolor=#DDDDDD>

<form action="<?=$PHP_SELF?>" method=get>
<p><table cellpadding=2 cellspacing=2 bgcolor=#DDDDDD>

<tr>
<td>Hackers like to accept code under it</td>
<td><?=gbselect('community')?></td>
</tr>

<tr>
<td>Combine with proprietary and redistribute</td>
<td><?=gbselect('combineproprietary')?></td>
</tr>

<tr>
<td>Combine with GPL'ed code and redistribute</td>
<td><?=gbselect('combinegpl')?></td>
</tr>

<tr>
<td>Must share source of redistributed version</td>
<td><?=gbselect('sharesource')?></td>
</tr>

<tr>
<td>Must include patent license with contribution</td>
<td><?=gbselect('patents')?></td>
</tr>

<tr>
<td colspan=2 align=right><input type=submit value="update"></td>
</tr>

</table>
</form>

</td><td bgcolor=#99CCCC>
<pre>
 License
   |           <?=$w['community']?>
   |             | <?=$w['combineproprietary']?>
   |             |   | <?=$w['combinegpl']?>
   |             |   |   | <?=$w['sharesource']?>
   |             |   |   |   | <?=$w['patents']?>
   |             |   |   |   |   |
   |             |   |   |   |   |
   v             v   v   v   v   v
  ---           --- --- --- --- ---
 <a href="http://www.jclark.com/xml/copying.txt" target=_blank>permissive</a>      <?=$bsd['community']?>   <?=$bsd['combineproprietary']?>   <?=$bsd['combinegpl']?>   <?=$bsd['sharesource']?>   <?=$bsd['patents']?>

 <a href="http://www.fsf.org/copyleft/lesser.html" target=_blank>GNU LPGPL</a>       <?=$lgp['community']?><b class=note>2</b>  <?=$lgp['combineproprietary']?><b class=note>1</b>  <?=$lgp['combinegpl']?>   <?=$lgp['sharesource']?>   <?=$lgp['patents']?>

 <a href="http://www.fsf.org/licenses/gpl.html" target=_blank>GNU GPL</a>         <?=$gpl['community']?><b class=note>2</b>  <?=$gpl['combineproprietary']?>   <?=$gpl['combinegpl']?>   <?=$gpl['sharesource']?>   <?=$gpl['patents']?>

 <a href="http://www.mozilla.org/MPL/MPL-1.1.html" target=_blank">Mozilla PL 1.1</a>  <?=$mpl['community']?><b class=note>2</b>  <?=$mpl['combineproprietary']?>   <?=$mpl['combinegpl']?><b class=note>3</b>  <?=$mpl['sharesource']?>   <?=$mpl['patents']?>


 <span class=small><b>NB:</b> click a license type to open a new window showing the license wording (or typical example).
</pre>
 
</td>
</tr>

<tr bgcolor=#EEEEEE><td colspan=2 style="padding: 5px;">
<p class=small><b class=blue>notes:</b>

<ol>
<li class=small>The LGPL imposes some conditions on redistributing a combination of LGPL'ed and proprietary code, including some requirement on how the LGPL'ed code and the proprietary code are linked at run-time on the user's machine. It appears to me that these clauses are intended to prevent people from violating the spirit of the LGPL by using an obfuscating linker which prevents the user from swapping in alternative versions of the LGPL'ed code. Read Section 6 of the LGPL for details.

<li class=small> Some members of the community refuse to accept GPL'ed source code into their projects, although other members of the community strongly prefer GPL'ed source code over other licenses. Contrast with code under permissive licenses such as BSD, X11, MIT, and expat, which nobody refuses to accept. Almost nobody refuses to accept LGPL'ed code, except the Apache Foundation so refuses, saying that they think it would impose LGPL requirement upon the proprietary code (when they are linked via the Java class-loading mechanism). The FSF disagrees with this statement, asserting that such linking falls under section 6 of the LGPL. As far as I know, nobody refuses to accept code which is licensed under the Mozilla PL 1.1-plus-GPL-compatibility-clause (see note #3).

<li class=small>MPL 1.1 can be specifically amended to allow combining with GPL, according to the FSF's <a href="http://www.fsf.org/licenses/license-list.html">license list</a>.
</ol>

<p class=small><span class=blue>Please see <a href="http://zooko.com/license_quick_ref.html">Zooko's original chart</a></b> for an explanation of the columns, discussion of various aspects of free software licenses, and pointers to related resources.</span>

</td></tr>
</table>

<p><a href="mailto:pgl@instinct.org">pgl@instinct.org</a> | <a href="license-quickref.phps">source</a> | <a href="0.9.5.php">older version</a> | <a href="../">other stuff</a> | <a href="http://cl.ly/5nAo">an alternative guide</a>

</center>

</body>

</html>