views:

119

answers:

5

Greetings,

I understand that this is not the best forum for getting legal advices. But I am still wondering if anybody has some experience around this topic, or can point me to relevant resources that explain it. I have tried to search it online but could not find clear answers.

Assuming I am using a Java open-source library from "somecompany", specifically its entities in the "org.somecompany.somepackage". During development, I found that I need to access some of the internals of that package that are not exposed through its public interface. So I thought maybe creating my own classes under the same "org.somecompany.somepackage" name would make that easier.

My question is: does this constitutes a modification of the open-source library? The fully qualified name of my classes look like "org.somecompany.somepackage.myclass". It does seem an "extension" of the original library, even though I am not modifying the original library source or binary. I am also not adding my classes to the open-source jar files.

Any advice or pointer to resources will be appreciated!

p.s. My current license in question is LGPL. Specific answers for it will be appreciated. But if there is some universal classification of such "extension" across popular licenses like LGPL, Apache, CDDL, BSD, etc., I would like to know it as well :)

+2  A: 

No, this is not a derivative work, by itself. The software license is not an issue.

If anything there is a trademark issue here; you've placed a label on the code, via a namespace, that implies some association with the other project.

If you ever distributed the source form of this work, and this wasn't made clear, and the other party cared, maybe they'd ask you to change that.

If you're really worried, contact the library owners about what you want to do. A simple conversation may clarify that there are no concerns; no need to pay a lawyer for that much.

Sean Owen
Thanks, Sean. If you could point me to some definitive text that excludes this type of work as a derivative, that will be great.It's a good point about the trademark, which I also have concern about. Even though we don't distribute our source code, the Java jar files that we do distribute contain the classes under the "org\somecompany\somepackage" folder structure. To unknowing users, it does seem our classes belong to that "somecompany".I like your suggestion about contacting the library owner. That will be an honorable and easy thing to do.
Minyu
+1  A: 

You can always ask the founder/owner of the open source project. They might even be interested in your extensions, so instead of "hijacking" you're actually contributing to the open source community.

Kennet
A: 

I need to access some of the internals of that package that are not exposed through its public interface. So I thought maybe creating my own classes under the same "org.somecompany.somepackage" name would make that easier.

There is an alternative to that: most access restrictions can be subverted by using reflection to setAccessible() the members in question.

Obviously, doing this will make your code very vulnerable to any change in the library, but the same is true when you put classes into other people's packages to access package private members.

Michael Borgwardt
A: 

The question as posed is to general to discuss without a specific language in mind. LGPL version 3 explicitly states that:

Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

Which means that the subsequent code does not have to be distributed under the LGPL (subject to the combined work limitations there), if I understand it all correctly.

Of course if the package name is a trademarked name, you may want to be extra cautious here.

Yishai
A: 

If you do it to override existing classes in the library, I would personally consider it to infringing on the license.

If not, you need to say why you need to do it.

Thorbjørn Ravn Andersen