谁是2017年度开源贡献之王?—— GitHub 数据分析报告

周其
 周其
发布于 2017年10月27日
收藏 20

这位作者分析了 2017 年截至今天 GitHub 上所有的 PushEvents,对于每个 GitHub 用户都尽量分辨了他们属于哪个组织,并且只关注在 2017 年增长超过 20 个 star 的仓库(比如 Apache 目前在 GitHub 有超过 1500 个仓库,但只有 205 个在今年获得了 20 个以上的 star。因此,这里只分析这 205 个仓库的提交情况)。

各公司的贡献情况

按仓库 star 数排名

顶尖的贡献组织比较:

  • 微软大约有 1,300 名员工积极地将代码推送到 GitHub 上的 825 个顶级仓库

  • 谷歌大约有 900 名员工活跃于 GitHub,将代码推送到约 1,100 个顶级仓库

  • 亚马逊大约有 134 名员工活跃于 GitHub,仅将代码推送到 158 个顶级仓库

  • 谷歌员工贡献的代码仓库比微软的多了 25%,仓库获得的 star 数也更多(530,000 vs 260,000)。亚马逊仓库 2017 的 star 总数为 27,000。

亚马逊远远落后于微软和谷歌,那夹在它们之间有什么公司? 根据贡献情况排名如下:RedHat,IBM,Pivotal,Intel 和 Facebook 也做出了突出贡献。

Facebook 和 IBM(US) 的 GitHub 用户数量与亚马逊的相似,但他们贡献的项目收获到了更多的 star(尤其是 Facebook):

紧接着的是 Alibaba, Uber, 和 Wix:

GitHub,Apache 和 Tencent:

Baidu, Apple 和 Mozilla:

更详细的内容可直接参看这个可交互的版本:The top contributors to GitHub (2017)

怎么做到的?

1. 数据来源:GitHub Archive

2. 怎么判断 Github 用户属于哪个公司?

这里主要通过用户提交记录中的邮件地址来进行判断。当然不是每个人都会用自己组织的邮箱地址,有很多人在 Github 上都选择如 gmail.com, users.noreply.github.com 或其他的邮箱,这种情况就没有办法了。

3. 所用工具:Google Big Query

4. 具体的 SQL 代码:

#standardSQL
WITH
period AS (
  SELECT *
  FROM `githubarchive.month.2017*` a
),
repo_stars AS (
  SELECT repo.id, COUNT(DISTINCT actor.login) stars, APPROX_TOP_COUNT(repo.name, 1)[OFFSET(0)].value repo_name 
  FROM period
  WHERE type='WatchEvent'
  GROUP BY 1
  HAVING stars>20
), 
pushers_guess_emails_and_top_projects AS (
  SELECT *, REGEXP_EXTRACT(email, r'@(.*)') domain
  FROM (
    SELECT actor.id
      , APPROX_TOP_COUNT(actor.login,1)[OFFSET(0)].value login
      , APPROX_TOP_COUNT(JSON_EXTRACT_SCALAR(payload, '$.commits[0].author.email'),1)[OFFSET(0)].value email
      , COUNT(*) c
      , ARRAY_AGG(DISTINCT TO_JSON_STRING(STRUCT(b.repo_name,stars))) repos
    FROM period a
    JOIN repo_stars b
    ON a.repo.id=b.id
    WHERE type='PushEvent'
    GROUP BY  1
    HAVING c>3
  )
)
SELECT * FROM (
  SELECT domain
    , githubers
    , (SELECT COUNT(DISTINCT repo) FROM UNNEST(repos) repo) repos_contributed_to
    , ARRAY(
        SELECT AS STRUCT JSON_EXTRACT_SCALAR(repo, '$.repo_name') repo_name
        , CAST(JSON_EXTRACT_SCALAR(repo, '$.stars') AS INT64) stars
        , COUNT(*) githubers_from_domain FROM UNNEST(repos) repo 
        GROUP BY 1, 2 
        HAVING githubers_from_domain>1 
        ORDER BY stars DESC LIMIT 3
      ) top
    , (SELECT SUM(CAST(JSON_EXTRACT_SCALAR(repo, '$.stars') AS INT64)) FROM (SELECT DISTINCT repo FROM UNNEST(repos) repo)) sum_stars_projects_contributed_to
  FROM (
    SELECT domain, COUNT(*) githubers, ARRAY_CONCAT_AGG(ARRAY(SELECT * FROM UNNEST(repos) repo)) repos
    FROM pushers_guess_emails_and_top_projects
    #WHERE domain IN UNNEST(SPLIT('google.com|microsoft.com|amazon.com', '|'))
    WHERE domain NOT IN UNNEST(SPLIT('gmail.com|users.noreply.github.com|qq.com|hotmail.com|163.com|me.com|googlemail.com|outlook.com|yahoo.com|web.de|iki.fi|foxmail.com|yandex.ru', '|')) # email hosters
    GROUP BY 1
    HAVING githubers > 30
  )
  WHERE (SELECT MAX(githubers_from_domain) FROM (SELECT repo, COUNT(*) githubers_from_domain FROM UNNEST(repos) repo  GROUP BY repo))>4 # second filter email hosters
)
ORDER BY githubers DESC

原文:Who contributed the most to open source in 2017? Let’s analyze GitHub’s data and find out.

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:谁是2017年度开源贡献之王?—— GitHub 数据分析报告
加载中

精彩评论

陈少鑫
陈少鑫
我要是写出文中的sql,至少会被扣200元。
砰的一枪
砰的一枪

引用来自“陈少鑫”的评论

我要是写出文中的sql,至少会被扣200元。
Talk is cheap ,show me the code.
评论专用
评论专用
netty跟苹果有什么关系
职通网
职通网

引用来自“陈少鑫”的评论

我要是写出文中的sql,至少会被扣200元。

引用来自“绫小路清隆”的评论

哪里不对?
不是不对,而是 不允许写出这种复杂的sql,不好维护!
开源中国首席罗纳尔多
开源中国首席罗纳尔多

引用来自“陈少鑫”的评论

我要是写出文中的sql,至少会被扣200元。
哪里不对?

最新评论(19

威丽十足
威丽十足
中国领头的阿里,排名第九
t
taolingl
不错,好东西!
d
dexterz
谷歌全是tensorflow,都是水分
mark35
mark35
vsc写TS太爽了。ms向着古歌变化,甲骨文向着以前ms变化
土卫十六
土卫十六
存储卡获得的 star 数也更多(530,000 vs 60,000)?
是53,000吧?
南湖船老大
南湖船老大
gmail.com邮箱用户太多了,所以这个统计数据,Google是被高估了。
而阿里的邮箱,非阿里人是申请不到的,所以是比较准确的。微软公司的邮箱也是只限内部
张亦俊
张亦俊

引用来自“陈少鑫”的评论

我要是写出文中的sql,至少会被扣200元。
我今天就来装一发 @宏哥 开头WITH AS,根本不是你们这种mysqler所在的世界
花儿笑弯了腰
花儿笑弯了腰

引用来自“陈少鑫”的评论

我要是写出文中的sql,至少会被扣200元。
哈哈
车先生
车先生
这个世界还是属于大公司的
Honghe
Honghe
Wix是哪家公司,这么低调
返回顶部
顶部