views:

65

answers:

4

Hey everyone,

Is there any part of the GNU General Public License that would prevent someone from redistributing an open source project with new code added that is not open source. Such that the open source project except for minor structural changes will be released under GPL, but additional code that will add new functionality to the project, in separate files, will not be released under GPL?

I know this isn't really a programming question, but I wasn't sure where else to ask.

+1  A: 

It would depend on the exact details, but the overwhelming likelihood is that this would be a violation.

Hank Gay
+3  A: 

Generally No - you want to use my GPL work (to further your aims for world domination) then I get to use your work as well - that way we all play nice and share our toys.

There are a few exceptions, if the original lib is LGPL you can link it (dynamically) to your proprietry work, or you may be able to call the GPL code as a separate application

Martin Beckett
+1  A: 

IANAL, but AFAIK as soon as you link together (as in linking via the compiler/ld) the GPL and non-GPL parts you're in violation of the GPL. But it's a grey-area for plugins (e.g. Linus Torvalds says non-GPL'd plugins/modules for a GPL'd product like the Linux kernel are OK while others disagree). So it might be a solution to introduce a (GPL'd) plugin infrastructure and add your non-GPL code in form of a plugin.

DarkDust
This why the Nvidia graphics driver for Linux comes in two parts. The open source bit (module) links to the kernel. The proprietary bit (the driver) does not.
Kango_V
A: 

GPL v3, clauses 5 and 6 specify the conditions for distributing modified versions of the program in source and compiled forms respectively. If you do not comply with these conditions then you are in breach of copyright, and can be sued.

Therefore any additional code requires to be released under GPL itself - unless you obtain separate non-GPL licence from the copyright holder of the original source.

If however, you add code to a GPL application that allows it to call a separate library (dll etc) you do not need to GPL that separate library, only the calling code.

S-Copinger