Sat 15 October 2011
GitHub в Цифрах
Некоторое время назад мне в голову пришла идея сделать сервис вокруг гитхаба. В первую очередь, он должен быть полезен тем, у кого много репозиториев и тем, кто следит за большим количеством кодеров или репозиториев.
Основной паттерн моего использования социальных возможностей гитхаба таков: я фолловлю других кодеров для того, чтобы видеть в ленте какие проекты он находят, комментят и коммитят. Таким образом, я периодически обнаруживаю что-нибудь интересненькое. Вот только работало это лишь до определенного момента — пока объем данных в ленте не вырос настолько, что я стал лениться ее читать.
Тут то и возникла идея — как-то агрегировать данные ленты, чтобы вычленять из нее интересные проекты. Например учитывая возросший к ним интерес людей из твоего первого или второго круга.
Кроме того, сервис должен будет упростить отслеживание того, что происходит в форках ваших репозиториев. Это уже будет полезно тем, у кого десятки публичных репозиториев. Такая функциональность у меня даже реализована, но в виде простенького скрипта, который генерирует RSS с новыми коммитами в форках.
А еще, можно сделать пузомерку для гиков, с медальками, рейтингами и титулами. Это просто прикольно: сделал десяток коммитов в полночь получи титул "Midnight code warrior" :)
Однако, прежде чем ввязываться в затратное дело — создание отдельного сервиса для всех, я решил посчитать некоторую статистику отностиельно того, сколько же людей потенциально смогут оценить достоинства этого моего сервиса. Очень уж я не люблю делать бесполезные штуки :)
Прогресс
Для начала, я написал выкачивалку всех гитхаб пользователей. Что она делает. Она берет указанный логин, сохраняет его профиль, выкачивает список тех, кого за кем он следит, и добавляет их в очередь, если их профили еще не скачаны. Затем все повторяется для каждого логина, который в очереди, до тех пор, пока очередь не опустеет.
Поскольку у API гитхаба есть ограничение в 5000 запросов в час, то процесс выкачивания всего графа затянулся почти на два дня.
Всего было выкачано 57 тысяч профилей пользователей и около 500 тысяч репозиториев. На мой взгляд, пользователей маловато, но позможно так оно и есть. Раз мой скрипт до кого-то не добрался, значит его никто не фоловит, так что аккаунт скорее всего заброшен.
Так выглядел процесс выкачивания. По этому графику хорошо заметен момент, когда очередь "на закачку" перестала расти и начала убывать.
Наблюдай и следи
Самое важное для моего проекта — доли пользователей, которые наблюдают за большим количеством репозиториев или следят за большим количеством других разработчиков:
|
Отсюда видно, что почти 50% пользователей, следят более чем за 10 репозиториями и 7% (около 4 тысяч) — более чем за 100. Так же мне интересны те 20% (11 тысяч), что фоловят более 10 человек, они наверняка не успевают прочитывать весь свой News Feed. И уж наверняка оставшиеся 410 пользователей, что фоловят больше сотни по достоинству оценят аггрегатор новостной ленты. Сам я, как раз вхожу в последнюю категорию, так как фоловлю 331 разработчика.
Количество репозиториев
Среднее количество публичных репозиториев у гитхаб пользователя — 8, из них 3, это форки чужих проектов.
|
На этом графике видно, что 60% пользователей имеют меньше 10 публичных репозиториев, а у 15% их нет вообще. Зато почти у четверти пользователей гитхаба публичных репозиториев от 10-100, и они являются потенциальными пользователями моего сервиса.
При этом, процент активных репозиториев, таких в которые был хотя бы один push за последний месяц, всего 10%.
И еще…
Всего я выкачал информацию чуть больше чем по 500 тысячам репозиториев, и примерно 40% из них, это форки. Удивительно, я думал что форков должно быть гораздо гораздо больше.
Посчитал я и то, насколько больше "второй круг", по сравнению с первым. В среднем, пользователь гитхаба фоловит 9 человек, и следит за 33 репозиториями, это его "первый круг". Второй круг, это те, кого фоловят те, кого фоловят ты. Второй круг, уже составляет 230 пользователей и 800 репозиториев. И это в среднем. Для нерепрезентативных вроде меня цифры другие: 11548 и 42882 соответственно. Это почти 1/5 всего гитхаба!
Кроме этого, я посчитал соотношение обычных пользователей и организаций:
Немножко Топов, я знаю, они всем нравятся :)
Top 20 компаний
| Компания | Кол-во |
|---|---|
| 37965 | |
| ThoughtWorks | 75 |
| 65 | |
| Mozilla | 61 |
| Red Hat | 58 |
| Freelance | 56 |
| 40 | |
| Japan | 40 |
| Yandex | 39 |
| Freelancer | 36 |
| Globo.com | 35 |
| Yahoo! | 33 |
| Intridea | 31 |
| 30 | |
| GitHub | 29 |
| Student | 26 |
| Emergya | 26 |
| Pivotal Labs | 24 |
| Microsoft | 23 |
| Engine Yard | 23 |
Top 20 городов
| Город | Кол-во |
|---|---|
| 23657 | |
| San Francisco | 1441 |
| London | 962 |
| New York | 578 |
| Paris | 474 |
| Chicago | 458 |
| Seattle | 457 |
| Tokyo | 430 |
| Berlin | 423 |
| Germany | 417 |
| Portland | 346 |
| Toronto | 317 |
| Boston | 288 |
| Austin | 280 |
| Sydney | 272 |
| Stockholm | 261 |
| Japan | 244 |
| Los Angeles | 230 |
| Brooklyn | 226 |
| Melbourne | 221 |
Top 20 "последователей"
| Логин | Фолловит |
|---|---|
| snytkine | 3242 |
| mtsoerin | 1983 |
| webiest | 1903 |
| superfeedr | 1710 |
| charlenopires | 1236 |
| stonegao | 1205 |
| Marak | 1068 |
| speedygonzalez | 1059 |
| tyru | 1022 |
| esneko | 867 |
| josegonzalez | 640 |
| c9s | 556 |
| kanzure | 555 |
| take-cheeze | 517 |
| elliottcable | 495 |
| Sannis | 475 |
| mattn | 462 |
| j2labs | 453 |
| dpree | 446 |
| rkh | 444 |
Top 20 "кого фолловят"
| Логин | Последователей |
|---|---|
| defunkt | 4005 |
| torvalds | 3803 |
| jeresig | 3466 |
| mojombo | 3248 |
| ryanb | 2737 |
| schacon | 2429 |
| paulirish | 2316 |
| dhh | 2170 |
| wycats | 2044 |
| ry | 2032 |
| rails | 1946 |
| 1802 | |
| jquery | 1767 |
| technoweenie | 1572 |
| pjhyett | 1563 |
| visionmedia | 1554 |
| cyanogen | 1410 |
| douglascrockford | 1380 |
| tpope | 1369 |
| android | 1317 |
Top 20 "по репозиториям"
| Логин | Репозиториев |
|---|---|
| gitpan | 21976 |
| vim-scripts | 3735 |
| emacsmirror | 3101 |
| Epictetus | 911 |
| panega | 612 |
| jenkinsci | 602 |
| dev2dev | 504 |
| wave2future | 411 |
| CyanogenMod | 342 |
| MechanisM | 329 |
| rjbs | 325 |
| tokuhirom | 297 |
| rwldrn | 297 |
| aculich | 287 |
| rainly | 282 |
| albertobraschi | 278 |
| idega | 272 |
| rafl | 266 |
| apache | 258 |
| kristianmandrup | 244 |
Top 20 "вотчеров"
| Логин | Наблюдает за |
|---|---|
| gitpan | 21976 |
| vim-scripts | 3736 |
| emacsmirror | 3588 |
| stonegao | 2789 |
| abecciu | 2474 |
| igrigorik | 2415 |
| charlenopires | 2339 |
| stan | 2318 |
| matagus | 2160 |
| smtlaissezfaire | 1955 |
| rmetzler | 1916 |
| shanlalit | 1897 |
| willi | 1896 |
| Epictetus | 1821 |
| filipeamoreira | 1812 |
| arden | 1783 |
| andrew | 1746 |
| methodmissing | 1665 |
| rkh | 1571 |
| lgs | 1511 |
Всё
Наверняка по той базе, что у меня теперь есть, можно посчитать еще что-нибудь интересненькое. Но пока это всё. Будут идеи — присылайте.
P.S. — думаю, проектик найдет свою аудиторию в несколько тысяч человек. Осталось придумать, как его монетизировать, чтобы окупать аренду серверных мощностей.
Comments !