DUICUO

2017年にオープンソースに最も貢献した企業はどこでしょうか?GitHubのデータを分析してみましょう。

この分析レポートでは、GitHubで現在(2017年10月)までに公開されたすべてのイベントのデータを使用します。各GitHubユーザーについて、所属企業を推測します。また、今年20個以上のスターを獲得したリポジトリのみを対象とします。

以下は私のレポート結果です。この結果は、インタラクティブな Data Studio レポートでさらに活用できます。

クラウドサービスプロバイダーの比較

2017 年の GitHub でのパフォーマンス:

  • Microsoft には、GitHub 上の 825 個のリポジトリにコードを積極的にプッシュしている従業員が約 1,300 人いるようです。
  • Google によれば、約 900 人の従業員が GitHub でアクティブであり、約 1,100 のリポジトリにコードをプッシュしています。
  • Amazon では GitHub でアクティブな従業員はわずか 134 名で、コードをプッシュしているのはわずか 158 件のプロジェクトのみのようです。
  • すべてのプロジェクトが同じというわけではありません。Googleの従業員は、Microsoftの従業員よりも25%以上の倉庫で貢献しており、それらの倉庫はより多くの星を獲得しています(53万個対26万個)。一方、Amazonの倉庫は2017年にわずか2万7千個の星しか獲得していません。

レッドハット、IBM、ピボタル、インテル、フェイスブック

AmazonがMicrosoftやGoogleに大きく遅れをとっているように見えるとしたら、その中間に位置する企業は他にどこがあるでしょうか?このランキングによると、Red Hat、Pivo​​tal、IntelがGitHubに多大な貢献をしています。

以下の表にはすべての IBM 地域ドメインが含まれていることに注意してください (各地域は以下の表に表示されます)。

Facebook と IBM (米国) の GitHub 上のアクティブ ユーザー数は Amazon とほぼ同じですが、両社のプロジェクトはより多くのスターを獲得しています (特に Facebook のもの)。

次は Alibaba、Uber、Wix です。

そして、GitHub 自体、Apache、Tencent:

Baidu、Apple、Mozilla:

(LCTT翻訳者注:中国のトップインターネット企業であるアリババ、テンセント、バイドゥがここで上位にランクインしているのは素晴らしいことです!)

Oracle、スタンフォード大学、MIT、Shopify、MongoDB、カリフォルニア大学バークレー校、VMware、Netflix、Salesforce、Gsa.gov:

LinkedIn、Broad Institute、Palantir、Yahoo、MapBox、Unity3d、Automattic(WordPressの開発元)、Sandia、Travis CI、Spotify:

Chromium、UMich、Zalando、Esri、IBM(英国)、SAP、EPAM、Telerik、英国内閣府、Stripe:

Cern、Odoo、Kitware、SUSE、Yandex、IBM(プラス)、Adobe、Airbnb、Chef、The Guardian:

Arm、Macports、Docker、Nuxeo、NVidia、Yelp、Elastic、NYU、WSO2、Mesosphere、Inria:

Puppet、スタンフォード大学(コンピュータサイエンス)、DatadogHQ、Epfl、NTTデータ、ローレンスリバモア研究所:

私の分析方法

GitHubユーザーを会社にリンクさせる方法

GitHub で各ユーザーがどの会社に属しているかを判断するのは簡単ではありませんが、プッシュ イベントのコミット メッセージに表示される電子メール アドレスのドメインを使用して判断することができます。

  • 同じメール アドレスが複数のユーザーに表示されることがあるため、この期間中に 20 個を超える星を獲得したプロジェクトのプッシュ通知を受信したユーザーのみを考慮します。
  • この期間中に 3 回以上プッシュした GitHub ユーザーのみをカウントしました。
  • ユーザーがGitHubにコードをプッシュすると、プッシュ通知には複数のメールアドレスが表示されることがあります。これはGitHubの仕組みによっても異なります。各ユーザーの組織を特定するために、プッシュ通知に頻繁に表示されるメールアドレスを調べます。
  • すべてのユーザーがGitHubで組織のメールアドレスを使用しているわけではありません。gmail.com、users.noreply.github.com、その他のメールホスティングプロバイダのメールアドレスを使用しているユーザーも多くいます。これは匿名性を維持し、会社のメールアドレスを保護するためである場合もありますが、会社のドメインが特定できない場合は、これらのユーザーを統計情報に含めません。申し訳ありません。
  • 社員が転職することもあります。その場合は、本人が最も力を入れている会社に配属します。

