Py学习  »  Git

服不服!GitHub 2017年度开源贡献之王竟然是这家公司....

算法与数据结构 • 6 年前 • 517 次点击  

程序猿(微信号:imkuqin) 猿妹 编译

原文:https://medium.freecodecamp.org/the-top-contributors-to-github-2017-be98ab854e87


纵观 IT 行业几十年的发展,开源软件从黑客的理想之国,已经变成一股推进计算机及相关行业不停进步的巨大力量。


各大科技巨头也纷纷投入到开源的怀抱,那么到底哪家巨头才是真正的开源之王?正是本文要和大家讨论的。



分析了 2017 年截至今日 GitHub 上发布的所有项目,对于每个 GitHub 用户都尽量分辨了他们属于哪个组织,并且只关注 2017 年增长超过 20 个 star 的仓库。


顶尖巨头的贡献比较


Microsoft 似乎有大约1,300 名员工积极地将代码推送到 GitHub 上的 825 个顶级存储库。

Google 在 GitHub 上大约有 900 名活跃用户,共推送约 1100 个顶级库。

亚马逊在 GitHub 上大概只有 134 名活跃员工,只推送 158 个顶级项目代码。



活跃用户和项目的 Star 数并不是等比的:比如,Google 员工贡献的代码仓库只比Microsoft 多 25%,但是这些存储库收集到的 Star 数远多于 25%(530,000 VS 260,000)。亚马逊仓库 2017 的 Star 数为 27000。


前三的排名中,值得一提是微软,大家都知晓开源世界是微软的死敌,2001 年,微软当时的 CEO 鲍尔默曾向开源社区开炮,他把Linux系统比作癌症,甚至力劝政府不要对开源项目提供支持。


但十年后事情却发生了大反转,微软自己主动开源了 Kinect,而当时这款产品是微软的当家花旦。尤其近些年,微软的态度越发开放,对开源社区敞开了怀抱,并连续加入 Linux 基金会、原生云计算基金会,而且都是白金会员。


Google 的项目 Star 数排行第一的就是 TensorFlow,但除了它还有许多非常有价值的项目比如十分流行的 Web 前端框架 Angular,比如 Kubernetes 等。

查看谷歌热门开源项目:《开源巨献:Google最热门60款开源项目》


RedHat,IBM,Pivotal,Intel 和 Facebook


亚马逊的排名远远落后于谷歌和微软。那么,他们中间还有哪些企业呢?RedHat,IBM,Pivotal,Intel 和 Facebook 也做出了突出贡献。



Facebook 和 IBM(美国)的 GitHub 用户数量与亚马逊数量相差无几,但是他们贡献的项目 Star 已经远超亚马逊(尤其是Facebook)


其次是阿里巴巴,Uber 和 Wix:


GitHub,Apache,腾讯:


百度,苹果,Mozilla:



BAT 三巨头也在积极拥抱开源社区,有一些开源项目在 GitHub 上也是获得相当高的Star数,比如阿里巴巴的前端框架 Ant Design 等。


点击查看:

《开源巨献:阿里巴巴最热门29款开源项目》

《开源巨献:百度最热门31款开源项目》

《开源巨献:腾讯最热门30款开源项目》


Oracle、Stanford,Mit 等:


更详细的排名可查阅:https://medium.freecodecamp.org/the-top-contributors-to-github-2017-be98ab854e87



这份报告是如何生成?


首先通过 GitHub Archive(https://www.githubarchive.org/)来获取数据来源。


再通过用户提交记录中的邮件地址来进行判断 GitHub 用户所属的公司。当然,并不是每个 GitHub 用户都会用企业邮件地址,这种数据就会被忽略不计。


使用的工具为:Google Big Query(https://cloud.google.com/bigquery/

具体 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



●本文编号512,以后想阅读这篇文章直接输入512即可

●输入m获取到文章目录

推荐↓↓↓
 

开源最前线

更多推荐18个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/qmEDdlZOv2
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4130
 
517 次点击