GitHub стал однообразнее после появления ChatGPT?

от автора

После появления ChatGPT и массового распространения GitHub Copilot, Cursor, Claude Code, Windsurf и других AI-инструментов разработка стала заметно быстрее. Код, тесты, README, комментарии и небольшие utility-функции теперь можно получить за секунды. Но вместе с этим появился менее очевидный вопрос: если миллионы разработчиков используют похожие модели и похожие промпты, не становится ли открытый код более однообразным?

В этой статье я проверяю эту гипотезу на данных GitHub за 2019-2025 годы. В качестве основного источника используется GH Archive через BigQuery: это публичный архив событий GitHub, где можно анализировать PushEventPullRequestEventCreateEventIssuesEventForkEventWatchEvent и другие типы активности. Дополнительно анализируется небольшая выборка публичных репозиториев: README, комментарии, имена функций и структура проектов.

Главная идея работы — GitHub Uniformity Index, или GUI: составной индекс, который измеряет однообразие open source по нескольким признакам одновременно. В него входят похожесть README, повторяемость commit messages и комментариев, концентрация имен функций, proxy-метрика AST similarity и похожесть структуры проектов.

Это не попытка угадать, какой конкретный файл был написан нейросетью. Такой задачи здесь нет: надежного способа массово отличать AI-код от человеческого кода не существует. Цель другая — проверить, изменились ли статистические свойства GitHub после того, как генеративный ИИ стал обычным инструментом разработки.

30 ноября 2022 года OpenAI представила ChatGPT. Для широкой аудитории это стало началом генеративного AI-бума; для разработчиков — моментом, после которого код все чаще пишется не в одиночку, а в диалоге с моделью.

Обычно влияние AI на программирование обсуждают через скорость. Стали ли разработчики быстрее закрывать задачи? Увеличилось ли число pull request? Сократилось ли время на boilerplate? Эти вопросы важны, но они не исчерпывают тему.

Есть более тихий и, возможно, более интересный вопрос: что происходит с разнообразием кода?

Open source всегда был не только производственной средой, но и культурной экосистемой. В нем живут разные стили проектирования, разные README, разные соглашения об именовании, разные архитектурные привычки и разные способы объяснять код. Если же все больше людей обращаются к похожим моделям, обученным на похожих корпусах, возникает гипотеза о стандартизации. Код может стать не обязательно хуже, но более предсказуемым. README — более похожими. Комментарии — более гладкими и универсальными. Структура маленьких проектов — более шаблонной.

Вопрос этой статьи можно сформулировать коротко:

Стал ли публичный GitHub более однообразным после массового распространения генеративных моделей?

Хорошая новость в том, что это можно проверять не на ощущениях, а на данных.

Что уже известно

Существующие исследования в основном смотрят на AI как на инструмент продуктивности. Например, работа Microsoft Research, GitHub и MIT о GitHub Copilot показала, что участники эксперимента с доступом к Copilot быстрее справлялись с задачей реализации HTTP-сервера на JavaScript. GitHub Octoverse описывает макротренды open source: рост числа разработчиков, языковую динамику, вклад AI-проектов и изменение публичной активности. Stack Overflow Developer Survey показывает, что AI-инструменты стали частью рабочего процесса большой доли разработчиков.

Но в этих работах почти не исследуется другой слой: не ускоряет ли AI разработку, а делает ли он open source более похожим на самого себя.

Именно здесь появляется исследовательская ниша. Можно измерять не только количество событий на GitHub, но и повторяемость артефактов: README, комментариев, commit messages, имен функций, структуры каталогов и AST-представления исходных файлов.

Гипотеза

Основная гипотеза звучит так: после 2022 года публичный GitHub стал более шаблонным в тех частях, которые LLM чаще всего помогают создавать.

В первую очередь это README и документация. Модели часто предлагают похожую структуру: Overview, Features, Installation, Usage, Configuration, Contributing, License. Такая структура сама по себе нормальна, но если ее доля резко растет, это уже измеримый сдвиг в экосистеме.

Вторая зона — комментарии. У LLM есть узнаваемая склонность к универсальным пояснениям: Initialize...Validate inputHandle errorsReturn the result. Ни одна такая фраза не доказывает AI-авторство, но массовая динамика этих шаблонов может быть показательной.