私のクエリステートメント

  1. #標準SQL
  2.  
  3. 期間AS (
  4. 選択*
  5. `githubarchive.month.2017 * `から
  6. )、
  7. repo_stars AS (
  8. SELECT repo.id, COUNT ( DISTINCT actor.login) スター, APPROX_TOP_COUNT(repo. name , 1)[OFFSET(0)].value repo_name
  9. 期間から
  10. WHERE type= 'WatchEvent'  
  11. グループ  1つずつ
  12. 星が20個以上ある
  13. )、
  14. pushers_guess_emails_and_top_projects AS (
  15. 選択*
  16. # , REGEXP_EXTRACT(メールアドレス, r '@(.*)' ) ドメイン
  17. , REGEXP_REPLACE(REGEXP_EXTRACT(email, r '@(.*)' ), r '.*.ibm.com' , 'ibm.com' ) ドメイン
  18. から
  19. 俳優IDを選択
  20. , APPROX_TOP_COUNT(actor.login,1)[OFFSET(0)].value ログイン
  21. , APPROX_TOP_COUNT(JSON_EXTRACT_SCALAR(ペイロード, '$.commits[0].author.email' ),1)[OFFSET(0)].value email
  22. カウント(*)c
  23. , ARRAY_AGG( DISTINCT TO_JSON_STRING(STRUCT(b.repo_name,stars))) リポジトリ
  24. 期間aから
  25. repo_starsに参加b
  26. a.repo.id=b.idの場合
  27. WHERE type= 'PushEvent'  
  28. グループ  1つずつ
  29. c>3を有する
  30. 選択*から(
  31. ドメインを選択
  32. GitHubユーザー
  33. 、(選択  COUNT ( DISTINCT repo) FROM UNNEST(repos) repo) repos_contributed_to
  34. 配列
  35. 選択  AS STRUCT JSON_EXTRACT_SCALAR(リポジトリ、 '$.リポジトリ名' ) リポジトリ名
  36. CAST (JSON_EXTRACT_SCALAR(repo, '$.stars' ) AS INT64) スター
  37. , COUNT (*) githubers_from_domain FROM UNNEST(repos) リポジトリ
  38. グループ  1、2ずつ
  39. githubers_from_domain>1を持つこと
  40. 注文 の数で絞り込む制限 3
  41. トップ 
  42. 、(選択  SUM ( CAST (JSON_EXTRACT_SCALAR(リポジトリ、 '$.stars' ) AS INT64)) FROM ( SELECT   DISTINCT repo FROM UNNEST(repos) repo)) sum_stars_projects_contributed_to
  43. から
  44. SELECTドメイン、 COUNT (*) githubers、ARRAY_CONCAT_AGG(ARRAY( SELECT * FROM UNNEST(repos) repo)) リポジトリ
  45. pushers_guess_emails_and_top_projectsより
  46. # WHEREドメインIN UNNEST(SPLIT( 'google.com|microsoft.com|amazon.com' , '|' ))
  47. WHEREドメイン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' , '|' )) # メールホスト
  48. グループ  1つずつ
  49. Githuber30人以上
  50. WHERE (選択  MAX (githubers_from_domain) FROM ( SELECT repo, COUNT (*) githubers_from_domain FROM UNNEST(repos) repo GROUP   BY repo))>4 # 2番目のフィルターメールホスト
  51. 注文  githubersによる説明 

よくある質問

1,500 の倉庫のうち 200 しかカウントされないのはなぜですか? 7,000 の星付き倉庫のうち 1,500 しか表示されないのはなぜですか?

データをフィルタリングし、2017年の星の数だけをカウントしました。例えば、ApacheはGitHubに1500以上のリポジトリを持っていますが、今年20個以上の星を獲得したプロジェクトはわずか205件でした。

これはオープンソース開発の現状を示しているのでしょうか?

なお、この GitHub の分析には、Android、Chromium、GNU、Mozilla などの主要なコミュニティは含まれておらず、Apache Foundation や Eclipse Foundation、または GitHub 外で運営することを選択したその他のプロジェクトも含まれていません。

これは私の組織にとって不公平です。

分析できるのは目に見えるデータだけです。統計の前提に関するフィードバックや、手法の改善に関するご提案をお待ちしております。実際に動作するクエリステートメントがあればさらに助かります。

たとえば、IBM のさまざまな地域ドメインを *** ドメインにマージした場合にランキングがどうなるかを確認するには、次の 1 つの SQL ステートメントを使用できます。

  1. SELECT *, REGEXP_REPLACE(REGEXP_EXTRACT(email, r '@(.*)'), r'.*.ibm.com', 'ibm.com') ドメイン 

地域ドメインを統合した後、IBM の相対的地位は大幅に向上しました。

エコー

「GitHub の 2017 年トップ貢献者」についての感想。

以前にも間違いを犯したことがあり、また犯す可能性もあります。生データをすべて見直し、私の当初の仮定に疑問を投げかけてください。どのような結論を導き出すのか、興味深いところです。

  • インタラクティブなデータスタジオレポートを使用します。

長年にわたる膨大な GitHub データを提供する GitHub アーカイブを保存してくれた Ilya Grigorik に感謝します。