ITPub博客

首页 > > > 到底哪家巨头才是真正的开源之王?

到底哪家巨头才是真正的开源之王?

作者:u_453e1a12781dea 时间:2017-11-07 09:51:31 0 删除 编辑

点击蓝色字关注"CU技术社区" 一起玩耍哦~


纵观 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 等。

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 等。


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 代码如下:


  1. #standardSQL

  2. WITH

  3. period AS (

  4.  SELECT *

  5.  FROM `githubarchive.month.2017*` a

  6. ),

  7. repo_stars AS (

  8.  SELECT repo.id, COUNT(DISTINCT actor.login) stars, APPROX_TOP_COUNT(repo.name, 1)[OFFSET(0)].value repo_name

  9.  FROM period

  10.  WHERE type='WatchEvent'

  11.  GROUP BY 1

  12.  HAVING stars>20

  13. ),

  14. pushers_guess_emails_and_top_projects AS (

  15.  SELECT *, REGEXP_EXTRACT(email, r'@(.*)') domain

  16.  FROM (

  17.    SELECT actor.id

  18.      , APPROX_TOP_COUNT(actor.login,1)[OFFSET(0)].value login

  19.      , APPROX_TOP_COUNT(JSON_EXTRACT_SCALAR(payload, '$.commits[0].author.email'),1)[OFFSET(0)].value email

  20.      , COUNT(*) c

  21.      , ARRAY_AGG(DISTINCT TO_JSON_STRING(STRUCT(b.repo_name,stars))) repos

  22.    FROM period a

  23.    JOIN repo_stars b

  24.    ON a.repo.id=b.id

  25.    WHERE type='PushEvent'

  26.    GROUP BY  1

  27.    HAVING c>3

  28.  )

  29. )

  30. SELECT * FROM (

  31.  SELECT domain

  32.    , githubers

  33.    , (SELECT COUNT(DISTINCT repo) FROM UNNEST(repos) repo) repos_contributed_to

  34.    , ARRAY(

  35.        SELECT AS STRUCT JSON_EXTRACT_SCALAR(repo, '$.repo_name') repo_name

  36.        , CAST(JSON_EXTRACT_SCALAR(repo, '$.stars') AS INT64) stars

  37.        , COUNT(*) githubers_from_domain FROM UNNEST(repos) repo

  38.        GROUP BY 1, 2

  39.        HAVING githubers_from_domain>1

  40.        ORDER BY stars DESC LIMIT 3

  41.      ) top

  42.    , (SELECT SUM(CAST(JSON_EXTRACT_SCALAR(repo, '$.stars') AS INT64)) FROM (SELECT DISTINCT repo FROM UNNEST(repos) repo)) sum_stars_projects_contributed_to

  43.  FROM (

  44.    SELECT domain, COUNT(*) githubers, ARRAY_CONCAT_AGG(ARRAY(SELECT * FROM UNNEST(repos) repo)) repos

  45.    FROM pushers_guess_emails_and_top_projects

  46.    #WHERE domain IN UNNEST(SPLIT('google.com|microsoft.com|amazon.com', '|'))

  47.    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

  48.    GROUP BY 1

  49.    HAVING githubers > 30

  50.  )

  51.  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

  52. )

  53. ORDER BY githubers DESC


原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    1982
  • 访问量
    17876