如何看待近几年国内开源的现状?你是如何理解开源的?

感谢 @贾扬清 提到了我。我还在读硕士的时候尝试的“开源”还是刀耕火种的阶段。直接在个人主页上面挂一个zip包,里面有一些简单的指令。软件的使用者也只包含我们实验室里面的少数几个同学。然后逐渐的学会了上 github,采用统一的代码规范,写测试,做文档和社区的小伙伴一起推动。也认识了逐渐明白了开源并非就把代码挂出来那么简单。

很多小伙伴都说的很好。我想补充一些我从开源社区中学到的几个东西

开源的三个阶段

1. 开放源代码

开放源代码也是大家所通常理解的开源。开放源代码可以给同学们提供相互交流学习的机会,也可以使得像社区的使用交流,bug report等可以及时得到反应。从机制上,开源其实提供了一种无形的质量评价保障。评价一个工作的好坏,是骡子是马拉,出来溜溜就知道了。对于普通的程序员来说,展示自己作品的一个最好让大家发掘的方式。现在的很多领域如机器学习鼓励开源也是这个道理,实验的结果直接开源复现才让大家相信。而对于整个社会来说,各种创新开放也使得技术的进步更加快速。

2. 开放开发

如果说开放源代码是让把自己的软件展示出来的话。开放开发则是把一个软件变成社区的。软件不是一个固定的东西,需要维护,增加新特性,不断重构来保持它的生命力。这里面一个比较重要的问题是如何让任何一个对这个软件感兴趣的人可以参与进来。这其中包含了开放文档是否健全,改动的技术决策是否可以让开发者可以搜索获得等等,其他开发者的pull request是否可以被及时review接受等等。

不同的开源软件的开放开发程度其实也是不同的,有的软件主线的开发一直在一个内部机构,定期同步,有的会主要直接在主线开放开发等等。另外开放开发本身也并不是包含了代码实现。其实很多时候高质量的文档,code review, 社区互动等等都需要花费社区志愿者的大量精力。而只有对于这些方面都进行投入之后才会让更多的人来参与开发并且让项目更加健康地迭代下去。

3. 开放管理

开放开发让大家都可以参与一个软件的开发。而开放管理则是让积极的参与者成为社区的主人。很多成功的开源软件都有比较成功的开放管理机制。对于开放管理的开源社区来说,开源软件本身像是一个股份公司,而获得股份(开发者的信任和对于项目的方向控制)的方式是参与开发。开放的管理模式让更多的企业和高校可以共同参与开发和管理开源项目,把一个项目做的更加持久。而因为大家都可以成为开源项目的主人,也可以鼓励更多的合作。积极参与开发有贡献的个人会获得对于项目的写权限(committer)。许多成功的开源项目都才用开放管理的模式,比较著名的是apache模式,另外独裁模式如python(曾经是),linux也会有committer来共同管理社区。

开源的“货币”

开源本身是志愿行为,并没有货币交易(当然最近github的打赏功能把货币也加入其中),但是其中却发生了和货币一样的价值交换。 开源社区的一种“货币”是时间。参与开源贡献,会有不同的社区同学帮忙代码review和参与讨论,这些行为都需要付出大量的时间。参与开源贡献的同学付出了自己的时间,用来交换别的开发者的时间来进行技术交流和学习。随着时间的积累,很多时候开发者获得的另外一种“货币”是信任。一个人是否靠谱,是否愿意相信一个人的技术决策,是否可以胜任一个方向的tech lead,这些东西都决定了一个开放开发社区里面开发者对于社区本身决策的影响能力。虽然开源可以获得不少“货币”,最重要一点,开源开发者都是带着理想和情怀投入到开发中去,而这些理想和情怀本身才是开源社区里面最重要的东西。

代码并不是最关键的,最关键的是人

在一开始的时候,我们会觉得开源最重要的是代码。于是很多关于开源软件的争论会集中在代码在哪里,属于谁。实际上因为大部分开源软件许可证允许任意拷贝并且授权代码里面的专利给代码使用人,代码本身在哪里并不是最关键的问题。

软件并不是一个固定不变的东西,需要有不断的升级,维护和新功能的添加。而在其中都会涉及到人 — 谁来做这些事情。人很多时候比代码重要。假设某一天一个开源软件的主要开发方突然宣布不再开放源代码了了,这个时候要看其他开发者可以集合起来,有能力接着前一天的分支继续进行开发和维护,那么这个软件就会依然可以被大家开发使用,甚至逐渐集合有能力的社区伙伴重构或者重写一份都不会是问题。代码在哪里不关键,关键的是人。一个公司是否有人可以掌握开源软件本身的架构,是否有人可以对社区的方向有所影响,是否有人可以适配开源软件符合自己的需求,是否有人可以在必要的时候继续维护软件,这些才是最需要关心的问题。

活跃的开发者人群是大家使用开源软件的真正保障,也是社会得以快速创新发展的基础。

来源:知乎 www.zhihu.com

作者:知乎用户(登录查看详情)

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载

此问题还有 136 个回答,查看全部。
延伸阅读:
如何看待近几年国内开源的现状?你是如何理解开源的?

公司有权利征用我的开源项目吗,并且要求我将github上的repository闭源或者停止更新吗?