Достаточно длительное время я работал с UnrealEngine.
Основным моим занятием было решение проблем связанных непосредственно с движком, которых там, как и в любом крупном продукте хватает.
Для работы мы использовали изрядно подлатанную локальную сборку UnrealEngine. При этом по возможности отправляли изменения в исходный репозиторий к EpicGames в качестве Pull Requests-ов.
Недавно я решил почесать своё чсв удовлетворить свое любопытство и собрать
статистику по контрибьюторам.
Методика сбора данных
Для сбора статистики был написан небольшой скрипт на Python. Любой, кто имеет доступ к репозиторию UnrealEngine, может запустить его самостоятельно.
Для статистики были взяты первые 2600 PR-ов (на момент написания статьи всего их было 2604).
Данный скрипт собирает все PR и берет из них:
- id - номер;
- created_by - дата создания;
- user - пользователь github;
- avatar - аватарка пользователя;
- commits - кол-во коммитов в PR;
- title - текстовый заголовок PR.
Результирующий статус PR-а не берется, так как из-за того, что исходный репозиторий живет в Perforce, выяснить, был ли данный PR принят или нет средствами GitHub-а нельзя.
Количество коммитов было взято для поиска “мусорных” PR, которые сделаны не в ту ветку. Обычно такие PR содержат тысячи коммитов и какой-либо малосодержательный заголовок. Они оперативно закрываются и живут обычно пару часов.
Качество коммитов в расчет так же не бралось. То есть исправление тривиальной опечатки и исправление ошибки работы с памятью в данной статистике имеет одинаковый вес.
TOP 10 контрибьюторов
Кол-во мусорных Pull Request-ов (>= 100 коммитов) составило 331 штуку (12.73%).
Без учета мусорных коммитов TOP 10 контрибьюторов по первым 2600 Pull Request-ам выглядит следующим образом:
Пользователь | Количество коммитов |
---|---|
bozaro | 149 (6.57%) |
EverNewJoy | 105 (4.63%) |
slonopotamus | 86 (3.79%) |
yaakuro | 42 (1.85%) |
derekvanvliet | 39 (1.72%) |
Pierdek | 31 (1.37%) |
3dluvr | 30 (1.32%) |
abergmeier | 28 (1.23%) |
SRombauts | 27 (1.19%) |
projectgheist | 23 (1.01%) |