写点什么

中国互联网公司开源项目调研报告

  • 2019-04-01
  • 本文字数:3138 字

    阅读完需:约 10 分钟

中国互联网公司开源项目调研报告

近年来,开源技术得到越来越多的重视,微软收购 GitHub、IBM 收购红帽,都表明了开源的价值。国内公司也越来越多的参与开源,加入开源基金会/贡献开源项目。但是,它们到底做得如何呢?为此 InfoQ 统计了国内在 GitHub 上较活跃的 7 家一线互联网公司的 50 多个账号的 2800 多个项目,为大家呈现一部分答案。

一、公司及账号

本次参与统计的公司包括百度、阿里、腾讯、华为、美团、360、小米,一共 7 家公司,在最开始的时候,我们选定的是 10 家公司,它们都是国内互联网的代表型企业,但由于其他 3 家公司或没有统一管理自己的开源项目,又或是开源项目太少,没有分析的价值,所以我们就删去了。


在搜集这 7 家公司的开源账号的过程中,我们尽量收集了网络上的信息以避免遗漏,不过由于统计口径不一,有些公司只承认在 GitHub 公司主体账号旗下的项目,导致团队账号可能难以收集全面。但是我们又认为有必要收集以团队身份出现的公司账号,它们的行为也代表公司的一部分,公司也应该将这些账号视为公司开源战略的一部分,进行统一治理。


具体如下:



注:饿了么和优酷已经被阿里收购,故归入阿里旗下,下文分析的数据都是基于非 fork 的项目。

二、TOP10 开源项目

Star 数最多的项目 TOP10


Star 数越多,表示该项目越受欢迎,在 Star 数 TOP 10 的开源项目中,阿里有 6 个项目,百度有 1 个项目,腾讯有 2 个项目,美团有 1 个。


蚂蚁金服的 ant-design 以 4.3 万 star 数领跑,即使放在整个中国范围内,它也是最受欢迎的开源项目之一。而计算公司的项目数方面,阿里以 6 个遥遥领先,说明阿里在开源方面受到开发者的广泛认可。


在领域方面,star 数最多的项目里前端相关的项目有 7 个,包揽前三,一方面说明国内公司在前端开源方面做的最好,另一方面也是因为前端项目在 GitHub 上普遍更受欢迎。

贡献者最多的项目 TOP10


注:这里面的贡献者只包含拥有 GitHub 账号的人,邮箱未注册 GitHub 的开发者未显示在内


Contributor 数越多,表示项目越开放,在贡献者数排名前十的项目中,阿里令人吃惊的占据了 8 个席位,几乎全部包揽,百度则占据剩下两个。阿里的 ant-design 项目再次名列榜首,包括衍生项目 ant-design-pro 也榜上有名。


贡献者数量是体现一个项目是否开放的重要指标之一。项目越开放,它就会接纳更多来自社区的贡献。而由公司推出的开源项目尤其需要关注这一指标,因为有些公司开源项目只是将源码开放出来,但具体开发和路线演进并不允许它人染指。


我们可以看到,阿里已经意识到这个问题并努力做出了一些改进,我们也期待有更多国内公司的开源项目能够拥抱社区。

Commits 数最多的项目 TOP10


commits 提交数越多,表明项目越复杂,开发周期较长,协作者数量更多。在 commits 数前十中,阿里占了 5 个,百度占了 3 个,腾讯和美团各有一个。


这里笔者发现一个现象:部分大公司会 fork 一些知名的第三方项目并创建分支,但并未体现在 github 的 fork 关系里,其中以阿里居多,如 AliOS-nodejs 项目。笔者认为,这种行为并不值得鼓励。


在 Top10 项目中,百度的 Paddle 和 Apollo 项目名列前茅,说明百度声称的在 AI 方面基于开源理念来打造项目和产品,兑现了它自己的承诺,值得尊重。


另外我们发现,这 10 个项目有 4 个都是 Apache 基金会项目(Flink 由阿里收购而来),说明 Apache 基金会在开源方面名不虚传,也说明国内公司的确是把最好的项目捐献给了 Apache 基金会。

三、公司开源情况

