Hall of Fame – žebříček přispěvatelů
- David Grudl
- Nette Core | 8218
Přidal jsem na web žebříček největších přispěvatelů do kódu Nette.
Dříve tato adresa, která se uvádí ve všech souborech
composer.json
, přesměrovávala na statistiky
Githubu, jenže po rozdělení do samostatných repozitářů to přestalo
mít smysl, takže to chtělo vytvořit nový přehled. Zároveň jsem si chtěl
vyzkoušet práci s Github API
easy access (šlo to skvěle).
Jako zdroj dat jsem použil statistiky GitHubu, načítám je ze všech Nette komponent (a sandboxu), vyjma původního repozitáře Nette. Data ze všech repozitářů se sčítají, jen dokumentace, tj. web-content, se počítá zvlášť.
GitHub vrací týdenní počty komitů, přidaných a smazaných řádků pro jednotlivé uživatele. Jak ale z toho udělat žebříček? Je to ošidné, už jsem o tom jednou psal. GitHub třeba neumí odlišit přejmenování souborů: pokud přejmenujete 100řádkový soubor, ve statistice se to projeví jako 1 commit, 100 additions, 100 deletions.
Brát v úvahu jen počet komitů je nefér, protože uživatel, který opraví pár typos, se dostane před toho, který napíše novou třídu nebo stránku dokumentace. Projevuje se to zejména v krátkodobém tříměsíčním přehledu.
Vycházet z počtu změněných řádek (tj. součtu additions + deletions) je taky nefér, protože dramatický náskok získá ten, kdo třeba přejmenoval adresář s testy.
Proto jako počet „změněných“ řádků počítám
max(1, additions - deletions)
, tedy jde spíš o počet
přidaných řádků, což je samozřejmě taky nefér, ale asi nejméně nefér
ze všech ostatních variant, neboť to eliminuje přejmenovávání a
hromadné změny.
Ale jak zkombinovat počet komitů a přidaných řádků? Počet přidaných
řádků není přímo úměrný vynaložené práci a lepší bývá více
menších komitů, proto jsem nakonec pro pořadí zvolil vzorec
SUM(commits) + SUM(SQRT(rows))
, kde rows jsou ty týdenní
přidané řádky.
Zajímavé je, že i hodně jiné vzorce měly na pořadí spíš drobný vliv.
- Patrik Votoček
- Člen | 2221
Jak často se žebříček přepočítává?
„OT“: vynechán je i repositář https://github.com/…ns.nette.org :-)
- David Grudl
- Nette Core | 8218
Jasně, vyjádřil jsem se špatně, je to ze všech repozitářů, které tvoří framework.
Aktualizovat by se to mělo každý týden.