如何让项目的一部分成为开源?

时间:2013-05-17 12:44:31

标签: open-source

假设您有一个大型多服务集成项目。你突然决定将其中一个服务开源。如果不泄漏其他部分,你会怎么做?

例如,释放服务的整个存储库可能不起作用,因为其他服务的草图曾经存在于此存储库中,之后又被分开。

另外,你会对那些与“诚信”相关的部分做些什么。您可能有两个组件A和B,它们进行协作,但您只想开源A.您将如何处理与B相关的代码?

其他人如何实现相同目标的良好例子将有很大帮助。

1 个答案:

答案 0 :(得分:1)

将软件作为开源软件发布时,您需要确定许可证。有几个流行的已批准的开源许可证。 OSI批准许可证,如果您希望您的工作被其他人采用,您不应选择未经批准的许可证或设计自己的许可证: http://opensource.org/licenses/category

在开源许可证X下发布软件包A时,您没有义务亲自遵守许可条款。您保留打包A的版权,即使您的许可软件的其他人不允许使用非免费软件包B分发A的组合版本,您仍然可以执行此操作。

但是,只有在没有包B的情况下使用包A并且/或者如果您希望其他人为A做出贡献时,开源只是有用的。一旦其他人为A做出贡献,您就开始共享版权与他们的部分A。实际上,如果他们根据许可证X向您提供回馈,则在未经他们特别同意的情况下,您将不再被允许分发A和B的组合(实际上为您提供个人许可)。

现在让我们看看你有哪些选择:

  • 许可许可证Y下发布包A. BSD许可证是此类许可证的最突出示例。该许可允许每个人将A与任何非免费包B结合起来。它还允许每个人以非免费条款将A重新许可给其他人。您可以自行决定是否存在此问题。在此许可下发布的示例软件:X.org显示服务器,LLVM编译器,Mach内核(用于OS X),BSD操作系统。

  • 严格的非许可许可证X下发布程序包.GNU GPL v2 / v3许可证是最突出的示例。只有在相同或相当的许可下才允许重新分发包X.该软件无法链接到非等效许可证的软件并重新分发。 (允许链接A和B,但不允许分发)。您可以将GPL软件与BSD软件链接起来,因为BSD软件在您的发行版中变为GPL许可(因为BSD许可证允许这样做)。要仍然从外人的贡献中获利,请使用版权协议,在这些协议中,这些参与方会向您提供其贡献的完整版权。因此,即使A包含来自其他人的代码,您仍然可以自己在非GPL许可下分发包A,B。执行此操作的示例软件:MySQL。

  • 在不太严格的非许可许可证Z下发布程序包.GNU LGPL v2 / v3许可证是最突出的示例。这些许可证的行为类似于上述许可证,但特殊例外是允许将软件包A链接到任何非LGPL软件并进行分发。被许可人不得根据非LGPL条款重新分发您的工作,但允许他们将其与非自由软件结合使用,例如:通过插件系统。大多数使用此许可证的项目本质上是库,而不是最终用户软件。因此,您可以在非自由项目中使用这些库。突出的例子:Qt,Webkit(用于Chrome和Safari)。

选择解决方案时的问题基本上是:您希望其他人使用套餐A的自由度是多少?您提供的自由越多,您就越有可能找到收养,也可以回馈您的项目。然而,在最宽松的形式中,你为那些只从你在A工作中受益的人敞开大门,可能与你竞争,而不是回馈给你和/或公众。