GPLV2协议重点FQ整理与总结
(2022-11-16 19:47:41)
标签:
gpl |
分类: 工作学习 |
0. 本文概述与导读
本文是对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 . (Historical note: As of December 2006 Sun is in the middle of
rereleasing its
3.3.Plugin的方式通常难以避免GPL传染
When are a program and its
plug-ins considered a single combined program?
It depends on how the main program invokes its plug-ins. If the
main program uses fork and exec to invoke plug-ins, and they
establish intimate communication by sharing complex data
structures, or shipping complex data structures back and forth,
that can make them one single combined program. A main program that
uses simple fork and exec to invoke plug-ins and does not establish
intimate communication between them results in the plug-ins being a
separate program.
If the main program dynamically links plug-ins, and they make
function calls to each other and share data structures, we believe
they form a single combined program, which must be treated as an
extension of both the main program and the plug-ins. If the main
program dynamically links plug-ins, but the communication between
them is limited to invoking the ‘main’ function of the plug-in with
some options and waiting for it to return, that is a borderline
case.
Using shared memory to communicate with complex data structures is
pretty much equivalent to dynamic linking.
3.4.可以将源码放入自有独立的非gpl协议的lib库中,并被GPL协议程序所调用。前提是自有且提供一个被GPL协议调用的例外申明
Can I write free software that
uses nonfree libraries?
If you do this, your program won’t be fully usable in a free
environment. If your program depends on a nonfree library to do a
certain job, it cannot do that job in the Free World. If it depends
on a nonfree library to run at all, it cannot be part of a free
operating system such as GNU; it is entirely off limits to the Free
World.
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 nonfree 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 nonfree library
is a drawback, and suggest the task of changing the program so that
it does the same job without the nonfree library. Please suggest
that anyone who thinks of doing substantial further work on the
program first free it from dependence on the nonfree
library.
Note that there may also be legal issues with combining certain
nonfree libraries with GPL-covered Free Software. Please see the
question on GPL software with GPL-incompatible libraries for more
information.
应用程序有合理规避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
转载请注明转自高孝鑫的博客
喜欢
0
赠金笔