Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 80980

Summary: Eclipse Platform source organization incompatible with spirit of Common Public License
Product: [Eclipse Project] Platform Reporter: C. Lamont Gilbert <clg-business>
Component: UIAssignee: Kevin Haaland <Kevin_Haaland>
Status: RESOLVED WONTFIX QA Contact:
Severity: critical    
Priority: P3 CC: gunnar, ilias, mark
Version: 3.1   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description C. Lamont Gilbert CLA 2004-12-14 14:40:12 EST
From reading the IBM website FAQs and the way Eclipse is seemingly used it
appears that Eclipse desires for the application to be useable by people without
their software having to release the source and grant specific rights of usage.
 However, according to the CPL "Contributions" fall under the scope of the CPL
and must grant their recipients extensive rights according to section 2.

Therefore, for one to use CPL licensed code/application, and maintain rights to
his own 'seperate' code/application, his code/application must not be considered
a "contribution."  Unfortunately, per section 1, the only way for your code to
not be considered a "contribution" is for, among other things, it to not be a
"derivative work."

This term "derivative work" is not defined in the definitions section of the
CPL.  If we are to use gnu.org's long-standing (if political) definition, then
all programs that import any interfaces from CPLed code become derivative works.
 All programs that extend classes from CPLed code, become derivative works.  So
forth and so on.

***You can not connect to Eclipse without becoming a derivative work of the
portion to which you connect.***


This is not really a problem with the CPL (its no different than the LGPL in
this respect), but a problem with the way eclipse is currently organized. 
Because eclipse puts its connection points (interfaces, abstract classes,
utilities) under the CPL as well, all programs that use eclipse in any
meaningful will fall under the CPL at some point.


In my experience with Eclipse, if you follow OO design practices and seperate
your business logic, from your GUI classes, only your GUI plugin ends up being
restricted by the CPL, but your business logic, since it imports no eclipse
classes/interfaces, does not.  It does however, cause your application to expose
the way your business methods are called.  I doubt this was intended.

In any event the power is where it belongs, with eclipse.  Eclipse can draw the
line between what it feels is open and available to all freely, and what it
feels is a valuable piece of code that it would like to receive any improvements
or enhancements to.  Simply put the freely useable interfaces and classes
necessary to connect to Eclipse, in a seperate package under a BSD style
license, while keeping the valuable classes which make up the core behavior
under the CPL.



This was posted in forums as well, but I thought I should try and get some real
activity/response/opinion to this issue.
Comment 1 ilias CLA 2004-12-14 15:00:22 EST
[This issue is very 'deep'. Possibly you have to wait one or two days for responses]

Link to reporters forum discussion:
[LICENSE] Definition of "derivative work"
http://www.eclipse.org/newsportal/article.php?id=189&group=eclipse.foundation

Link to a related suggestion:
[LICENSE] - Clarify EPL Licensing Terms 'human readable'
http://www.eclipse.org/newsportal/article.php?id=26&group=eclipse.foundation
Comment 2 Morten Moeller CLA 2004-12-14 16:14:33 EST
[crossposted from eclipse.foundation] 
 
I guess I would disagree on your definition of derivative work and java. 
IANAL either, nor an expert in licenses, but that never stopped me from 
having an opinion ;) 
 
All use of libraries (jars) in java are dynamicly linked. Your jar/classes 
never incorporate the other classes they uses externally (static linking), 
they are only linked by names. There is absolutely not a single byte taken 
from any eclipse jar into my jars that uses the eclipse jars. So, if I type 
(as an example was on eclipse.platform) "import org.eclipse.xx.yy" in my 
class does not make my class a derivative work of org.eclipse.xx.yy. if my 
class extend org.eclipse.actions.IAction does not make me a derivative work 
of IAction either, I'm just dynamicly linking to the jar without using 
their source directly into my product. If I change 
org.eclipse.actions.IAction or copy and extend the code, it is derivative 
work. 
 
So I would disagree with your second statements around java; in java you 
don't staticly link to any "header" as you probably would in c/c++. You 
always just dynamicly link. So the whole interface thing is not needed. 
c/c++ is different as you require .h header files in additions to the 
dll/so's. 
 
Comment 3 C. Lamont Gilbert CLA 2004-12-14 22:29:31 EST
As I stated in the groups, its irrelevant how you link. If there is any linking
at all, the FSF would consider it a derivative work.  There is no difference
between Java or C or any new languages that may arrive.  If you incorporate the
smallest part of the copyrighted work, within your own work, your work becomes
derivative.  In the case of Java, that includes any extending of classes,
implementing of interfaces, calling of methods, using of reference types, etc.
from the copyrighted work.  While the actual byte codes of the copyrighted work
are not in your .class file, the signature to the copyrighted work, which is
part of the work as well, is.

To make it clear, if you require it in your classpath in order to compile your
code, you are creating a derivative work of it.  This is not meer supposition,
this fact will be reflected within your .class files and can be verified with javap.

This may seem silly and extreme, but its a legal document after all, and
intentions are not all that matters.  IBM could define "derivative work"
differently from the FSF, but I doubt they could satisfy the desires of the
community or protect the eclipse source in that way.  The CPL would have to
incorporate language to specifically address Java, which I don't think they will
or should do.

the FSF's position can be seen here http://www.gnu.org/licenses/lgpl-java.html
Comment 4 Adrian Cho CLA 2004-12-15 15:48:07 EST
The CPL is actually reasonably clear on this issue - look at 1 b) in the 
license - the reference to derivative work is not the only thing issue.  That 
said, the "derivative work" can be interpreted in different ways - whether 
this includes such acts as importing interfaces is up to the person reading 
the license.  I cannot give legal advice but I'd say for sure that the GNU 
interpretation is not universal.

I would encourage you to send e-mail to license@eclipse.org to get some 
assistance with issue.
Comment 5 C. Lamont Gilbert CLA 2004-12-15 21:07:37 EST
You are correct, NOT being a derivative work is not enough to prevent you from
having to grant rights to your code.  But being a derivative work is more than
enough to cause you to have to grant rights to your code.

I also agree that gnu's definitoin of derivative work may not be ubiquitous. 
But GNU is kind enough to explain exactly what they mean by the term, right
there in the license.  So there is no confusion.  The CPL uses the term, but
does not define it.

I will send a question to that address, I did not know it was available.
Comment 6 C. Lamont Gilbert CLA 2005-01-26 16:47:11 EST
There is a salient point I wish to add here.  Consider if we define derivative 
work such that code does not automatically become derivative work of any class 
included in its source path.  My fear is that if you do this you create 
a "loophole", and one could co-opt the whole eclipse project by funnelling his 
connection to Eclipse through it.  Thus exposing Eclipse to exploitation.  This 
is why I don't feel defining 'derivative work' will get us out of this 
position, without putting us in a different but equally as undesireable one.
Comment 7 C. Lamont Gilbert CLA 2006-03-14 13:27:17 EST
I suppose we have agreed maintain this characteristic in the EPL.

This bug should be closed as the FAQ now expresses the issue and the foundations position involving the classification of derivative works.