本文是对GNU官网上GPLV2 F&Q重要问题的整理,特别关注基于GPL协议源码做二次开发的厂商或同学比较关心的问题,以及使用GPL协议产品的甲方客户可能关心的问题。参考信息见文章末尾。
每个二级标题是一个关键结论,二级标题下的内容是对F&Q的引用,带下划线的是问题,之后的是回答。
I just found out that a company has a copy of a GPL’ed program, and it costs money to get it. Aren’t they violating the GPL by not making it available on the Internet?
No. The GPL does not require anyone to use the Internet for distribution. It also does not require anyone in particular to redistribute the program. And (outside of one special case), even if someone does decide to redistribute the program sometimes, the GPL doesn’t say he has to distribute a copy to you in particular, or any other person in particular.
What the GPL requires is that he must have the freedom to distribute a copy to you if he wishes to. Once the copyright holder does distribute a copy program to someone, that someone can then redistribute the program to you, or to anyone else, as he sees fit.
I want to distribute binaries via physical media without accompanying sources. Can I provide source code by FTP instead of by mail order?
You’re supposed to provide the source code by mail-order on a physical medium, if someone orders it. You are welcome to offer people a way to copy the corresponding source code by FTP, in addition to the mail-order option, but FTP access to the source is not sufficient to satisfy section 3 of the GPL.
When a user orders the source, you have to make sure to get the source to that user. If a particular user can conveniently get the source from you by anonymous FTP, fine—that does the job. But not every user can do such a download. The rest of the users are just as entitled to get the source code from you, which means you must be prepared to send it to them by post.
If the FTP access is convenient enough, perhaps no one will choose to mail-order a copy. If so, you will never have to ship one. But you cannot assume that.
Of course, it’s easiest to just send the source with the binary in the first place.
If you distribute binaries via FTP, you should distribute source via FTP.
I want to make binaries available for anonymous FTP, but send sources only to people who order them.
If you want to distribute binaries by anonymous FTP, you still have to provide source through one of the options listed in section 3. This should not be hard. You can provide a written offer for source if you want; section 3(b) allows this. But if you can find a site to distribute your program, you can surely find one that has room for the sources.
No matter how you distribute the source, the sources you provide must correspond exactly to the binaries. In particular, you must make sure they are for the same version of the program—not an older version and not a newer version.
You can make the sources and binaries available on different machines, provided they are equally easy to get to, and provided that you have information next to the binaries saying where to find the sources.
Does the GPL allow me to develop a modified version under a nondisclosure agreement?
Yes. For instance, you can accept a contract to develop changes and agree not to release your changes until the client says ok. This is permitted because in this case no GPL-covered code is being distributed under an NDA.
You can also release your changes to the client under the GPL, but agree not to release them to anyone else unless the client says ok. In this case, too, no GPL-covered code is being distributed under an NDA, or under any additional restrictions.
The GPL would give the client the right to redistribute your version. In this scenario, the client will probably choose not to exercise that right, but does have the right.
If I know someone has a copy of a GPL-covered program, can I demand he give me a copy?
No. The GPL gives him permission to make and redistribute copies of the program if and when he chooses to do so. He also has the right not to redistribute the program, when that is what he chooses.
What does this “written offer valid for any third party” mean? Does that mean everyone in the world can get the source to any GPL’ed program no matter what?
If you choose to provide source through a written offer, then anybody who requests the source from you is entitled to receive it.
If you commercially distribute binaries not accompanied with source code, the GPL says you must provide a written offer to distribute the source code later. When users non-commercially redistribute the binaries they received from you, they must pass along a copy of this written offer. This means that people who did not get the binaries directly from you can still receive copies of the source code, along with the written offer.
The reason we require the offer to be valid for any third party is so that people who receive the binaries indirectly in that way can order the source code from you.
My friend got a GPL-covered binary with an offer to supply source, and made a copy for me. Can I use the offer myself to obtain the source?
Yes, you can. The offer must be open to everyone who has a copy of the binary that it accompanies. This is why the GPL says your friend must give you a copy of the offer along with a copy of the binary—so you can take advantage of it.
Does moving a copy to a majority-owned, and controlled, subsidiary constitute distribution?
Whether moving a copy to or from this subsidiary constitutes ‘distribution’ is a matter to be decided in each case under the copyright law of the appropriate jurisdiction. The GPL does not and cannot override local laws. US copyright law is not entirely clear on the point, but appears not to consider this distribution.
If, in some country, this is considered distribution, and the subsidiary must receive the right to redistribute the program, that will not make a practical difference. The subsidiary is controlled by the parent company; rights or no rights, it won’t redistribute the program unless the parent company decides to do so.
Does the GPL allow me to sell copies of the program for money?
Yes, the GPL allows everyone to do this. The right to sell copies is part of the definition of free software. Except in one special situation, there is no limit on what price you can charge. (The one exception is the required written offer to provide source code that must accompany binary-only release.)
但关于源码的传播费用GPL协议做了约定,不能超出传播成本:
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
Does the GPL allow me to charge a fee for downloading the program from my distribution site?
Yes. You can charge any fee you wish for distributing a copy of the program. If you distribute binaries by download, you must provide “equivalent access” to download the source—therefore, the fee to download source may not be greater than the fee to download the binary.
If a library is released under the GPL (not the LGPL), does that mean that any program which uses it has to be under the GPL?
Yes, because the program actually links to the library. As such, the terms of the GPL apply to the entire combination. The software modules that link with the library may be under various GPL compatible licenses, but the work as a whole must be licensed under the GPL. See also: What does it mean to say a license is “compatible with the GPL”?
I’m writing a Windows application with Microsoft Visual C++ (or Visual Basic) and I will be releasing it under the GPL. Is dynamically linking my program with the Visual C++ (or Visual Basic) run-time library permitted under the GPL?
The GPL permits this because that run-time library normally accompanies the compiler or interpreter you are using. So it falls under the exception in GPL section 3.
That doesn’t mean it is a good idea to write the program so that it only runs on Windows. Doing so results in a program that is free software but “trapped” (in this case, trapped by Windows instead of by Java, but the effect is the same). (Historical note: As of December 2006 Sun is in the middle of rereleasing its Java platform under GNU GPL.)
应用程序有合理规避GPL风险的手段,即便使用Oracle官方驱动。应用程序基于JDBC或ODBC协议,也可以合法使用Oracle官方驱动包而不被传染。基本逻辑是应用与oracle的驱动之间是ODBC/JDBC manager,而ODBC/JDBC manager本身不是GPL协议的。如下是MariaDB官网给的说明,参见https://mariadb.com/kb/zh-cn/licensing-faq/#using-a-database-source-independent-framework。
The reason the GPL in the MySQL client library would not affect your application in this case is that the GPL client is supporting a standard interface and is thus merely an optional component among many. Your application could just as easily use the framework to connect to a RDBMS other than MariaDB or MySQL.
Any software can be connected to the GPL v2 licensed MySQL Connector/ODBC, without the need for that software to be GPLed. This is because there is a piece of general management software, the ODBC manager, between the GPLed MySQL Connector/ODBC and your software. If any logic would require the software which interfaces with MySQL Connector/ODBC to be GPL, then that would apply also to the ODBC manager itself. Yet, the ODBC manager is not GPL, neither on Windows nor on Linux. By consequence, no one would be allowed to use MySQL ODBC driver for anything.
同时除了Oracle官方驱动外,还有MariaDB的驱动可以使用。MariaDB的客户端驱动基于LGPL协议发布,同样遵守MySQL通信协议,可以用来链接MySQL数据库,对客户端没有任何GPL协议影响的可能,具体参考https://mariadb.com/kb/zh-cn/licensing-faq/ 和 https://mariadb.com/kb/en/client-libraries/。
https://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html
https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
https://jxself.org/translations/gpl-2.zh.shtml
https://mariadb.com/kb/zh-cn/licensing-faq/#using-a-database-source-independent-framework
转载请注明转自高孝鑫的博客