在国内开源之路上,BAT 这些大型互联网科技公司走在前列。
有数据为证:截至 2019 年 3 月 22 日,阿里开源的总项目数为 1243 个,百度开源的总项目数为 746 个,腾讯开源的总项目数为 131 个。在阿里和腾讯的开源官网上,我们看到更详细的数据。阿里开源项目总 Star 数是 667107,Contributor(贡献者)数是 18902 人;腾讯开源项目总 Star 数为 251445,Contributors(贡献者)数为 1009。
可以说,BAT 们扛起了国内开源的大旗。
InfoQ 曾经统计了国内在 GitHub 上较活跃的 7 家互联网公司 50 多个账号的 2800 多个项目,这些公司分别是百度、阿里、腾讯、华为、美团、360、小米。
在 GitHub 上,开源项目被建立,后续还要不断更新。如果一个开源项目仅仅是被建立,后期却没有更新,这说明它很可能已经不再维护。说直白点,这个开源项目已经被“放弃”。
这次,我们同样聚焦互联网大厂,以 BAT 三家公司为代表,看看那些被它们放弃维护的开源项目。
注 1:饿了么和优酷已经被阿里收购,故归入阿里旗下。
注 2:在本文中,一个开源项目最近一年半时间(即 545 天)没有更新,笔者即将其视为被放弃维护。因此,统计的开源项目,最后一次 Push 时间在 2018 年 3 月。
截至 2019 年 3 月,百度开源项目数 746 个,放弃维护的为 414;阿里开源项目总数 1243,放弃维护的 761;腾讯开源项目 131,放弃维护的 37。从比例来看,百度、阿里放弃维护的开源项目比例较高,超过 50%,而腾讯比例较低,只有 28%。
这一数字,并不能说明腾讯比百度和阿里在更新维护开源项目上更积极。
有个基本情况需注意:
阿里开源项目总数 1243 个,百度为 746 个,腾讯是 131 个。我们注意到,GitHub 上最早创建的开源项目时间,阿里是 2010 年 7 月,百度是 2012 年 11 月,腾讯是 2011 年 12 月 22 日。时间相隔不远,但是开源项目数却相差悬殊。这意味着,阿里、百度从 2010 年和 2012 年开始,对开源非常积极,所以才有众多的开源项目。
同时,我们注意到,腾讯开源官网提到,“从 2016 年底开始,腾讯对外开源开始进入了快节奏时代。”可以这么理解,腾讯开源项目在最近一两年步伐提速,非常积极。
从语言方面来看,BAT 放弃维护的开源项目涉及各种语言,范围较广。不过,绝大多数开源项目是 JavaScript 语言,占比超过 80%,其他占比较大的语言还有 C++、Java、C、Python 等。
Contributor 数越多,表示项目越开放。在 BAT 放弃维护的开源项目 Contributor TOP10 中,最高是阿里 alibaba/docker 容器项目,421 的贡献者。其他的开源项目,Contributor 几乎在 180-400 左右。
贡献者数量是体现一个项目是否开放的重要指标之一。项目越开放,它就会接纳更多来自社区的贡献。而由公司推出的开源项目尤其需要关注这一指标,因为有些公司开源项目只是将源码开放出来,但具体开发和路线演进并不允许它人染指。
commits 提交数越多,表明项目越复杂,开发周期较长,协作者数量更多。在 BAT 放弃维护的开源项目中,commits 的 TOP 10 均是阿里的开源项目。其中,阿里的 Specs 排名第一,commits 数 140490,遥遥领先。排名第二的是阿里 mongo 开源项目,commits 数 36375。
众所周知,一个开源项目在 GitHub 上 Star 数越多,表示该项目越受欢迎。它有点类似社交媒体上的“点赞”。在被放弃维护的 Star 数 TOP10 开源项目中,阿里有 7 个,百度有 2 个,腾讯只有 1 个。
其中,Star 数最高的是阿里 weex 项目,Star 是 17408。2016 年 3 月 11 日,阿里 Weex 开源,在 GitHub 上建立。Weex 是跨平台移动开发工具能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出 Native 级别的性能体验,并支持 iOS、安卓、YunOS 及 Web 等多端部署。
Weex 的技术关键词:
阿里巴巴出品、JavaScript 语言、JS V8 引擎、Vue 设计模式、原生渲染
在 GitHub 上,Weex 最后一次更新时间是 2017 年 10 月 19 日。Weex 官方消息:Weex 已经于 2017-02-24 迁移至 Apache 基金会,我们都会基于 Apache 的基础设施继续迭代。因此,创建者启用了新的 GitHub 仓库。
全新的地址中,incubator-weex 正常更新和维护,并且 Star 数已经达到 12965。
排名第二的是阿里 AndFix 开源项目,Star 数 6470。据悉,Andfix 是 "Android hot-fix" 的缩写。它是阿里巴巴开源的 Android 应用热修复工具,帮助 Anroid 开发者修复应用的线上问题。
AndFix 支持 Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。AndFix 的分支是 .apatch 文件。阿里 AndFix 在 GitHub 上创建于 2015 年 9 月 15 日,最后一次更新时间是 2017 年 10 月 18 日。如此算下来,这个开源项目已经近 2 年未更新。
排名第三的是阿里 dexposed 开源项目,Star 数 4073。Dexposed,是一个 Android 平台下的无侵入运行期 AOP 框架。旨在解决像性能监控、在线热补丁等移动开发常见难题,典型使用场景为:AOP 编程、插桩 (如测试、性能监控等)、在线热补丁、SDK hooking 以提供更好的开发体验。
阿里 dexposed 开源项目于 2015 年 6 月 30 日在 GitHub 上创建,最后一次更新时间是 2017 年 3 月 29 日。
排名第四的是百度 fex-team/kityminder,Star 数 2936。
据官方介绍,KityMinder 是百度 FEX 团队的 f-cube 小组(原 UEditor 小组)的又一力作。作为一款在线的脑图编辑工具,它有着不亚于 native 脑图工具的交互体验。同时,它充分发挥了 Web 云存储的优势,可以直接将编辑中的脑图同步到云端。
此外,借由独创的 “云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。百度 Kityminder 在 GitHub 上创建于 2013 年 12 月 16 日,最后一次更新时间是 2015 年 8 月 12 日。
阿里的 kissy 开源项目排名第五,Star 数 2651。
Kissy 是一款跨终端、模块化、高性能、使用简单的 JavaScript 框架。除了完备的工具集合如 DOM、Event、Ajax、Anim 等,它还提供了经典的面向对象、动态加载、性能优化解决方案。
作为一款全终端支持的 JavaScript 框架,kissy 为移动终端做了大量适配和优化,使用户的程序在全终端均能流畅运行。阿里 kissy 开源项目于 2010 年 7 月 10 日在 GitHub 上创建,最后一次更新时间是 2016 年 6 月 13 日。
腾讯的 AlloyImage 开源项目排名第六,Star 数 2311。
据悉,该开源项目来自腾讯的 Alloy Team 团队,AlloyImage 是一款基于 HTML5 的专业级图像处理开源引擎。它使用 JavaScript 语言开发,基于 Web 的在线图像处理引擎。除核心底层图像处理引擎,它还同时集成了一些方便快捷的图像处理 API。一句话,它具有强大的功能,可以便捷开发,具有丰富的扩展特性。
该开源项目 2012 月 11 月 11 日创建于 GitHub,最后一次更新时间是 2017 年 4 月 17 日。
顺便提一下这个开源项目背后的团队——Alloy Team ,腾讯 Web 前端团队,来自腾讯 SNG(社交网络事业群)。这个团队的目标是成为地球卓越的 Web 团队。AlloyTeam 的寓意是:像合金一样将各种技术,以及各个成员的聪明才智聚合在一起,从而产生更强的合金特性,未来我们也希望通过聚合业界的各大前端牛人,来共同推动 Web 前端技术在中国的发展。
腾讯的 tsf 开源项目排名第七,Star 数 2156。
TSF 是腾讯开源的一套基于协程和 Swoole 驱动的高性能 PHP 框架,可以帮助开发者快速开发和部署具备高 IO 吞吐能力的 HTTP/TCP/UDP 服务。
TSF 具备以下特点:
基于 PHP,相比 C++ 等语言具有更高的开发效率
基于 Swoole 强大的异步 IO 、定时器能力,极大的扩展了框架能力
实现了 PHP 协程能力,通过同步的开发方式就可以实现异步 IO 的能力
支持服务监控恢复能力
腾讯 tsf 于 2015 年 7 月 3 日创建于 GitHub,最后一次更新时间是 2017 年 10 月 24 日。
阿里的 cooking 开源项目排名第八,Star 数 1872。
cooking 是由饿了么前端团队开源的基于 webpack 的构建工具。官方称其为“更易上手的前端构建工具”,cooking 基于 webpack,具有项目零开发依赖、配置简单、脚手架、插件机制和个性化设置特点。
cooking 开源项目 2016 年 3 月 10 日在 GitHub 上创建,最后一次更新时间是 2017 年 11 月 14 日。
阿里的 wax 开源项目排名第九,Star 数 1732。
据官方介绍,wax 是一个框架,可以让你使用 Lua 语言编写原生 iPhone 应用程序。Wax 把 Lua 脚本语言与原生 Objective-C 底层 runtime 结合起来,使得你可以在 Lua 里面使用任何 Objective-C 类及框架。
目前,wax 在 GitHub 上创建于 2015 年 10 月 14 日,最后一次更新时间是 2017 年 3 月 30 日。
百度的 interview-questions 是百度 Fex 团队的面试问题,这个无需多讲。