越来越多的国内大公司都开始参与到了开源事业中,既是展示公司的实力,又是挖掘优秀人才的一个渠道,更是对社区的反馈。不过,在大公司里,可能都有着成熟的负责开源工作的团队,如果你只是一个小厂里的一线员工或者leader,但是也有着一颗参与开源事业的野心,该如何入手呢?下面是我的一些思路。
确定开源步骤
如果是首次参与开源工作,为了降低各种未知风险,需要把这个事情分步来走。
-
第一步:小范围开源。在公司内部开源,主要开源对象是使用过你们项目的人员,先向他们推广开源,但是我们要限定只供内部使用,不许外传。对应于OpenSource,这个内部开源其实也叫InnerSource,也是这几年很流行的一个概念。 在内部开源过程中我们只是去发现问题,不断完善开源策略,也多听取下相关人员的反应。 在这一步骤的一大难点就是如何调动相关人员的积极性:一方面要调动项目外部人员多多使用、审查我们的代码,另一方面也要调动项目内部人员及时响应外部人员的意见与需求。这考验的就是沟通的艺术了。
-
第二步:面向社会开源。 经过内部开源的试错与优化后,就可以开始准备真正的OpenSource了。
注意开源和专利的关系
无论大厂小厂,都应注意保护自己的专利。开源前,对于已有的代码,务必确保相关的专利已经提交到了专利局;开源后,每次release新代码前,都要确认相关专利已经提出了。
License
如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。下面这张经典的讲解图一定能帮助你找到答案
image
开源代码的细节问题
目前开源的方式有几种方案可以选择或者组合。
-
全部开源。 几乎没有公司能做到把一个内部项目全部开源,毕竟一个商业公司会和一些商业用户有接触,这其中一定会涉及到一些license的问题,或者一些私有化的需求等,都不能直接开源出去。
-
将其中的某些模块以库的方式提供。 用库的方式提供出去,无非是不想让别人看到我们的实现,但是呢,这个模块又是一个必备的插件,没有这个模块,整个项目就跑不起来。以库的方式提供可能会让有些人感觉不爽,那么就可以先在内源过程中试试,根据实际情况再做决定。
-
部分插件不能向外提供。 如果你的项目中有些模块不能对外,但是在提供给商业用户的sdk中又必须要有这些功能,那么可以这么做:首先把各个模块的注册机制提出来,对外提供接口,在使用开源部分的时候,先把相应的模块注册进去,然后再使用。
除了开源方式的选择外,还要注意整理确定patch提交的格式\代码风格\命名规则。
在哪开源
有两种方式可以选择
- 主流开源社区的服务器,如github,开源中国等
- 使用公司内部的服务器进行开源,然后在开源社区中进行clone,这里要注意原有的wiki是否可以迁移,issues是否可以迁移。当然,你也可以考虑要不要做一个项目专属的官网、论坛什么的。
关注公众号,掌握更多多媒体领域知识与资讯
网友评论