Третья зона — имена функций. fetchDataprocessDatahandleErrorvalidateInputgetUserDatarenderComponent — это не плохие имена, но они очень безопасные и усредненные. Если top-100 таких имен начинает покрывать все большую долю функций, значит распределение имен становится более концентрированным.

Наконец, есть структура проектов. AI-инструменты часто предлагают типовые каркасы: src/tests/docs/config/.github/workflows/. Это может быть проявлением best practices, а может быть следом массовой генерации scaffolding. Поэтому такую метрику нужно читать осторожно и сравнивать внутри похожих групп проектов.

Данные

Главный источник событий — GH Archive. Он архивирует публичную временную шкалу GitHub с 2011 года и позволяет анализировать публичную активность GitHub почти как временной ряд.

Для этого исследования использовались дневные таблицы GH Archive в BigQuery. Чтобы не сравнивать разные сезоны и не запускать скан десятков терабайт, я взяла одну и ту же календарную дату для каждого года:

2019-02-152021-02-152023-02-152024-02-152025-02-15

Это важное методологическое ограничение. Исследование не утверждает, что один день полностью представляет весь год. Но такой дизайн дает честное сравнение одинаковых временных точек: до ChatGPT, сразу после появления ChatGPT и в более зрелый период AI-assisted development.

Через BigQuery были посчитаны:

  • общее число публичных событий GitHub;

  • число PushEvent;

  • число PullRequestEvent;

  • число CreateEvent;

  • число созданных репозиториев;

  • число коммитов внутри PushEvent;

  • число уникальных репозиториев за день;

  • распределение commit messages;

  • энтропия commit messages;

  • доля top-10, top-100 и top-1000 commit messages.

Для анализа содержимого репозиториев использовалась отдельная выборка. Из PushEvent за те же даты были взяты публичные репозитории, после чего их текущие zip-архивы скачивались через GitHub codeload. Архивы больше 30 MB пропускались, чтобы один крупный монорепозиторий не искажал результат.

В итоге локально были проанализированы 89 репозиториев:

2019: 26 репозиториев2021: 16 репозиториев2023: 15 репозиториев2024: 7 репозиториев2025: 25 репозиториев

Методология

Исследование нельзя делать как простое сравнение «весь GitHub 2021 против всего GitHub 2025». Состав GitHub сам по себе меняется: растет число учебных проектов, AI-репозиториев, шаблонных pet projects, forks, автогенерируемых scaffolds и проектов на Python. Если это не контролировать, красивый график может показывать не влияние LLM, а изменение состава выборки.

Поэтому здесь используется более скромный, но воспроизводимый дизайн: одинаковая дата для каждого года, одинаковые типы событий, одинаковые SQL-запросы и одинаковые правила локального анализа репозиториев.

Для активности GitHub считаются события GH Archive. Для commit messages извлекаются сообщения из payload.commits внутри PushEvent, берется первая строка сообщения и приводится к нижнему регистру. Затем считаются энтропия Шеннона и доля самых частотных сообщений.

Для README строится простая текстовая метрика похожести: тексты нормализуются, превращаются в частотные векторы, после чего считается cosine similarity до ближайшего соседа. Это не так богато, как sentence embeddings, но зато воспроизводимо без внешних API.

Для комментариев и commit messages считаются доли шаблонных фраз и top-100 share. Для имен функций используются регулярные выражения по распространенным конструкциям deffunctionfuncfn, arrow functions. Это не заменяет полноценный Tree-sitter, но позволяет получить первичную оценку концентрации имен функций.

Для AST similarity в этой версии используется proxy: structural fingerprint по набору ключевых конструкций (importclassdeffunctionifforreturnasyncawait и так далее). Это упрощение, и оно отдельно указано в ограничениях.

Важный принцип: все метрики в этой статье нужно читать как пилотное измерение, а не как окончательный диагноз всему GitHub.

GitHub Uniformity Index

Главный результат методологии — GitHub Uniformity Index, или GUI. Это составной индекс однообразия GitHub, нормализованный от 0 до 100.

GUI = 100 * (R + C + F + A + S) / 5

Здесь:

R - похожесть READMEC - повторяемость комментариев и commit messagesF - концентрация имен функцийA - AST similarity / structural proxyS - похожесть структуры проектов

