views:

124

answers:

3

I would like to use some parts of Glassfish in a proprietary software that are under a CDDL + GPLv2 license. Am I allowed to do that? I haven't modified anything in the code of these libraries, so is this OK, or my software, because it uses these libraries, is still considered derivative work, and thus a big no-no?

I mean, according to https://jaxb.dev.java.net/, JAXB is also under CDDL + GPLv2, but I know I can freely use that in proprietary software. Is this because CDDL + GPLv2 actually allows that, or is it distributed under a different license when bundled with the JRE?

A: 

(IANAL) Both CDDL and GPLv2 require that you distribute ("or otherwise make available") the source code of the modified work, and the "larger work", which refers to combining your software with the original work.

At least that is how I understand the license (From glassfish website):

3.1. Availability of Source Code.

Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.

Jukka Dahlbom
Thanks. But how does this work with the JAXB inlcuded in the JRE? Am I only allowed to use that if I also publish the code that uses it? AFAIK, JAXB is under the same CDDL + GPLv2 licenses as most of Glassfish.
Lóránt Pintér
+1  A: 

Okay, I found the answer. Wikipedia says:

GlassFish is free software, dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the classpath exception.

The Classpath Exception is the main thing here. See the yellow section at the bottom of the license agreement on the Glassfish website:

"CLASSPATH" EXCEPTION TO THE GPL VERSION 2

Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words "Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code."

Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.

As a special exception, the copyright holders of this library give you permission to link this library 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 library.? If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so.? If you do not wish to do so, delete this exception statement from your version.

Essentially that means that as long as I distribute the licenses with the Glassfish libraries, I am free to put them on the classpath of my proprietary software. Searching through the downloaded source of Metro (the part I want to use) I found only a handful of Java files that did not contain the required line in the comments. (More precisely they had no header comment at all.)

Lóránt Pintér
A: 

Regarding the CDDL and Jukka's posting:

As far as I understand the CDDL, your're not required to publish your proprietary software in source code form! Reason:

Section "3.1 Availability of Source Code" refers only to "Covered Software" and that type of software is:

1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.

In other words: "Covered Software" is the "jar" released under the CDDL and any modifications on that "jar", if there are any. Software that is just using this "jar" in the classpath is mentioned as "Larger Work" and therefore must not published in source code form.

HTH Stephan

Stephan