哪些账号开源最厉害


在开源账号方面,各大公司的官方账号并不是拥有开源项目最多的账号,这一桂冠被阿里的 Kissy gallery 团队摘取,其原因是这个账号是 Kissy 前端框架的组件库账号。遗憾的是,Kissy 项目事实上已经死亡,其活跃期在 2015 年之前,在那个时代,Kissy 团队可以说是国内最早利用 GitHub 的先驱之一,它们固然值得尊重,但阿里是不是应该对这些账号做一些清理呢?

项目整体 star 数知多少


我们将所有公司的项目 Star 数做了一个分布图,我们发现,腾讯开源项目虽然少,仅有 130 个,但是质量高,Star 数 100 以上的项目有 97 个,占总数的三分之二以上;而阿里的项目虽多,Star 数 100 以上的项目也只有 237 个。这说明腾讯在对待开源时更为谨慎,推出的项目都是对开发者有帮助的高质量项目。


这里面最极端的公司当属华为,它虽然拥有 218 个非 fork 的项目数,但 Star 数 100 以上的项目仅有 14 个。其中的原因,一方面是华为多以贡献者的身份参与第三方的底层项目,如 Linux、Kubernetes 等,这些在统计中未能体现;另一方面,也说明华为在自有开源项目做得还不够,其表现与华为 IT 巨头的身份并不匹配。

各个公司强在哪些领域

我们统计了各个公司 Star 数 TOP10 的项目,并对其按领域分类。我们发现:


  • 大前端(前端和移动开发)项目最多,在阿里、百度、360、美团中前 10 个几乎都占了一半。腾讯是最夸张的,前 10 个项目里竟然有 9 个是大前端领域的。

  • 百度有 4 个是 AI 领域项目,在众多公司中别树一帜,包括 Paddle、Apollo 等都比较受欢迎。

  • 华为虽然项目少,但基本全是基础设施领域的项目,如 ServiceComb、CarbonData、LiteOS 等。

  • 小米有几个操作系统相关的项目较受欢迎。

哪家公司开源最活跃


最近更新时间可以表明项目的活跃程度,如果项目在过去一年都没有更新,说明很可能已经不再维护。


这里,我们统计了最近更新时间在三个月内的所有项目,发现这些项目中阿里的项目数是最多的,一共有 269 个,占了 48%,其次是百度,有 98 个,占了 18%。



GitHub 的 issue 区为开发者求助和协作交流提供了非常好的平台,而公司对项目的维护程度可以从公司解决掉的 issue 里窥知一二。


这里我们按公司分别统计了它们历史上解决的 issue 数(即 close 掉的 issue 数),其中阿里解决了超过 6 万个 issue,比之后的公司解决的加起来还要多,说明阿里对开源项目还是挺上心的,并不是传闻中的“开源后不管”。


排名靠后的公司在这一方面还有待努力。

总结:中国公司开源现状

上面的数据给我们提供了一些有趣的视角来研究国内开源的现状,其中,一些数据验证了我们之前的看法,比如大部分公司的优秀开源项目都以前端居多,因为前端群体在社区更活跃,前端代码一般也不太涉密,因此公司在心态上更开放一些。


而另一方面,有些数据出乎我们的意料之外,比如阿里的数据几乎在所有类别里都名列第一,有时甚至是其它公司之和,并且在社区化/开放等方面也做的不错。


腾讯在自有开源项目上数量偏少,这也与公司过去并不重视开源有关,近年来,腾讯积极地靠近各个开源基金会,也开源了一些高质量项目,收获了开发者的口碑。


华为在自有开源方面显得有些保守,它的发力点更多在参与社区开源上,自家开源的很多项目多为操作系统和基础架构相关。


而我们还可以看到,个别人和团队对整个公司的开源能产生重大影响,比如阿里的玉伯不仅是 Kissy 的创始人,也带领团队开发和维护 ant-design,撑起了阿里开源的大旗;百度有 echarts 团队;腾讯有 Alloyteam;360 有奇舞团等。


