Патрик ДеВиво

Kubernetes - большой проект. Не только потому, что это большое дело, но и с точки зрения исходного кода. На момент написания имеется 86k + коммитов, 2k + участников, 2k + открытых вопросов, 1k + открытых PR, и 61 тыс. + звезд. Это доступно на странице Github проекта.

scc подсчитывает более 4,3 млн строк исходного кода (всего 5,2 млн строк), более 3 млн строк «фактического» по сравнению с 700 тыс. + строки комментариев. Всего 16k + файлов. Сюда входит каталог vendor/.

Мы работали над проектом, который отображает TODO-комментарии в базе кода, чтобы помочь разработчикам выполнять основные рабочие процессы управления проектами внутри этой базы кода.

Мы решили направить наш маленький искатель TODO на исходный код Kubernetes, чтобы посмотреть, что из этого получится. Вот некоторые результаты.

Мы запустили tickgit исходный код из commit 9bf52c2. Затем вывод CSV был импортирован в SQLite для выполнения запросов. Обратите внимание, что инструмент находит только TODO в дереве извлеченного коммита; он не будет учитывать TODO, которые были добавлены и впоследствии удалены. Таким образом, числа отражают только TODO, которые все еще живут в коде на момент фиксации.

Тотал (для 9bf52c2)

  • 2380 TODO для 1,230 файлов от 363 разных авторов.
  • 460 TODO с правопреемником, например // TODO (patrickdevivo) Fix the ...
  • 489 TODO были добавлены в 2019 г.
  • 860 дней (или 2,3 года) - средний возраст TODO.
  • Самый старый TODO - от 6 июня 2014 г. (из Первого коммита).
  • Самый последний TODO от 9 декабря 2019 г.
  • Этот файл содержит больше всего TODO (33).
  • deads2k добавил самые (текущие) TODO (git blame) в 147
  • Эта фиксация добавила большинство TODO (которые все еще находятся в исходном коде) в 64

Резюме

Чтобы получить аналогичные результаты, попробуйте tickgit todos --csv-output получить необработанные данные TODO. Мы использовали SQLite для запроса приведенных выше сводок.

Выводы и вопросы

Эти результаты являются результатом довольно быстрого взгляда на то, как выглядят комментарии TODO в исходном коде Kubernetes. Мы получаем представление о лучших создателях TODO, которые более или менее соответствуют лучшим участникам проекта.

Мы также видим, что для «большого» исходного кода поведение разработчиков в отношении комментариев TODO не кажется чем-то необычным, его просто больше.

Важное наблюдение: комментариев TODO больше, чем проблем с Github. Это интересно тем, что указывает на значительный объем скрытой «работы»… или задач, которые нелегко получить, если вы не потратите время на сам исходный код.

Основные участники, вероятно, имеют хорошее представление о своей области кодовой базы и хорошо понимают свои собственные TODO и «скрытую работу». Однако это довольно непонятно для сторонних наблюдателей. Проблемы с Github (или другие общедоступные трекеры билетов) более доступны для тех, кто не находится «в сорняках» проекта.

Как понимают большинство разработчиков, программные проекты «живут и дышат». Это частые изменения, постоянное совершенствование, постоянное несовершенство и множество дискуссий. Рабочий процесс и процесс очень важны, потому что хороший код требует постоянного размышления. Частично мы видим это в действии, используя комментарии TODO в исходном коде Kubernetes. Однако без эталонного теста средний возраст TODO в 2,3 года кажется довольно высоким. Те, кто ближе к коду, смогут лучше выносить суждения; возможно, было бы интересно посмотреть, как этот исходный код сравнивается с другими крупными проектами с открытым исходным кодом.

Более глубокий анализ TODO кодовой базы может включать просмотр всех TODO в истории, а не только тех, которые в настоящее время находятся в исходном коде.

  • Какова скорость закрытия TODO с течением времени?
  • Какова средняя продолжительность TODO-комментария?
  • Как соотносятся популярные кодовые базы друг с другом?

Это имеет значение?

Комментарии TODO обычно относятся к типу работы, которая может быть слишком маленькой для заявки, но достаточно важной, чтобы отметить и описать ее в комментарии к коду (хотя многие TODO будут ссылаться на проблемы / заявки). Поскольку они являются частью кода, они часто «ближе» к работе, которую необходимо выполнить. Их легко добавить, но, кажется, так же легко потерять (1,8 тыс. + TODO, добавленных до 2019 г., все еще находятся в исходном коде Kubernetes).

Мы надеемся, что, создав инструмент, отображающий метаданные о коде, мы сможем облегчить разработчикам программного обеспечения выполнение работы в проектах любого размера. Всплытие TODO - лишь часть этого.