Common Public License

156 views
Skip to first unread message

Eric Lavigne

unread,
Dec 6, 2007, 8:45:32 AM12/6/07
to Clojure
The CPL license requires all derivative works to be released under the
same license. My impression is that programs written in Clojure Lisp
are derivative works, and therefore cannot be closed source. Is this
effect intentional? ABCL is released under a similar license but also
includes a linking exception so that Lisp programs running in ABCL are
not considered derivative works.

John Cowan

unread,
Dec 6, 2007, 9:08:36 AM12/6/07
to clo...@googlegroups.com
On Dec 6, 2007 8:45 AM, Eric Lavigne <lavign...@gmail.com> wrote:

> The CPL license requires all derivative works to be released under the
> same license. My impression is that programs written in Clojure Lisp
> are derivative works, and therefore cannot be closed source.

I don't see how. Although Clojure compiles source to bytecode
internally (as does Perl), its external profile is that of a
source-code interpreter (like Perl). So you'd deliver the CPLed
interpreter with the source code of your proprietary program, and
trust that the law's terrors suffice to keep your users from
spreading the source about. There are proprietary programs written
in Perl, for example.

This is completely different from ABCL, which can deliver classfiles
for external consumption. If that feature were to be added to Clojure,
you'd want a similar exception then.

--
GMail doesn't have rotating .sigs, but you can see mine at
http://www.ccil.org/~cowan/signatures

Rich Hickey

unread,
Dec 6, 2007, 12:12:58 PM12/6/07
to Clojure
I don't consider them similar licenses at all.

The CPL says:
---------------
Contributions do not include additions to the Program which: (i) are
separate modules of software distributed in conjunction with the
Program under their own license agreement, and (ii) are not derivative
works of the Program.
---------------

ABCL's exception says:
--------------------
Linking this software statically or dynamically with other modules is
making a
combined work based on this software. Thus, the terms and conditions
of the GNU
General Public License cover the whole combination.

As a special exception, the copyright holders of this software give
you
permission to link this software with independent modules to produce
an
executable, regardless of the license terms of these independent
modules, and
to copy and distribute the resulting executable under terms of your
choice,
provided that you also meet, for each linked independent module, the
terms and
conditions of the license of that module. An independent module is a
module
which is not derived from or based on this software. If you modify
this
software, you may extend this exception to your version of the
software, but
you are not obligated to do so. If you do not wish to do so, delete
this
exception statement from your version.
----------------------

The default premises of the 2 licenses (without ABCL's exception) are
quite different - the CPL doesn't taint combined non-derivative work
and the GPL does, i.e. the CPL includes the exception.

The intention is that if you create changes or additions to the
Clojure compiler itself or its libraries, that is a derived work, and
thus a contribution under the CPL. But both licenses leave the
definition of derivative to the copyright office.

You are the first to express concern over the CPL, I'm interested in
whether or not anyone else has a problem. I would like to avoid
license proliferation and support commercial use, and the CPL seemed
like a good fit, working well for Eclipse.

Rich

Henk Boom

unread,
Dec 6, 2007, 2:27:18 PM12/6/07
to clo...@googlegroups.com
On 06/12/2007, Rich Hickey <richh...@gmail.com> wrote:
> You are the first to express concern over the CPL, I'm interested in
> whether or not anyone else has a problem. I would like to avoid
> license proliferation and support commercial use, and the CPL seemed
> like a good fit, working well for Eclipse.
>
> Rich

I looked up the CPL when I found clojure, overall it looks like a nice
license, though it is GPL-incompatible (at least v2, not sure about
v3). I don't understand enough about how these laws work though. Could
I distribute a program written in Clojure under the GPL without
problems? At what point are the two entities a combined work and at
what point is one just running the other? Does it matter?

Henk

Mathias Dahl

unread,
Dec 6, 2007, 5:55:11 PM12/6/07
to Clojure
> I looked up the CPL when I found clojure, overall it looks like a nice
> license, though it is GPL-incompatible (at least v2, not sure about
> v3). I don't understand enough about how these laws work though. Could
> I distribute a program written in Clojure under the GPL without
> problems? At what point are the two entities a combined work and at
> what point is one just running the other? Does it matter?

I also read (on Wikipedia) that Eben Moglen says the CPL is
incompatible with the CPL. However, the CPL is still an approved free
software license.

Anyway, I would be surprised if the license of Closure's source code
could affect your choice of license for your own programs. AFAIK it
only controls under what terms you can use Closure's source code. I am
sure Rich have thought about this and would not worry.

/Mathias

Rich Hickey

unread,
Dec 6, 2007, 5:55:13 PM12/6/07
to Clojure


On Dec 6, 2:27 pm, "Henk Boom" <lunarcri...@gmail.com> wrote:
> On 06/12/2007, Rich Hickey <richhic...@gmail.com> wrote:
>
> > You are the first to express concern over the CPL, I'm interested in
> > whether or not anyone else has a problem. I would like to avoid
> > license proliferation and support commercial use, and the CPL seemed
> > like a good fit, working well for Eclipse.
>
> > Rich
>
> I looked up the CPL when I found clojure, overall it looks like a nice
> license, though it is GPL-incompatible (at least v2, not sure about
> v3). I don't understand enough about how these laws work though. Could
> I distribute a program written in Clojure under the GPL without
> problems?

The problem is the GPL, which insists on applying to things other than
those that are part of the original work or derivatives of same. It is
a virus.

> At what point are the two entities a combined work and at
> what point is one just running the other? Does it matter?

Combining is fine by the CPL but impinged by the GPL. This is a defect
of the GPL, IMO. The GPL is only compatible with itself and things
that can be turned into itself and doesn't support a world in which
people make independent decisions about how they would like to share
their work. I don't like it.

That said, I understand the importance of compatibility with it and
welcome suggestions from those who need that.

Rich

Mathias Dahl

unread,
Dec 6, 2007, 6:51:25 PM12/6/07
to Clojure

> The problem is the GPL, which insists on applying to things other than
> those that are part of the original work or derivatives of same. It is
> a virus.

Not wanting to start a license-war here, but could you elaborate on
that a bit? I was under the impression that you only need to release
under the GPL what you directly derived from source code released
under the GPL. How can it apply to other things? Or do you simply mean
that a derivate of a derivate of source released under the GPL also
needs to be released under the GPL? Hmm... That sentence looks really
confusing, but I hope you know what I mean :)

