是否要开源,开源自己的软件会带来哪些收益?这是自己要想清楚的,然而这是想不清楚的。你必须清楚,开源不会立马获得利益,也不直接与金钱挂钩。如果把开源和资金直接挂钩,这个问题永远得不到答案,或者得到是错误的答案。
本文我们用数据来分析当前的软件现状,也给大家分析开源软件带来一些思路。
开源社区是非营利性组织
我们需要讲述下开源社区的特点,开源社区中软件代码公开的方式共享,由志愿者运作管理,任何人都可以参与,参与者通过网络直接进行讨论。重要的一点,开源社区属于非盈利组织,运营的开源软件不直接获得利益。那么不赚钱的软件用来开源就可以了,这样的结论属于逻辑紊乱。
github上开源项目的分析
当前开源项目多用github来管理,github的数据适合用来分析开源软件的现状。
分析下2018年全年所有的github的项目,希望能获得一些灵感。那么我们来用通过start、fork、watch等数据进行分析,这种方法用于单个项目的分析比较有用,为了分析所有的开源项目背后的一些特点,这样显然是不够的。注:如下的数据来源来自于阿里巴巴的开源组织。
因为开源项目的活跃性可以通过如下的数据来衡量,如comment(评论),issue提问数、reviewComment(审核的评论数)、pull request(修改请求,openPR还未合入的修改请求,mergePR已经合入的修改请求)。设定如下如下公式:
按照合入大于评论和提问的原则,其中a=1,b=2,c=3,d=4,e=5。其中列出openIssue的原因在于关心的人较多,不列出closeIssue的数目原因是做了一个假设,假设close的Issue都已经不再被关注,也就是表明其变得更稳定,活跃性指标不应当包含closeIssue。此公式解释起来就是项目中参与代码编写、review、提问的次数越多,表明项目越活跃。
通过如上的公式分析,得到如下的表格:
最多活跃度的社区的贡献者(开发者)都是“机器人”,这间接说明了CICD是开源质量的保障。CI持续集成,CD持续发布。
如果把某个项目的开发者统计全部加到一起,应当算该项目的活跃度。也就是,然而为了减少因为少量作者带来的求和值过大,给开发者活跃度上加一个系数,也就是,α=0.5,获取到是数据是:
从上表可见,微软、谷歌、facebook等公司的项目高居榜首。谷歌、facebook一直都以开源为主,而微软的闭源历史更悠久。这说明了什么?只能说明开源可能会成为程序员最终的工作形态,是一种必然的趋势。
现有开源软件的分类
按照业界比较有名的2层louvain社区检测算法,选取大于5000 stars的随机8000个项目为样本,得到如下的数据:
从上表可知, 占据50%以上都是平台和工具;AI、Database、Cloud、BigData等热门话题的比例也比较高。
1. 开源软件的使用者是程序员,程序员有一种特质,期望搞清楚所使用软件的原理,所以平台和工具类软件适合开源,可以二次开发构建生态。
2. 共性难题适合开源,如AI、Database、Cloud、BigData等共性难题
综上所述,开源软件作用使得开发软件更简单,开源的非盈利性要吸引很多人来贡献开源。故开源应当关注在能真正解决问题,能真正为开发者提供便利,关注和笼络开发者,解决开发者的实际问题是开源成功的必经之路。开源不与资金直接关联,是一种违背商用规范的奇妙成功,是一种文化,需要放长线钓大鱼的一种远见。
本文系转载,作者:HW-ZL






































苏公安网备 32011402010933号