我有一些我想保留的闭源代码(由我编写)。 但是我想在开源项目中使用一些代码 - 这些代码也可以由我独自编写,但是可以在任何地方发布,供任何人使用。
我怎样才能完成这样的事情:
这是否就像拥有两个代码树一样简单,两者都附有不同的许可证?一个zlib许可证,一个我自己的许可证?
注意,我有点偏向于使用zlib许可证,因为它很短,我相信我理解它并同意它是合适的(我不介意有人使用代码用于商业目的)。
答案 0 :(得分:2)
第一部分确实需要两个代码树。如果您使用的是分布式SCM,例如git,mercurial或bazaar,那么它就不会太复杂:
open-foobar
enterprise-foobar
master-open
跟踪open-foobar/master
,而master-enterprise
跟踪enterprise-foobar/master
master-open
分支中提交新的开放内容,然后将其推送到开放式存储库master-open
合并到master-enterprise
,这意味着您在私有网站中包含来自开放存储库的所有提交master-enterprise
分支中提交新的私有内容,然后将其推送到开放式存储库,确保您不会意外地将这些提交合并到master-open
分支中。git cherry-pick <commit-id>
来复制提交,而不会暴露它来自私有分支的事实这个工作流程主要集中在git上,但它可以很容易地适应任何其他SCM系统。
对于第二部分,默认情况下,根据明确授予您所创建代码的所有版权的合同未向您支付的人的补丁将保留代码原始作者的版权。这意味着除非他们授予您代码许可,否则您不能将其包含在您的私有分支中。通常情况下,除非在项目许可中以某种方式提及,或者在补丁提交过程中(通过单击提交按钮授予许可,否则它甚至不授予您将许可包含在开源项目中的许可) ... 的)。 Apache许可证在这里很好,因为它明确提到提交项目的补丁是自动许可的,因此它们可以包含在代码中。我没有读过zlib许可证,所以我不能说它是否有类似的条款;如果不确定包含一些文本,要求用户同意他们授予您根据项目许可将任何补丁提交包含在开源项目中的权利。
如果您还希望将已提交的修补程序包含到您的私有项目中,那么必须要求获取代码的版权许可,以包含在其代码的任何私有衍生产品中 。有关详细信息和一些示例,请参阅Wikipedia's article on CLAs。对于某些“标准”CLA,您可以查看Project Harmony。
答案 1 :(得分:1)
Apache组和其他人要求代码提交者“签署”任何更改的所有权。你需要做同样的事情。在接受修复或增强之前,他们必须签署代码。