The Eclipse Public License and the GPL (2 or 3) are not compatible.

[ ... ] you may not combine EPL and GPL code in any scenario where source code under those licenses are both the same source code module.

Based upon the position of the Free Software Foundation, you may not combine EPL and GPL code in any scenario where linking exists between code made available under those licenses. The above applies to both GPL version 2 and GPL version 3.

Emphasis mine, obviously.

The Clojure programming language is licensed under the EPL (unfortunately), and it also links with Apache 2.0 libraries. I use GPL3 for all my other hobby software, and I'd like to license a project in Clojure under the closest thing I can find to GPL3.

That closest thing seems to be the LGPL. However, after a lot of googling, it also seems that everyone is ambivalent about compatibility between LGPL and EPL. For example, this SO question has two very different answers, neither seeming more reputable to the layperson.

If the LGPL is not compatible with the EPL, what's the GPL-est I can get? Apache, or Modified BSD? Are there other options that are closer to GPL3 than BSD, while staying within EPL?

This question asks about EPL/LGPL compatibilites for binaries only. That's not what I'm asking here.

  • Are you talking about licensing a software project that happens to be written in Clojure, or about a modification to the Clojure compiler or standard libraries? – Todd Knarr Apr 30 '16 at 7:03
  • @Todd I thought project in Clojure was pretty clear it's code that happens to be written in Clojure. But if it gets run by EPL code its license has to be EPL compatible. – cat Apr 30 '16 at 9:35
  • That's what I thought, but your question was phrased as if the compiler's license mattered. It doesn't. If you're writing your code in Clojure but not including any of Clojure's code in your software, Clojure's license doesn't apply because you haven't done anything you'd need a license to do. If that weren't the case, the Ruby compiler for instance couldn't legally exist because of the incompatibility between GCC's license (GPLv3) and the Ruby compiler's license (2-clause BSD). – Todd Knarr Apr 30 '16 at 17:19
  • @ToddKnarr What? The text of the EPL specifically says "you can't link EPL code with GPL code". I want my project to be GPL; it can't be GPL if it's going to link and run with EPL libraries, ergo, I want the closest thing to GPL while being EPL-compliant. – cat Apr 30 '16 at 17:36

Since your project's just written in Clojure, it doesn't modify the Clojure compiler or runtime system, you can simply license your project under the GPLv3. You would only need to worry about Clojure's license if you were distributing the Clojure compiler/runtime itself or code which modified or integrated into it to a greater extent than merely running on it.

  • you may not combine EPL and GPL code where linking exists between code made available under those licenses. Does that not mean anything? – cat Apr 30 '16 at 17:37
  • You write a lib in Clojure, and probably license it with EPL because everyone does. Clojure is written mostly in Clojure, and all of its standard library is too. If I want to link my GPL code with your EPL code, I cannot, that is against the terms of the EPL. – cat Apr 30 '16 at 17:47
  • Yes, that phrase means something. It means the linking step where you combine multiple object modules into a final executable. Clojure doesn't compile down to machine code and you don't use the linker to create an ELF executable. It "compiles" down to bytecode if it compiles at all, and there isn't a linking step because the JVM uses a completely different mechanism for handling imports from external .class files. That's assuming you're even distributing the byte-compiled files as opposed to the source code, given the variety of Clojure engines out there. – Todd Knarr Apr 30 '16 at 21:36
  • okay, and what about may not combine EPL and GPL code where source code under those licenses are both the same source code module? Again, would seem to imply GPL code can't use EPL libs and vice versa. – cat Apr 30 '16 at 21:39
  • 1
    Did you copy any of the library code into your own source files? Did you add your code to the library? Then how do you conclude your code and the library's code are in the same source code module? – Todd Knarr May 1 '16 at 18:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.