我正在为之工作的公司面临一些困难,我们的未来就是不确定的.在过去几年中,我们开发了一个构建社区应用程序和社交网络的框架.我们认为这一举措不应该完全丢失,并且可能对社区有用,所以我们决定开源.
我对这个过程有一些疑问:
我知道那些问题是非常开放的,没有简单的答案,但我想听听一些有类似经历的人的意见.
提前致谢 !
对于许可证,您必须询问您的许可目标.您的目标是构建一个回馈代码的人社区,而不是让其他任何人创建代码的专有分支吗?那么GPL将是一个很好的选择许可.您的目标是允许您保留版权,将其作为开源分发,但是为希望将其与专有软件链接的人提供替代许可?同样,GPL可能是一个不错的选择,但在这种情况下,您需要确保从任何其他贡献者设置版权分配,这些贡献者会将更改发回给您,以便您可以重新许可其贡献.
听起来您的代码可能是服务器端软件,在这种情况下您可能需要查看AGPL ; AGPL就像GPL一样,但如果他们在自己的服务器上运行它(GPL不需要,因为它只在你分发时需要任何东西),也要求人们将源分发给变更.
如果你希望人们在编写专有软件的同时能够构建它,但仍然会对软件本身进行更改,那么LGPL就相当不错了.如果你不关心专有的叉子,并且想要一些简单的许可,那么麻省理工学院的许可证是一个不错的选择.
唯一必要的修改是删除您无法合法发布的任何代码.如果您拥有所有代码的版权,那么它应该都是好的,但要小心任何加密代码,如果您的程序中有任何代码,请与律师联系.出口限制可能很难处理,尽管它们确实有一些条款可以使开源软件的过程更简单.
除了必要的修改之外,最好确保您的代码易于构建并在尽可能多的系统上运行.例如,您应该检查哪些依赖项是必需的,哪些依赖项可以是可选的.关于如何构建和安装软件的一些好文档也很好,以及任何软件开发(不仅仅是开源)中所需的所有常用内容,如易于构建的系统,单元和回归测试等.
还有一些需要考虑的事情是:
我可以继续列出更多和细节,但我可能会重复已经说过的事情.如果您想了解更多信息,我建议您阅读Karl Fogel的" 制作开源软件".