我碰巧知道有一个路由软件,它有一个 GPL 开源版本 Zebra 项目和一个商业版本 Zebos。这违背了我对开源的理解。如果这 2 个软件基于相同的代码库,那么 GPL 版本自动强制要求所有其他变体(包括商业版开源软件)不是正确的吗?
4 回答
我不是律师,但是:
GPL 要求 GPL 代码的所有变体都是 GPL 的,但是,没有什么能阻止原作者提供 GPL 和非 GPL 变体的原始代码。
例如,我可以编写一个库,并根据 GPL 发布它,也可以根据需要付费的专有许可单独发布它。由于我没有修改 GPL 许可版本,这很好。任何获得 GPL 的人都将受到 GPL 的约束。根据专有被许可人的条款向我付款并获得它的任何人都将受到该许可条款的约束。
当一家公司决定根据 GPL 的条款开源某些东西时,没有什么可以阻止它对原始代码库做任何想做的事情,包括在不发布它们的情况下进行修改。GPL 约束同意许可的人,但不约束原作者。
如果核心是开源的并共享其一个案例,但请考虑以下事项:
2 个版本,一个依赖开源组件,一个不依赖,例如:
一家专门从事 C#/WPF 开发的软件公司,开发了A 版,其中Component X 是用 C# 编写的。他们想要一个功能相同的版本,但是在Web 环境中,他们不能使用他们的核心代码并且必须重新编写,但是他们使用了组件 X 的开源替代品,无论您选择什么原因(人力,上市时间等):
结果:
A 版将是商业版。
版本 B 将是开源的。
版本之间没有代码共享,尽管它们基本上是相同的产品。
附加说明
我相信(值得研究)您可以在版本之间共享代码,但在某些情况下仍然不共享相同的许可证定义。例如 :
版本 A 和版本 B 都是客户端应用程序,每个都没有代码共享,但使用相同的服务器应用程序。
Zebos 是商业的,zebra 是开源的。两种软件的代码库不同。Zebos 来自 IPInfusion,zebra 是开源的。
一些公司拥有产品的开源版本,但提供额外的收费服务,例如支持。