В первой версии используются равные веса. Это проще и честнее: читателю не нужно верить в сложную экспертную настройку коэффициентов. Индекс не претендует на абсолютную истину. Он нужен для того, чтобы собрать несколько разных сигналов в один график и посмотреть, движутся ли они вместе.

Интерпретация простая: 0 — максимально разнообразная экосистема, 100 — максимально шаблонная. В реальности GitHub, конечно, не будет ни около 0, ни около 100. Интересна не абсолютная величина, а динамика по годам и вклад отдельных компонентов.

Активность GitHub: рост в несколько раз

Даже один выбранный день хорошо показывает, насколько вырос GitHub.

15 февраля 2019:  всего событий:              1 704 660  PushEvent:                    848 699  PullRequestEvent:             111 796  созданные репозитории:         66 789  коммиты внутри PushEvent:   1 363 22815 февраля 2025:  всего событий:              4 669 434  PushEvent:                  3 204 831  PullRequestEvent:             250 556  созданные репозитории:        174 268  коммиты внутри PushEvent:   4 182 600

В этой выборке PushEvent выросли примерно в 3.8 раза, а число коммитов внутри push-событий — примерно в 3.1 раза. Pull request выросли слабее: примерно в 2.2 раза.

Commit messages стали заметно концентрированнее

Самый сильный результат получился по commit messages.

В 2019 году top-100 commit messages покрывали 14.7% всех сообщений в выборке. В 2021 году почти столько же — 14.7%. В 2023 году показатель вырос до 19.9%. В 2024 году — до 33.1%. В 2025 году — 29.3%.

year   entropy   top-100 share   template share2019   17.25     14.68%          8.00%2021   17.56     14.70%          9.90%2023   17.19     19.88%          9.61%2024   15.05     33.07%          19.60%2025   15.60     29.32%          10.19%

Здесь template share — доля сообщений, попавших в небольшой словарь шаблонов вроде update readmeadd files via uploadinitial commitminor changesgeneratedupdate dependencies и похожих фраз.

Это не доказывает, что сообщения писал AI. Но это показывает, что распределение commit messages после 2022 года стало менее равномерным. Небольшая группа частых сообщений покрывает большую долю всех коммитов.

Особенно выделяется 2024 год: энтропия падает до 15.05, top-100 messages покрывают треть всех сообщений, а шаблонные сообщения доходят почти до 20%.

Top commit messages выглядят очень шаблонно

В top commit messages ожидаемо попадают короткие универсальные фразы:

update readme.mdadd files via uploadupdateinitial commitfixupdate readme.

Это не новый феномен. Такие сообщения были и до ChatGPT. Но после 2022 года они занимают большую долю распределения.

README и код: сигнал есть, но он нестабильный

Для README/code-слоя результат менее устойчивый. Это ожидаемо: скачивать и анализировать содержимое репозиториев сложнее, чем считать события GH Archive.

Метрики по доступным zip-архивам:

year   repos   readmes   README similarity   README AI-like sections2019   26      21        0.266               28.6%2021   16      14        0.553               64.3%2023   15      13        0.371               15.4%2024   7       6         0.216               0.0%2025   25      22        0.514               36.4%

Здесь нет красивой монотонной линии «после ChatGPT все стало одинаковым». 2025 действительно выше 2019 по README similarity, но 2021 еще выше. 2024, наоборот, ниже всех, но по нему мало репозиториев.

Это хороший пример того, почему исследование надо делать осторожно. Если бы целью было любой ценой доказать «AI сделал GitHub одинаковым», можно было бы вытащить только 2025 против 2019 и получить эффект. Но честная картина сложнее: на малой repo-artifact выборке README-сигнал есть, но он нестабилен.

Имена функций не стали очевидно однообразнее

По именам функций пилотная выборка не подтверждает простую гипотезу «после ChatGPT все функции стали называться одинаково».

year   function names   entropy   top-100 share2019   7202             7.45      57.9%2021   2357             7.68      57.4%2023   2549             10.88     15.0%2024   539              7.33      66.6%2025   1909             8.50      49.9%

