您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    谁是2017年度开源贡献之王?—— GitHub 数据剖析报告
    时间:2017-10-27 21:02 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实际!10.28不见不散!

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

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

    各公司的贡献状况

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

    按仓库 star 数排名

    顶尖的贡献组织比较:

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

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

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

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

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

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

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

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

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

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

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

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

    GitHub,Apache 和 Tencent:

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

    Baidu, Apple 和 Mozilla:

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

    更详细的内容可直接参看这个可交互的版本: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 12          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 domainCOUNT(*) githubers, ARRAY_CONCAT_AGG(ARRAY(SELECT * FROM UNNEST(repos) repo)) repos     FROM pushers_guess_emails_and_top_projects     #WHERE domain IN UNNEST(SPLIT('谷歌.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|谷歌mail.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.

    【编辑引荐】

    外媒速递:三大顶尖开源Python IDE方案综述

    Facebook开源VoiceLoop,依据开放场景语音文字分解新语音

    顺序员都应该懂一点开源协议

    微软携手FB推出开源项目 打造共享神经网络模型

    外媒速递:你值得一试的三款开源Python GUI框架

    (责任编辑:admin)