文档管理中心

理一理!究竟哪些软件适合开源

是否要开源,开源自己的软件会带来哪些收益?这是自己要想清楚的,然而这是想不清楚的。你必须清楚,开源不会立马获得利益,也不直接与金钱挂钩。如果把开源和资金直接挂钩,这个问题永远得不到答案,或者得到是错误的答案。


本文我们用数据来分析当前的软件现状,也给大家分析开源软件带来一些思路。


  • 开源社区是非营利性组织


我们需要讲述下开源社区的特点,开源社区中软件代码公开的方式共享,由志愿者运作管理,任何人都可以参与,参与者通过网络直接进行讨论。重要的一点,开源社区属于非盈利组织,运营的开源软件不直接获得利益。那么不赚钱的软件用来开源就可以了,这样的结论属于逻辑紊乱。


  • 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

点赞
4
收藏
4
回复
9
分享
举报
浏览1771 发布于2019-08-21 01:36未知归属地
全部评论
最多点赞
最新发布
最早发布

如此好的帖子,咋才让我看到

9楼回复于2020-04-26 02:29 未知归属地

这帖子值得讨论一番!!

8楼回复于2020-04-23 06:34 未知归属地

厉害了,以前没注意到

7楼回复于2020-04-22 02:00 未知归属地

楼主分享辛苦了!!!

6楼回复于2020-04-20 03:35 未知归属地

我表示无能无力


5楼回复于2019-08-28 11:31 未知归属地

这帖子,硬核啊


4楼回复于2019-08-27 05:42 未知归属地

蛮难的样子,我不会


3楼回复于2019-08-25 04:05 未知归属地

多多分享啊,我还挺喜欢看的


2楼回复于2019-08-25 04:03 未知归属地

顶上去大家都看到


1楼回复于2019-08-21 08:48 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。