views:

528

answers:

4

I want to write an application released as GPLv3 (will be written in .NET), and I'm writing it so others can write extensions as DLL libraries. I'm assuming these will also have to be released as GPLv3, and this is as intended.

One of the libraries I want the application to ship with on the first release will be a library that interfaces to a 3rd party application. The 3rd party application provides a free (as in beer) .NET library with API which is really a communication driver to communicate with their 3rd party application.

My question - is this OK? I'm assuming it is, otherwise I couldn't write code based on .NET and release it as GPLv3 since .NET is really a collection of libraries with APIs. Am I making sense?

+4  A: 

Keep in mind that this is a question you should be asking IP lawyers, not software developers. All we can give is our best guess.

My advice would be to read the license that comes with the API in question and, if you have any further questions, contact the API publisher directly. Guessing, even collective guessing, is a bad framework to build software on.

Jekke
+1  A: 

Although it's unlikely (as others have said) that you could release this as a GPL app, bear in mind that there are other licenses that you could use that are more permissive about what you can do with third-party code, but which still allow you to maintain some control (or not, as you desire) of the source code: linking, etc. LGPL, MPL, BSD license, etc, but

DannySmurf
You *can* release it as a GPL app, but it requires a bit more work.
Jason Baker
Right. If the intention is simply to get a (modifiable) version of the source code out into the world, there are paths of less resistance than GPL.
DannySmurf
+4  A: 

The GPL already includes provisions for "System Libraries" and certain "Standard Interfaces", which your DLL extension interface might be under. Things like the C runtime, the .NET Framework and POSIX APIs would fall under those exceptions. Your DLL extension interface might fall under the "Standard Interfaces" term.

However, if you are writing the application (not modifying an existing GPL application), then you can do whatever you want - it's yours after all.

If you're concerned that the DLL extension interface isn't a "a Standard Interface for which an implementation is available to the public in source code form", you might want to write a specific exception to the GPL to allow linking in non-GPL 3rd party libraries for extension DLLs to make it clear and to allow others to provide these extensions. Just be aware the with an exception like that, some developers might try to use it as a loophole for not having to release their modifications by packaging them in an extension DLL.

Of course, as with any posting related to licenses or other legal matters, the standard disclaimers apply (IANAL, use at your own risk, this is not advice, this may be completely incorrect, if you try to sue me over this I'll claim I didn't write it (someone must've broken into my SO account), etc., etc., etc.)

Michael Burr
You can also make an exception _just_ for the library in question.
KeithB
I've decided I can divide everything between loosely coupled modules. The core can be GPL, and the extensions can be BSD licensed, and there can be a standard client/server communication link between them. That will still protect the standardized part promoting competition, which is the goal.
Scott Whitlock
+2  A: 

According to the FSF's FAQ on the GPL:

Can I release a program under the GPL which I developed using non-free tools?

Which programs you used to edit the source code, or to compile it, or study it, or record it, usually makes no difference for issues concerning the licensing of that source code. However, if you link non-free libraries with the source code, that would be an issue you need to deal with. It does not preclude releasing the source code under the GPL, but if the libraries don't fit under the “system library” exception, you should affix an explicit notice giving permission to link your program with them. The FSF can give you advice on doing this.

See this entry in the faq for more details (it's a bit involved to paste here).

TL;DR If it's a system library, you can do it. Otherwise, you can affix a notice saying that the end user can link to the closed source library (contact the FSF if you need help with this).

Jason Baker