Разработчик-энтузиаст представил проект карты GitHub
Разработчик Андрей Каща (Andrei Kashcha) из Сиэтла представил проект карты GitHub, собрав на одном сайте более 400 тыс. репозиториев. Все репозитории разбиты по странам с вымышленными названиями, которые описывают применяемые в них технологии.
Для создания карты использовались данные о том, кто и каким репозиториям ставил звёзды с июня 2020 года по март 2023. Это помогло собрать проекты суммарно с более 350 млн звёздами. Все данные были получены и проанализированы с помощью сервиса Google BigQuery.
После этого необходимо было найти похожие репозитории, чтобы отсортировать их по используемым технологиям. Для этого автор выбрал алгоритм определения сходства с помощью Коэффициента Жаккара. Мощности его домашнего компьютера с 24 ГБ оперативной памяти не хватило, поэтому для проекта был арендован экземпляр AWS EC2 с 512 ГБ оперативной памяти, который справился с задачей всего за несколько часов. Автор рассказал, что экспериментировал и с другими алгоритмами поиска соответствий, но Коэффициент Жаккара показал самый точный результат.
На третьем этапе необходимо было выполнить кластеризацию всех проектов. Для этого использовался алгоритм Лейдана. С его помощью удалось получить более 1000 кластеров. Узлы в графах автор проекта рассчитывал с помощью своего решения, код которого опубликован на GitHub.
В итоге получилась карта проектов на GitHub, которые объединены используемыми в них технологиями. Каждой области знаний дали название вымышленной страны, сгенерированное с помощью ChatGPT& К примеру:
Свифтория — проекты на Swift;
Вьютопия — проекты на Vue.js;
Джаваленд — проекты на Java;
Питония — проекты на Python;
Дотнетия — проекты на .NET;
Фронтера — фронтенд-разработка;
Земля Юнити — проекты на движке Unity;
Ледиаполис — проекты, связанные с LED;
Хардлендс — разработка железа;
Королевство PHP — проекты на PHP;
Диплёрния — проекты глубокого обучения.
Каждая вымышленная страна содержит в себе точки, обозначающие проекты. Клик по точке открывает карточку проекта с README. Также показываются связи точки с другими проектами, в которых он встречается или используется.
Карту можно просматривать в браузере, но первый запуск сайта может быть достаточно долгим из-за загрузки данных. Код проекта опубликован на GitHub.