软件开源和不开源的区别

之前的一篇文章关于从特拉斯辞职到研发效能的探讨,在研发效能群内引发了热烈讨论。这篇文章旨在进一步深入探讨企业内源、开源社区和开源项目的话题。
企业内部开源,简称内源,是指把开发开源软件中学到的经验教训应用到公司或内部开发软件的实践。与此公司和可以并行开发专有软件。
开源社区是由拥有共同兴趣爱好的人们组成,他们根据相应的开源软件许可证协议公布软件源代码,同时也为网络成员提供一个自由学习交流的空间。由于开源软件主要由世界各地的编程者共同开发,开源社区在推动软件发展过程中起着巨大的作用。
关于开源项目和企业内源的讨论,有以下几点核心观念:
1. 共同兴趣爱好:任何人都可以参与自己感兴趣的项目,从简单的文档更新到复杂的代码贡献。
2. 开放式交流空间:基于代码协作、文档协作和讨论沟通的平台,大部分工作都是透明的。
3. 开放式协作:平等、自、精英领导,但不存在管理或考核。
企业是一个以盈利为目的的经济,其目的在于提高经济效益。如果做开源社区可以给公司带济效益,公司可以选择做;但做开源社区只是一种手段,而不是目的。企业的架构是自上而下的,存在考核、管理和领导的,与开源社区有很大的区别。
企业和开源社区也可以相结合。例如,Redhat作为一家开源解决方案供应商,为诸多IT技术提供关键任务的软件与服务,是许多重大开源项目的主要贡献者。它将开源社区项目产品化,从而达到盈利的目的。
关于企业为何要做内部开源(inner source),主要有以下几点动机:建立类似开源的文化,以及在企业内部开发专有软件。但企业内部项目与开源项目存在很大的差异,包括时间节点、交付日期规划、质量要求等。不是所有企业内部项目都适合采用企业内源的方式。
对于想要在企业内部推行企业内源的小伙伴,需要明确什么样的项目适合。例如,已经具备一定功能、仍需添加小需求的维护性项目;对时限没有严格要求的小项目;公司氛围宽松,员工有足够的时间与精力;公司的代码评审做得好;以及支撑的基础设施相对完善等。
通过与一些大企业的伙伴交流,了解到企业内源的实际效果并不像网上描述的那么光鲜亮丽。对于大公司的员工来说,工作压力已经很大,很难依靠“共同兴趣”去推行企业内源。除非企业内源也是员工的工作职责之一。但这与实际的项目制并无太大区别。
开源项目和企业内部项目虽然形相似,但意义不同。对于追求盈利的企业来说,项目的目的性很强,对时间、范围、质量、成本都有明确的要求。而企业内源需要在这些方面给出明确的答案,否则很难在大部分企业内部项目中展开。
