Больше комитов, хороших и разных

в 2:38, , рубрики: github, идея, Программирование, Учебный процесс в IT, метки: ,

На мой взгляд, самый лучший способ освоить что-нибудь новое в программировании — изучать комиты в публичные репозитории.
Тут вам и предельная практичность, best practices, большое разнообразие и прочее. Есть только один неприятный момент — далеко не каждое изменение в репозиторий можно считать поучительным или хоть сколько нибудь информативным.
Более того, практически никогда нельзя восстановить полный контекст, в котором появилось то или иное изменение — его может знать только сам автор. Можно ли в таких условиях все-таки вытащить крохи полезной информации?

Итак, еще раз сформулирую исходное положение:

  • Имеем набор комитов в разные публичные репозитории
  • Контекст, который породил изменения, содержащиеся в комитах, не известен
  • В этом наборе комитов содержатся такие, которые несут мудрость или просто интересны

Возникает вопрос, как отделить «мух от котлет» — можно ли выделить из общей кучи те изменения, которые будут нам полезны? Первая мысль, которая приходит в голову — придумать правило, согласно которому ранжировать поступающие комиты и отбирать из них «лучшие» (те, которые лучше соответствуют придуманному правилу). Это самое правило, конечно, не может быть одним — это слишком просто) Скорее всего, оно должно быть совокупностью более мелких правил, которые ограничивают определенные параметры. Например:

  • Размер изменения. Врядли кто-то будет читать огромные комиты в тысячи строк
  • Соответствие языку программирования. Для каждого репозитория есть основной язык программирования, и весь основной код пишется на нем. Но есть еще и куча сопровождающих файлов (скрипты для автоматизации, конфигурационные файлы, документация), которые тоже подвержены изменениям. Конечно, они не представляют особого интереса без контекста
  • Отношение автора к сделанному изменению. Это единственное, что можно выдернуть из контекста — никто не может оценить сделанную работу лучше, чем сам программист. Поэтому если он пишет в комментарии «magic (ugly dirty hack)!», врядли стоит рассматривать данный комит, как предел совершенства. Помимо комментария к комиту также полезно проанализировать комментарии в самом изменении

С помощью данных правил можно отбросить основную массу шлака и оставить комиты, которые более-менее соответствуют нашим ожиданиям. Но в качестве финального штриха было бы неплохо дать возможность сделать оценку комита живому человеку, что сделает анализ более корректным.

Примерно такие мысли крутились у меня в голове некоторое время назад, и я решил воплотить их в виде web сервиса thebestcommits.info. Это еще очень сырой прототип, в котором реализован только основной функционал. Сервис в почасовом режиме забирает с githubarchive.org данные о комитах на Github, анализирует их и отображает в виде слайдов презентации на странице браузера. Внутренности состоят из Golang и Python, графическое представление реализовано с помощью reveal.js

Мне интересно мнение сообщества об этой идее. Является ли она достаточно интересной, чтобы развивать ее дальше?

Автор: erthalion

Источник

Поделиться

* - обязательные к заполнению поля