2025 не выглядит катастрофически более однообразным, чем 2019 или 2021. Наоборот, по этой выборке 2023 был самым разнообразным по именам функций, а 2024 выглядит очень концентрированным, но там всего 539 найденных имен функций, поэтому вывод слабый.

Пока более честный вывод такой: в commit messages эффект концентрации заметен сильнее, чем в именах функций.

GitHub Uniformity Index: что получилось

После нормализации компонентов внутри выборки пилотный GUI получился таким:

2019   57.82021   54.12023   27.62024   55.72025   77.5

На первый взгляд 2025 выглядит самым однообразным годом в выборке. Но этот результат нужно читать внимательно. GUI растет в 2025 не потому, что каждая метрика выросла одновременно. Основной вклад дают README similarity, AST proxy и structure similarity, а commit-message концентрация была максимальной в 2024.

Поэтому корректная формулировка такая:

В пилотной выборке 2025 год имеет максимальный GUI, но разные компоненты индекса ведут себя неодинаково. Самый устойчивый сигнал однообразия наблюдается в commit messages, а repo-artifact метрики требуют более крупной исторической выборки.

Что это говорит о ChatGPT

Прямо доказать влияние ChatGPT по этим данным нельзя. GH Archive не хранит флаг «этот коммит написан с AI», а похожие фразы могли существовать задолго до LLM.

Но можно сказать другое: после 2022 года в выбранной выборке действительно усилилась концентрация некоторых текстовых артефактов GitHub. Особенно это видно по commit messages.

Это хорошо согласуется с гипотезой, что AI-инструменты сильнее всего стандартизируют не глубокую архитектуру проекта, а «оболочку» разработки:

  • commit messages;

  • README;

  • комментарии;

  • короткие описания;

  • типовые utility-фрагменты;

  • scaffolding.

При этом по именам функций и структуре кода в пилотной выборке картина не такая простая. Там нельзя честно сказать «все стало одинаковым». Скорее видно, что некоторые слои разработки стандартизируются сильнее других.

Ограничения

Главное ограничение — масштаб. Выборка GH Archive построена по одному дню на год: 15 февраля. Это сделано намеренно, чтобы сравнение было воспроизводимым и не требовало десятков терабайт BigQuery-сканов. Но один день не обязан представлять весь год.

Второе ограничение — repo-artifact слой. README и код анализировались по текущему состоянию репозиториев, которые попали в PushEvent в выбранный день. Это значит, что README 2019-репозитория мог измениться после 2019 года. Для строгого исторического исследования нужно брать состояние файлов на конкретный commit или дату.

Третье ограничение — доступность репозиториев. Старые и удаленные репозитории часто недоступны через codeload. Крупные архивы больше 30 MB пропускались. Поэтому repo-artifact выборка смещена в сторону небольших и средних доступных проектов.

Четвертое ограничение — AST proxy. Здесь использовался упрощенный structural fingerprint по ключевым словам и конструкциям, а не полноценный Tree-sitter AST или GumTree. Для финальной научной версии нужно заменить этот слой на настоящий AST-парсинг по языкам.

Наконец, нельзя приписывать все изменения ChatGPT. На однообразие влияют GitHub Actions, фреймворки, шаблоны проектов, учебные курсы, автогенерируемые зависимости, package managers и общая стандартизация разработки.

Вопрос «стал ли GitHub однообразнее после ChatGPT?» не имеет простого ответа «да» или «нет».

По этой пилотной выборке можно сказать так:

  • активность GitHub сильно выросла;

  • commit messages после 2022 года стали заметно более концентрированными;

  • top-100 commit messages покрывают гораздо большую долю сообщений, чем в 2019-2021;

  • README/code-метрики дают сигнал, но пока нестабильный из-за малой выборки;

  • имена функций не показывают однозначного роста однообразия;

  • пилотный GUI максимален в 2025 году, но его компоненты ведут себя по-разному.

Самый сильный вывод исследования не в том, что «AI сделал весь код одинаковым». Данные этого не доказывают. Более точный вывод такой:

После массового появления AI-инструментов некоторые публичные артефакты GitHub, особенно commit messages, стали более концентрированными и шаблонными. Но на уровне кода и имен функций эффект неоднороден и требует более крупной исторической выборки.

Источники

ссылка на оригинал статьи https://habr.com/ru/articles/1055596/