The specific case I'm thinking about is writing Clojure programs that are GPLed. I've seen cases where GPLed software was using incompatible licenses (Erlang's, which is like MPL) just by adding an exception to the license agreements. Is that possible with the CPL?
From CPL's FAQ:
Does the CPL allow me to take the Source Code for a Program licensed under it and include all or part of it in another program licensed under the GNU General Public License (GPL), Berkeley Software Distribution (BSD) license or other Open Source license?
No. Only the owner of software can decide whether and how to license it to others. Contributors to a Program licensed under the CPL understand that source code for the Program will be made available under the terms of the CPL. Unless you are the owner of the software or have received permission from the owner, you are not authorized to apply the terms of another license to the Program by including it in a program licensed under another Open Source license. By the way, the same answer applies if you want to include source code licensed under another Open Source license in a program licensed under the CPL.
You can add exceptions to licenses if you own the copyright of the code but if you are planning to combine two modules with incompatible licenses, and you don't own the copyright over those modules, you can't arbitrarily add exceptions.
Note that the licenses often only apply when you distribute the code; you are allowed to combine code from different licenses if you never distribute the result (because copyright law only applies when you make copies).
Of course, IANAL.
Clojure is CPL. That doesn't mean programs you write in clojure need be, any more than programs you compile with gcc need to be GPLed. But Clojure isn't just the language implementation -- it's also a set of libraries that your code ends up using. This might mean that you can't legally distribute the combination of someone else's GPL code and the clojure libraries together, and it means that others might be hesitant to so distribute any GPLed code you write. The whole JVM really blurs the lines between linking and compiling and merely programming to an interface so it's really not as clear cut as it should be.
Yes you can, obviously you can't change the license on the clojure software, but since it can be considered a part of the standard library (like the C or C++ Standard libraries) it is exempted under the GPL.