And about the GPL being a virus part: a virus is something that you
might not have control of. It sneaks up on you when least expected,
and infects you, you might not have a choice. With source code
released under the GPL I do have a choice to make, either use it and
abide by its rules to give back to the community the source of the
work I derived from something that was GPL:ed, or not use it. I know,
there are debates over which license that is most "free". I am on the
user's side rather than the developer (although they might be the same
person), wanting to make sure that what I produce, and what is derived
from it, stays free, always.

> that can be turned into itself and doesn't support a world in which
> people make independent decisions about how they would like to share
> their work. I don't like it.

I guess in some sense that is true, if you want to base your work on
some GPL:ed code, you are restricted in that you too must use the same
license, but it's not like you don't have a choice not to use it,
right?

> That said, I understand the importance of compatibility with it and
> welcome suggestions from those who need that.

I'm sorry if I just seem like a frantic GPL-zealot here (I guess I am
from time to time...), but I could not resist biting on the "viral"
part above. It is a great project you have here and you seem very open
about it in every sense so I will try to shut up on this matter
now. :)

Keep up the good work!

/Mathias

Rich Hickey

unread,
Dec 6, 2007, 7:26:20 PM12/6/07
to Clojure


On Dec 6, 6:51 pm, Mathias Dahl <mathias.d...@gmail.com> wrote:
> > The problem is the GPL, which insists on applying to things other than
> > those that are part of the original work or derivatives of same. It is
> > a virus.
>
> Not wanting to start a license-war here,

Me either. I've had my rant :) The question was - can one take Clojure
(or any CPL code) and combine it with some X that is GPL in order to
make Z, and the answer is no, even though X is not derived from
Clojure nor Clojure from X. It's a problem for those who want to use
GPL'ed code with Clojure or Clojure in code they want to release as
GPL, and it's not caused by Clojure or the CPL, which places no
constraints on things that are not contributions, stating:

---------
Contributions do not include additions to the Program which: (i) are
separate modules of software distributed in conjunction with the
Program under their own license agreement, and (ii) are not derivative
works of the Program.
---------

> but could you elaborate on
> that a bit? I was under the impression that you only need to release
> under the GPL what you directly derived from source code released
> under the GPL. How can it apply to other things?

Here's a bit from GPL 2:

----------
...
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
...
------------

I'd like to keep the rest of this discussion a positive one directed
towards having those who need GPL-compatibility and have knowledge of
how to achieve it making suggestions for getting past the problem, if
in fact there is one.

Rich

Eric Lavigne

unread,
Dec 7, 2007, 7:17:43 AM12/7/07
to clo...@googlegroups.com
> The CPL says:
> ---------------
> Contributions do not include additions to the Program which: (i) are
> separate modules of software distributed in conjunction with the
> Program under their own license agreement, and (ii) are not derivative
> works of the Program.
> ---------------
> The intention is that if you create changes or additions to the
> Clojure compiler itself or its libraries, that is a derived work, and
> thus a contribution under the CPL. But both licenses leave the
> definition of derivative to the copyright office.

One possible interpretation: I can send you an entire Linux
distribution that happens to include Clojure, Perl, and some Clojure
scripts. Perl works without Clojure, so is not a derivative work and
can be distributed with Clojure under a separate license. The Clojure
scripts are separate modules, but with a clear dependency on Clojure,
so they are derivative works. The definition of "derivative" is not
clear to me.

I am pleased to hear that this is not your interpretation, and I am
content to accept your interpretation.

--
Don't worry about people stealing your ideas. If your ideas are any
good, you'll have to ram them down people's throats.

- Howard Aiken -

John Cowan

unread,
Dec 7, 2007, 11:21:55 AM12/7/07
to clo...@googlegroups.com
On Dec 7, 2007 7:17 AM, Eric Lavigne <lavign...@gmail.com> wrote:

> The Clojure
> scripts are separate modules, but with a clear dependency on Clojure,
> so they are derivative works.

I repeat, works meant to be executed by an interpreter are not
derivative works of that interpreter, any more than code you edit with
Emacs is a derivative of Emacs -- the interpreted code is just
data that the interpreter processes.

Even code compiled with gcc is not a derivative of gcc,
although if a compiler-like program injects substantial parts
of itself into the output, the output may become entangled
with the license. (This used to be true of GNU bison, but
a license exception was written for it.)

> The definition of "derivative" is not clear to me.

It depends on your local copyright law, but in the U.S. it means
a transfomation of the original work by translating, adapting,
adding or removing material, etc. Writing code in Clojure
doesn't create a fork of Clojure, far from it.

Reply all
Reply to author
Forward
0 new messages