Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [epl-discuss] Modified Works and C/C++

I don't want to speak on the edits per se, but I agree that the new version of the EPL should be strongly supportive of code in other languages besides Java.


On Wed, Sep 21, 2016 at 2:26 PM, Jim Wright <jim.wright@xxxxxxxxxx> wrote:
While I personally tend to associate Eclipse mostly with Java related stuff (ok, fine, I'm biased ;-), I was also thinking about the use of this license with C/C++ and similar languages with interfaces where you aren’t really merely binding by name per se, but there’s a preprocessor actually sucking in code from the header into the compiled output, which might even include things like macros and inlines of copyrightable significance.  

If you put them in a header file as part of an interface or otherwise inline them, and are using the EPL as opposed to a more copyleft license, you are presumably not attempting to apply the reciprocal license obligation to things using that interface, but the current definition *would* do that, I think.   As a guy who has had to spend a nontrivial amount of time digging through header files looking for things like this, it seems to me we can and should avoid this outcome.  Here is a proposed revision to the definition of Modified Works that I think would fix it (changes in red underline or red strikethrough):  

"Modified Works" shall mean any work, in Source Code or Executable Code form, comprising from an addition to, deletion from, or modification of the contents of the Program, or any new file in sSource Code form that contains any contents of the Programin each case other than its interfaces (including without limitation anything in a header file or inline function or similar constructs). For the purposes of this Agreement, Modified Works shall not include works that remain separable from, and merely link (or bind by name to), or subclass, or otherwise include such interfaces of the Program or and Modified Works thereof.

We could, if folks think advisable, further define interfaces to include data structures, macros and constants defined by the Program, though I have a hard time believing anyone would argue these are not interfaces to it so I didn’t here.  

There is one additional question in my head.  The current definition (excluding my change) has “remain separable from, merely link (or bind by name to), or subclass” - where these are each arguably sufficient conditions by virtue of the use of “or", such that if something subclassed the Program but was not separable from it, I think it would still qualify as defined not to be a Modified Work.  Is that the intent?  I tend to think not, and have therefore inserted an “and” after “separable from” to make this clear - the other work must both remain separable form *and* be using only the interfaces.  But curious to hear people’s thoughts here - was the previous or condition intentional?  Also wondering what it means to be separable (and have always wondered this) and whether this is worth separately addressing - I think everyone interprets this to mean that merely including the Program in its own class files or JAR file is separable as opposed to, e.g., static linking for C code, but if anyone thinks otherwise, I’d like to hear about it and now’s the time to think about it.


epl-discuss mailing list
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

Jay Jay Billings
Oak Ridge National Laboratory
Twitter Handle: @jayjaybillings

Back to the top