如何开源现有的代码库?

Mat*_*euP 3 open-source

我正在为之工作的公司面临一些困难,我们的未来就是不确定的.在过去几年中,我们开发了一个构建社区应用程序和社交网络的框架.我们认为这一举措不应该完全丢失,并且可能对社区有用,所以我们决定开源.

我对这个过程有一些疑问:

  • 如何选择最合适的许可证,知道原作者仍然可以做出贡献和/或做一些咨询?
  • 我们在代码库中需要做哪些必要的修改?
  • 您是否对某些现有的文档/书籍有一些指导,可以涵盖这个广泛的主题?

我知道那些问题是非常开放的,没有简单的答案,但我想听听一些有类似经历的人的意见.

提前致谢 !

Bri*_*ell 6

对于许可证,您必须询问您的许可目标.您的目标是构建一个回馈代码的人社区,而不是让其他任何人创建代码的专有分支吗?那么GPL将是一个很好的选择许可.您的目标是允许您保留版权,将其作为开源分发,但是为希望将其与专有软件链接的人提供替代许可?同样,GPL可能是一个不错的选择,但在这种情况下,您需要确保从任何其他贡献者设置版权分配,这些贡献者会将更改发回给您,以便您可以重新许可其贡献.

听起来您的代码可能是服务器端软件,在这种情况下您可能需要查看AGPL ; AGPL就像GPL一样,但如果他们在自己的服务器上运行它(GPL不需要,因为它只在你分发时需要任何东西),也要求人们将源分发给变更.

如果你希望人们在编写专有软件的同时能够构建它,但仍然会对软件本身进行更改,那么LGPL就相当不错了.如果你不关心专有的叉子,并且想要一些简单的许可,那么麻省理工学院的许可证是一个不错的选择.

唯一必要的修改是删除您无法合法发布的任何代码.如果您拥有所有代码的版权,那么它应该都是好的,但要小心任何加密代码,如果您的程序中有任何代码,请与律师联系.出口限制可能很难处理,尽管它们确实有一些条款可以使开源软件的过程更简单.

除了必要的修改之外,最好确保您的代码易于构建并在尽可能多的系统上运行.例如,您应该检查哪些依赖项是必需的,哪些依赖项可以是可选的.关于如何构建和安装软件的一些好文档也很好,以及任何软件开发(不仅仅是开源)中所需的所有常用内容,如易于构建的系统,单元和回归测试等.

还有一些需要考虑的事情是:

  1. 其他人如何得到他们的改变?邮件列表上的补丁?附加到错误报告的补丁?在GitHub分叉
  2. 你会使用什么版本控制系统?我一般主张像GitMercurial这样的分布式版本控制系统,但Subversion也非常受欢迎,应该可以胜任.
  3. 确保你明确社区应该如何工作; 一个描述如何获取软件以及如何贡献的网页,指向您的邮件列表或IRC频道的指针或您想要讨论的任何媒体.如果您要拥有一组核心提交者或类别,请记录选择提交者的过程如何工作.

我可以继续列出更多和细节,但我可能会重复已经说过的事情.如果您想了解更多信息,我建议您阅读Karl Fogel的" 制作开源软件".