不好的方面则是,这些最优秀的中国互联网公司,在底层关键项目上和国外还是存在较大差距,如 ant-design/element 等,只是 React、Vue 等前端框架的组件库,是其生态系统的一部分,而自己作为生态核心的项目在国内极少,因此,国内开源只是看着热闹,在实际作用方面,和国外差距极大。


另外,国内公司对于 GitHub 还没有做到物尽其用,在开源治理上还有所欠缺,我们看到有大量的 fork 项目,有大量的空项目,这些项目应该第一时间清理。对于不再维护的项目,GitHub 也提供了归档功能,国内公司应该善加利用。


注:


  1. 这里选取的账号为公司账号/项目账号,或部门/团队账号,非个人账号。

  2. 部分项目因捐献给 Apache 基金会有重合已剔除,并只保留 Apache 里的数据。

  3. 数据统计截至日期为 2019 年 3 月 22 日,其后数据未计入。


2019-04-01 10:346647
用户头像

发布了 164 篇内容, 共 109.7 次阅读, 收获喜欢 392 次。

关注

评论 1 条评论

发布
用户头像
国内开源社区的治理水平亟待提高
2019-12-16 16:15
回复
没有更多了
发现更多内容

区块链政务系统开发解决方案

t13823115967

区块链+ 区块链开发落地 政务系统开发解决方案

甲方日常 59

句子

工作 随笔杂谈 日常

JVM调优不知道怎么回答,阿里总结四大模块,学不会就背过来

小Q

Java 学习 架构 面试 JVM

Spock单元测试框架实战指南四 - 异常测试

Java老k

单元测试 spock

《华为数据之道》读书笔记:第 7章 打造“数字孪生”的数据全量感知能力

方志

数据中台 数字化转型

Nginx的反向代理与负载均衡--配置Nginx

Linux服务器开发

nginx 负载均衡 反向代理 后端 Linux服务器

《华为数据之道》读书笔记:第 6 章 面向“自助消费”的数据服务建设

方志

数据中台 数据仓库 数字化转型 数据治理

聊聊销售背后的策略

吴晨曦

创业 销售管理

Spring 源码学习 02:关于 Spring IoC 和 Bean 的概念

程序员小航

spring 源码 源码分析 ioc

第六周作业

Griffenliu

面试无忧:源码+实践,讲到MySQL调优的底层算法实现

小Q

Java 数据库 学习 面试 算法

区块链开发落地,联盟链系统平台搭建

t13823115967

区块链 区块链开发落地 联盟链系统平台搭建

【薪火计划】06 - 你推崇的领导方式是怎么样的?

AR7

管理

架构师训练营第二周框架设计学习总结

Geek_xq

顶层设计已基本完备 数字货币将进入加速推进阶段

CECBC

数字货币

区块链如何助力精准扶贫?

CECBC

区块链 扶贫

架构师训练营第 1 期 - 第 10 周 - 学习总结

wgl

极客大学架构师训练营

监控之美——监控系统选型分析及误区探讨

华章IT

运维 云原生 监控 Prometheus

二分发代码模板

小兵

Arthas 实践——生产环境排查 CPU 飚高问题

阿里巴巴云原生

开源 云原生 中间件 Java 25 周年 Arthas

免费下载O’Reilly出版社全新之作《建立机器学习流水线》

计算机与AI

学习

使用 Go 实现 Async/Await 模式

Roc

channel goroutines Async Go 语言

三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境!!

冰河

Docker 云原生 k8s

我是如何使计算提速>150倍的

白日梦想家

Python 代码优化 Numpy

一枚程序猿的MacBook M1详细体验报告

Zhendong

CPU飙高问题排查

程序猿玄微子

磁盘到底是怎样工作的?一文理解硬盘结构

Guanngxu

操作系统

利用 Arthas 解决启动 StandbyNameNode 加载 EditLog 慢的问题

阿里巴巴云原生

阿里云 开源 云原生 中间件 Java 25 周年

数字货币——货币的第四次革命

CECBC

数字货币

Scala语法特性(三):面向对象的独特点

正向成长

特质 样例类 case class Traits

第六周学习总结

Griffenliu

中国互联网公司开源项目调研报告_开源_徐川_InfoQ精选文章