热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

中国互联网公司开源项目调查报告:BAT们谁是开源王者?

近年来,开源技术得到越来越多的重视,微软收购GitHub、IBM收购红帽,都表明了开源的价值。国内公司也越来越多的参与开源,加入开源基金会贡献开源项目。但是,它们到底做得如何呢?为

近年来,开源技术得到越来越多的重视,微软收购 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 也提供了归档功能,国内公司应该善加利用。

注:

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

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

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



推荐阅读
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • Java服务问题快速定位与解决策略全面指南 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 六个接私活的平台,技术在手,财富自由!值得推荐给每一位专业人士!
    本文将介绍六个适合专业人士接私活的平台,帮助技术人才实现财富自由。这些平台不仅提供了丰富的项目机会,还为用户搭建了高效的合作桥梁,是每位技术人士不容错过的资源。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 在Unity3D的第13天学习中,我们深入探讨了关节系统和布料模拟技术。关节系统作为Unity中的关键物理组件,能够实现游戏对象间的动态连接,如刚体间的关系、门的开合动作以及角色的布娃娃效果。铰链关节涉及两个刚体的交互,能够精确模拟复杂的机械运动,为游戏增添了真实感。此外,布料模拟技术则进一步提升了角色衣物和环境装饰物的自然表现,增强了视觉效果的真实性和沉浸感。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
author-avatar
mobiledu2502857377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有