GPL + Non


The program is free and open source, but the combination of the program and the library isn't, and the program alone might not be functional. It depends on what the library actually does, and how essential to the functionality of the program it is.

If it is a library that's part of the operating system, or otherwise commonly installed on the systems of your users, the users will already have it and you'd be giving them a FOSS program, just like any FOSS application that runs only on Windows (like Miranda), or a FOSS plugin for a larger proprietary program.

Another case is when you have an optional feature to interface with a proprietary application on the system, for example a FOSS communication program that has the functionality to access the address books of third-party applications, including proprietary ones like Outlook. In this case the library isn't required at all for the main functionality.

If, however, you're making a stand-alone program whose main functionality depends on a proprieatry library (for example, the entire functionality is in a proprietary library, and only the GUI is FOSS), your app would be FOSS in theory but not in practice, because the library is an integral part of your application that can't be removed.

Note that you'd probably be violating the GPL if you use any third-party GPL code or libraries unless the proprietary library is part of the operating system. So don't use third-party GPL code and third-party proprietary code together. (Of course, if you're not distributing the third party library OR you're using only your own code, it would probably be legal, but you'd be building a software combination that's illegal to distribute in a working form.)


The question itself is a bit confused, partially because you are mixing terminology.

First off, the GPL is right out. The straight GPL requires that anyone distributing the software also distribute all the sources for everything that is linked into it. Your users can't do that, so they won't be able to distribute. You still can distribute your code, because you own the copyright to your code, but nobody else would be able to do it.

Because of this, you cannot truly claim your program is Free Software.

BSD and Apache may be more forgiving. I don't use them, so I'm not as familiar with them. Whether you can or can't distribute there probably has more to do with the license on that proprietary library (which you didn't say anything about). It would be pretty easy for a proprietary license to cause you to run afoul of the Open Source Definition though. All it would have to do is limit redistribution in some way, or discriminate against certian types of uses.

So based on this and the comments I'm seeing, I'd have to say that no, this would probably not qualify as either Free Software or OpenSource. However, that wouldn't stop it from being useful to those folks who have a license to the third-party library, so I don't think any of these verbal technicalities should deter you. It should probably be made clear that redistribution will only be legal in source code form. For executables to be redistributed, you'd have to use a permissive license ( not the GPL ) and it would have to be distributed in accordance with that third-party library's license for redistributing binaries it is compiled into (likely no dissassembly, etc). This should also be made clear.


As for GPL, there is answer to your question in GPL FAQ: Can I write free software that uses non-free libraries?

In short: you can use GPL but you would need to provide additional permissions to use non-free libraries.

In details it's described in What legal issues come up if I use GPL-incompatible libraries with GPL software?

If you want your program to link against a library not covered by the system library exception, you need to provide permission to do that. Below are two example license notices that you can use to do that; one for GPLv3, and the other for GPLv2. In either case, you should put this text in each file to which you are granting this permission.

Only the copyright holders for the program can legally release their software under these terms. If you wrote the whole program yourself, then assuming your employer or school does not claim the copyright, you are the copyright holder—so you can authorize the exception.

As for copycenter licenses (BSD and the like), they don't prohibit linking with non-free libraries, so you may use them as is, without special additions.

Of course, general level of freedom of your software package will be limited by licenses of libraries that are needed to be distributed with your software. So I would like to cite gnu.org again:

So please consider: can you find a way to get the job done without using this library? Can you write a free replacement for that library?

If the program is already written using the non-free library, perhaps it is too late to change the decision. You may as well release the program as it stands, rather than not release it. But please mention in the README that the need for the non-free library is a drawback, and suggest the task of changing the program so that it does the same job without the non-free library. Please suggest that anyone who thinks of doing substantial further work on the program first free it from dependence on the non-free library.

链接地址: http://www.djcxy.com/p/79558.html

上一篇: 使用我的GPL应用程序发布第三方GPL库时的义务

下一篇: GPL +非