Разработчик-энтузиаст представил проект карты GitHub

Разработчик Андрей Каща (Andrei Kashcha) из Сиэтла представил проект карты GitHub, собрав на одном сайте более 400 тыс. репозиториев. Все репозитории разбиты по странам с вымышленными названиями, которые описывают применяемые в них технологии.

02b29d3ac9a0892407d93cbf499bcab5.jpg

Для создания карты использовались данные о том, кто и каким репозиториям ставил звёзды с июня 2020 года по март 2023. Это помогло собрать проекты суммарно с более 350 млн звёздами. Все данные были получены и проанализированы с помощью сервиса Google BigQuery.

После этого необходимо было найти похожие репозитории, чтобы отсортировать их по используемым технологиям. Для этого автор выбрал алгоритм определения сходства с помощью Коэффициента Жаккара. Мощности его домашнего компьютера с 24 ГБ оперативной памяти не хватило, поэтому для проекта был арендован экземпляр AWS EC2 с 512 ГБ оперативной памяти, который справился с задачей всего за несколько часов. Автор рассказал, что экспериментировал и с другими алгоритмами поиска соответствий, но Коэффициент Жаккара показал самый точный результат.

f62462b5d4937dd4f3627d46a0d2448a.jpg

На третьем этапе необходимо было выполнить кластеризацию всех проектов. Для этого использовался алгоритм Лейдана. С его помощью удалось получить более 1000 кластеров. Узлы в графах автор проекта рассчитывал с помощью своего решения, код которого опубликован на GitHub.

31728ac524049553c1aa22290b830ddc.jpg

В итоге получилась карта проектов на GitHub, которые объединены используемыми в них технологиями. Каждой области знаний дали название вымышленной страны, сгенерированное с помощью ChatGPT& К примеру:

  • Свифтория — проекты на Swift;

  • Вьютопия — проекты на Vue.js;

  • Джаваленд — проекты на Java;

  • Питония — проекты на Python;

  • Дотнетия — проекты на .NET;

  • Фронтера — фронтенд-разработка;

  • Земля Юнити — проекты на движке Unity;

  • Ледиаполис — проекты, связанные с LED;

  • Хардлендс — разработка железа;

  • Королевство PHP — проекты на PHP;

  • Диплёрния — проекты глубокого обучения.

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

71fb82e734e654a65d842742530e059c.jpg

Карту можно просматривать в браузере, но первый запуск сайта может быть достаточно долгим из-за загрузки данных. Код проекта опубликован на GitHub.

© Habrahabr.ru