RubyとPythonの開発者コミュニティを比較してみた

RubyとPythonの開発者コミュニティを比較してみた。


Rubyの他の可視化として[gemの依存関係ネットワークを描画してみた](https://qiita.com/ts-3156/items/a1be825ddcba4b010dd0)も公開しています。よければこちらもご覧になってみてください。

----

**2019/01/04 23時頃 追記**
[Qiitaへのコメント](https://qiita.com/ts-3156/items/74c2f864302eba06c586#comment-c8b16f97f6b38ecaf396)からご指摘をいただいた通り、各言語の開発を開始した時期と公開を開始した時期が必ずしも一致していない、各言語のコミット粒度が異なる、などに注意が必要なようです。これらの点を念頭に置いた上でご覧いただきますようお願いいたします。

----



##  各コミッター毎のコミット数の経年推移

下記の[追いかけグラフ](https://github.com/ts-3156/chasingchart)では、RubyとPythonのそれぞれで、全期間でのトータルコミット数が多い順から10名を選び、グラフにプロットしています。

**集計上の注意点**

- 集計に利用したデータは [ruby.csv](https://github.com/ts-3156/chasingchart/blob/master/data/ruby_commit.csv) / [python.csv](https://github.com/ts-3156/chasingchart/blob/master/data/python_commit.csv) に置いてあります
- コミットの集計はGithubのリポジトリのデフォルトブランチを元にしています
- リポジトリをGithubに移行する前のコミット数は正しく集計できていない可能性があります
- コミット数の集計はただの客観的な数字の計測であり、コミュニティやコミッターの価値を測る意図はありません


## Rubyコミッター

この追いかけグラフを見る限り、Rubyは比較的初期に相対的な貢献度の高いコミッターが複数名加わり、作者であるmatzはコミット数で他のコミッターに徐々に追い抜かれている様子が分かります。

![ruby.gif](https://qiita-image-store.s3.amazonaws.com/0/33011/c7f3e2bc-9aab-b740-8a4d-f04ee2525a2b.gif)

上記の通り、Rubyは初期の段階で作者以外のコミッターの貢献度が高くなっていますが、一方で、現在に至るまでの合計コミッター数はPythonと比べてかなり少なく（後述）、Rubyの開発は「作者と、作者に匹敵するほど貢献度の高い少数精鋭のメンバーに支えられている」と言えるかもしれません。


## Pythonコミュニティ

この追いかけグラフを見る限り、Pythonの場合は、作者であるGuido van Rossumが最初から最後までコミット数1位を保っています。

![python.gif](https://qiita-image-store.s3.amazonaws.com/0/33011/7acda0b6-5e5c-51fd-3bed-142bb9adec9d.gif)

上記の通り、コミット数ではGuido van Rossumの貢献度がずば抜けて高いPythonですが、合計コミッター数はRubyの何倍も多く（後述）、Pythonの開発は「作者の圧倒的な貢献に支えられつつ、広い裾野のコミュニティも兼ね備えられている」と言えるかもしれません。

## 各種集計値

----

**追記**
RubyとPythonのそれぞれで、開発を開始した時期と公開を開始した時期が異なる可能性があります。そのため、「言語の開発を開始してから○年で〜」というRubyとPythonの比較に意味が無い点にご注意ください。

----

下記の表から、Rubyの合計コミッター数は103人、Pythonの合計コミッター数は817人いることが分かります。Pythonの場合、コミット数が1回の人数やプルリクエストの数から、開発者の裾野が非常に広い様子が見て取れます。

|  | Ruby | Python |
|:-----------|:------------|:------------|
| 作者 | まつもと ゆきひろ | Guido van Rossum |
| 最初のコミット | 1998-01-16 | 1990-08-09 |
| コミット数 | 53,901 | 103,097 |
| コミッター数（人） | 103 | 817 |
| コミット数/人（平均値） | 523 | 126 |
| コミット数/人（中央値） | 89 | 1 |
| コミット数が1回の人数 | 3 | 422 |
| プルリクエスト数 | 2,045 | 11,420 |

下記の表は、それぞれの作者にフォーカスを当てて集計してみた結果です。各言語の初期のコミッター数を見る限り、何か新しい言語を作ろうと思ったら、最初の1〜2年は1人での開発、それから3〜9年は10人未満での開発、という覚悟が必要なようです。

|  | Ruby | Python |
|:-----------|:------------|:------------|
| 作者のコミット数（全期間） | 2,562（4%） | 11,178（10%） |
| 作者のコミット数（最初の3年） | 332（44%） | 1248（94%） |
| 作者のコミット数（直近3年） | 5（0%） | 219（2%） |
| 作者のコミット数順位（全期間） | 5 | 1 |
| コミッター数が1人だった期間（年） | 1 | 2 |
| コミッター数が10人になるまでの期間（年） | 3 | 9.5 |

余談ですが、Pythonは本当の名前（に見える文字列）をコミッター名として使う人が大半である一方、Rubyはハンドルネームや省略形を使う人が多く、こんなところにもコミュニティの性格の違いが現れているようです。

## まとめと今後

今回の集計を通して、RubyとPythonのコミュニティの性格の違いは、開発が始まった時期にもある程度影響を受けている気がしました。Golangなど比較的最近の言語で同じ情報を集計すると、また違った発見があるかもしれません。

今回は集計しませんでしたが、RubyとPythonのどちらのコミュニティも、初期から現在に至るまでにメンバーは大きく変わっているようです。メンバーの入れ替わりについて集計してみると面白いかもしれません。

今回の集計に使ったデータは、[ruby.csv](https://github.com/ts-3156/chasingchart/blob/master/data/ruby_commit.csv) / [python.csv](https://github.com/ts-3156/chasingchart/blob/master/data/python_commit.csv)にまとめてあります。今回名前の出てこなかったコミッターの中にも数多くの貢献をされている方はたくさんいますので、もしよければ一度ご覧になってみてください。

質問や集計してみてほしいデータがありましたらお気軽にコメント欄にご記載ください。


## 参考リンク

- [Rubyリポジトリ](https://github.com/ruby/ruby)
- [Pythonリポジトリ](https://github.com/python/cpython)
- [追いかけグラフ - Chasingchart](https://github.com/ts-3156/chasingchart)