...

пятница, 4 октября 2013 г.

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

На мой взгляд, самый лучший способ освоить что-нибудь новое в программировании — изучать комиты в публичные репозитории.

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

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



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

  • Имеем набор комитов в разные публичные репозитории

  • Контекст, который породил изменения, содержащиеся в комитах, не известен

  • В этом наборе комитов содержатся такие, которые несут мудрость или просто интересны


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



  • Размер изменения. Врядли кто-то будет читать огромные комиты в тысячи строк

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

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


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


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


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий