Jeśli chcesz przejść bezpośrednio do statystyk, kliknij tutaj.
Motywacja
Istnieje już strona zbiorcza z postami, gdzie możemy się dowiedzieć, kto i kiedy opublikował ostatni post. Po uruchomieniu w konsoli polecenia $(".panel-heading.text-center.blog-title").length
dowiemy się dodatkowo, ile osób opublikowało post w ciągu ostatniego tygodnia. To ciekawa statystyka, ale brakowało mi informacji o tym, jak tak naprawdę idzie pozostałym uczestnikom, jeśli chodzi o projekty, a nie blogi, i – nie ukrywam – jak wypadam na ich tle.
Rezultat
Z początkiem marca, w przerwach od pisania Star Trek API robiłem jeszcze jeden projekt. Jego cel był prosty: korzystając ze zbiorczej strony z tegorocznymi uczestnikami, zebrać linki do wszystkich repozytoriów, ściągnąć te repozytoria, zgromadzić na ich temat statystyki, a następnie opublikować w formie interaktywnego grida. Od kilku dni aplikacja, która to wszystko robi, jest już napisana. Codziennie wieczorem odpalam ją, żeby zebrała statystyki aktualne na poprzedni dzień. Od kilku dni niczego już nie poprawiam, więc myślę, że to dobry moment, by opublikować wyniki. Można je zobaczyć tutaj.
Aktualizacje
Aktualizacje statystyk będę przeprowadzał przez cały czas trwania konkursu. Codziennie wieczorem, a w weekendy w ciągu dnia, będą pojawiały się statystyki aktualne na poprzedni dzień.
Stos technologiczny
Aplikację do zbierania statystyk napisałem w tym samym stosie, w którym piszę Star Trek API: kod produkcyjny powstał w Javie, a testy w Groovym. Aplikacja nie ma bazy danych, i po prostu raz dziennie generuje JSON-a ze wszystkimi statystykami, który jest potem ładowany do ag-Grida. Intensywnie wykorzystywanymi zależnościami backendowymi są też jsoup (do parsowania HTML-a) i EGit (obiektowy wrapper wokół Gita).
Jak zbierane są statystyki
Statystyki zbierane są dla okresu od 1 marca do dnia podanego na stronie statystyk. Przykładowo, dziś, 8 kwietnia przed południem uruchomiłem zasilenie, które zebrało statystyki od 1 marca do 7 kwietnia. Od strony technicznej wygląda to tak, że dla każdego commitu generowany jest diff z poprzednim commitem i zliczana jest ilość zmienionych, dodanych i usuniętych linii. Zliczana jest też ilość commitów. W większości kategorii, poza ilością commitów na dzień, liczby są zokrąglane do integerów, więc mogą istnieć jakieś minimalne rozjazdy (np. ktoś dodaje dziennie 220 linii, zmienia 293 linii, ale usuwa 72). Wierzę, że takie zaokrąglenia nie wpływają na ogólny obraz projektów.
Obserwacje
Oto kilka obserwacji, które poczyniłem do tej pory, przeglądając zgromadzone statystyki:
- Wiele osób podało niepoprawne linki do repozytoriów. Były to między innymi linki do profili użytkowników na GitHubie.
- Wiele repozytoriów do tej pory jest pusta.
- Niektóre z osób, ktore zgłosiły projekty do DSP, miało już napisany wcześniej jakiś kod, ale nie był on wersjonowany, i initial commit był wykonywany na potrzeby DSP.
- Są osoby, które commitują do repozytium rzeczy, które nie powinny się tam znaleźć, tzn. te, który powinny być sciągnięte jakimś build toolem, w efekcie w statystykach wygląda to tak, jakby commitowały po kilka tysięcy linii dziennie.
- Pierwsza osoba, jeśli chodzi o ilość wykonanych commitów, pisze 10 razy mniej linii dziennie, niż druga osoba w tej kategorii.
- Tylko 49 osób wykonuje więcej, niż jeden commit dziennie.
- Wśród osób, które zrobiły jakieś commity, 18 osób zacommitowało poniżej 2 linii dziennie.
Przyszłość
Zachęcam do samodzielnego oglądania statystyk i do wyciągania wniosków. Jeśli ktoś chciałby się ze mną skontaktować w sprawie statystyk, bo ma na przykład pomysł na dodatkową funkcjonalność, albo nie chce być na liście, może to zrobić mailem, na Slacku lub w komentarzach.
Fajna statystyka. Mam trzecie miejsce w commitach:D ciekawe co będzie po jutrzejszym updacie bo trochę dzisiaj nastrzelalem nowości 🙂
Mega!