Kivy中文编程指南:授权协议 - 《Kivy 1.9.2 中文开发文档帮助手册教程》 - 极客文档
避免二进制文件¶
有一种方法也许能够避免这种很狗很麻烦的授权协议什么的鬼东西,就是不用任何第三方的鬼扯玩意来构建你的应用。你可以用 Python 来自己创立一个模块,在其中的 __main__.py
都只有你自己的代码,而 setup.py
列出需要的依赖包。
这样你依然可以发布你的应用—就是你的代码,然后你就不用管任何其他的授权协议了。不过这样就更像是搭配使用,而不太算是发布程序了。这时候满足各种授权的依赖关系,就转移到你的程序的用户身上了,他们需要自行搞定运行环境来使用这个模块。如果你比较关心自己的用户,建议你还是花点时间来阅读一下可能导致的后果。
<< 这类存在协议风险的 app,对于大型公司来说,即使 app 采用开源免费的 MIT 协议;但是为了避免可能存在的协议风险,这类 app 就算是摆在它们的面前,它们自己也不敢使用吧?况且还有产品的服务问题。
Am I bound by the license of a library that is used in my project but is not distributed with it?
I want to publish a small open source project on GitHub. I'd like to release it with either MIT or Apache license.
The project has unit tests that use JUnit library. JUnit is released with the Eclipse Public License v1.0. JUnit is not distributed in the project - it is downloaded and used at build time by Maven, the build tool.
Am I bound by the license of a library that is used in the project but is not distributed with it? If I am, can I use a library released with the Eclipse Public License in MIT or Apache licensed projects?
My own thoughts (the most pessimistic scenario)
As the unit tests use JUnit, the project is a derivative work of JUnit, even though JUnit is not distributed with it. Distributing the project automatically means distributing JUnit.
The Eclipse Public License (the JUnit's license) says:
A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that … its license agreement:
There is a list of four requirements here that sound trivial but which, perhaps, are not fully addressed in the MIT and Apache licenses (disclaiming all warranties, excluding any liability, a statement about additional provisions, a statement about availability of the source code).
So, the Eclipse Public License may not be compatible with the MIT and Apache licenses, and I may not be able to use JUnit.
Follow
asked Mar 31, 2014 at 7:08
1,05311 gold badge1010 silver badges1111 bronze badges
- Using JUnit doesn't make the project using it a derivative. Commented Apr 2, 2014 at 8:42
-
1
One thing I try to do when not sure is look for examples. In this case, many Apache projects use JUnit and they are distributed under the ASL. For instance, unit tests in the Hadoop project use JUnit. Commented Jan 14, 2016 at 18:07 - A related discussion: Using code under Apache 2.0 License in my program using MIT License
– blong
Commented Feb 22, 2017 at 18:10
1 Answer
Sorted by:
5
As a general rule, if you don't distribute someone else's code you are not obliged by any of its licence terms when you distribute your own. The liability comes at the point where the code is actually merged.
Assume that A writes and distributes code for B to use, and that A's program uses code written by C but A does not distribute any of it. Then the liability for compliance with C's licence falls with B, the user, at the point where A's code is merged with C's. B would need to be warned of this liability.
Sorry if that's complicated, but it's not easy to explain clearly. The point is that copyright law is mostly about copying (distribution) and not so much about using (consuming).
As I tell people repeatedly, if you make no money out of it and harm no-one then just do your best and don't worry too much. If you make money out of your product or services and/or if you may cause damage to someone, you must take competent legal advice. That won't protect you, but it will warn you of the risks and perhaps how to mitigate them.
Re your other question, it seems to me that Apache and MIT would be compatible with a work released under EPL but not necessarily vice versa. Neither of them fits with GPL but may fit with LGPL in some circumstances. Mixed licences are indeed a royal pain.
Follow
answered Mar 31, 2014 at 12:45
8,15722 gold badges2222 silver badges4545 bronze badges
- Thanks for the explanation! It sounds reasonable to me. I'll wait a bit longer, and then will accept the answer if nobody offers a different opinion.
– Alexey
Commented Mar 31, 2014 at 22:08 - There is a thing that I don't understand here. Let's say the code distributed by C is a library released with GPL or any other copyleft license (hypothetically). Flowing the logic of your example, A can develop a commercially-licensed piece of software which uses this GPL library provided B will download the library and build the software themselves. Downloading libraries and building an application can be an easy task with dependency management/build tools like Maven. Is it a flow in copyleft licenses? Or is there something else that I do not understand?
– Alexey
Commented Apr 1, 2014 at 0:05
- @Alexey: Downloading and building applications is typically not restricted by OSS licences. As I said the main restrictions are on distribution, not usage. Commented Apr 1, 2014 at 0:42