На прошлой неделе я наткнулся на перевод главы из учебника по проектированию API за авторством Брайана Кукси (переведен @trrerg). Открыв статью, я с удивлением обнаружил, что автор задается вопросом «В чем отличие между REST и SOAP».

Прочитав заветное слово SOAP, я, словно ресторанный критик Антуан Эго, вкусивший тот самый рататуй из одноимённого мультфильма, внезапно перенёсся в беззаботную юность и почувствовал себя на 15 лет моложе. Как же давно я не слышал этих слов!
Можно было бы просто пройти мимо, списав всё на лень автора и переводчика, давно (очень давно) не обновлявших учебный материал. Однако на странице учебника указано: «last updated January 23, 2024».
Так я задался вопросом: как определить популярность и актуальность той или иной технологии? Может быть, я живу в неведении, а все вокруг до сих пор пользуются OS/2 и радуют друг друга сообщениями в ICQ?
В этой статье я расскажу, как искал метрики для сравнения популярности кроссплатформенных RPC‑фреймворков, а в итоге разработал инструмент для анализа трендов на GitHub.
ДИСКЛЕЙМЕР: Автор признает, что никакой отдельный показатель не может служить единственным критерием для оценки популярности технологии. Интерпретация полученных показателей субъективна.
Тренды популярности
Первым делом я обратился к Google Trends. Это удобный инструмент, который позволяет сравнить популярность тех или иных ключевых слов среди поисковых запросов. Но результаты оказались неоднозначными. Посмотрите на график ниже:

Согласно Google Trends, SOAP и gRPC сегодня примерно одинаково популярны, а JSON‑RPC значительно отстаёт. Но так ли это на самом деле? Мой опыт подсказывает, что современные проекты редко выбирают SOAP для новых разработок. Более того, последняя версия SOAP вышла в 2007 году (17 лет назад!), тогда как последний стабильный релиз gRPC был 3 недели назад. Складывается ощущение, что статистика поисковых запросов не совсем корректно отражает популярность технологий.
Существуют и другие источники, на основании которых можно сопоставить популярность RPC библиотек. Например, на BestofJS можно найти рейтинг RPC‑библиотек для JavaScript:

Здесь тоже можно найти проекты, связанные с gRPC (сейчас они начинаются с 4-го места protobuf.js и дальше по списку). Но учитываются только проекты связанные с JavaScript, а мы хотим оценить популярность кроссплатформенных RPC проектов.
Оценка популярности: пример языков программирования
Если бы мы рассматривали языки программирования, у нас было бы больше доступных инструментов. Например, IEEE Spectrum Language Ranking — один из наиболее популярных рейтингов популярности языков программирования. Согласно их методологии, они анализируют 8 ключевых источников данных: Google, Stack Overflow, IEEE Xplore Digital Library, IEEE Job Site (ну естественно, это же рейтинг IEEE), CareerBuilder, GitHub, Trinity College Dublin Library и Discord. Подход IEEE Spectrum дейсвительно основательный, но я посчитал что такого не потяну.

И тут я наткнулся на ряд альтернативных проектов, в частности GitHub Language Statistics, который использует данные из Google BigQuery для анализа активности на GitHub. Идея анализа GitHub показалась мне перспективной, и я решил двигаться в этом направлении.
GitHub: статистика поиска
Допустим, мы откуда-то знаем, что среди наиболее известных кроссплатформенных RPC фреймворков можно выделить SOAP, gRPC, JSON-RPC, Apache Thrift и Dubbo. Как сравнить их популярность среди open source проектов на GitHub?
Я решил провести простой анализ ручками, используя поиск GitHub. Поставим все проекты в равные условия и установим, что мы ищем результаты за последние, предположим, 2 года (с 2023 года). Получается вот такой запрос:
NAME_OF_THE_FRAMEWORK created:>2023-01-01
GitHub поиск показывает не только результаты поиска, но и статистику по общему количеству репозиториев, Issues, пул-реквестов и дискуссий.

Поиск по описанному выше методу дает следующий результат (полужирным выделена строка с первым местом по каждому критерию; подчеркиванием — второе место; наклонным шрифтом — третье место):
Технология |
Репозитории |
Issues |
Pull Requests |
Discussions |
gRPC |
28k |
77k |
600k |
5k |
JSON-RPC |
851 |
35k |
98k |
2k |
SOAP |
7.7k |
11k |
12k |
781 |
Thrift |
2.5k |
8k |
14k |
320 |
Dubbo |
983 |
3k |
10k |
163 |
В отличие от Google Trends, мы уже можем подробно оценить количественные показатели каждой из технологий:
-
gRPC явно доминирует по всем показателям, что говорит о широком внедрении, высокой динамике сообщества и активном развитии.
-
JSON-RPC хоть и имеет наименьшее количество репозиториев (851), но очень высокое число issues (35k), pull requests (98k) и обсуждений (2k), что может говорить об активном использовании.
-
Thrift и Dubbo показывают умеренно-низкие показатели по всем метрикам.
-
SOAP показывает удивительно большое количество репозиториев (7.7k), что указывает на продолжающееся использование. Однако можно заметить очень небольшое количество pull requests (12k) и обсуждений (781) для такого большого числа репозиториев. С чем это может быть связано?
Эти данные оставляют ощущение недосказанности. SOAP, несмотря на большое количество проектов, проседает по pull requests и обсуждениям. Создаётся впечатление, что проекты, связанные с SOAP, не очень-то популярны. Как же нам измерить эту популярность более точно?
Индекс Хирша
В академической среде уже сталкивались с подобной проблемой. Бывает, что у учёного (или университета, или журнала) куча статей. Но важно не только количество, а то, насколько они востребованы и цитируемы.

Хорхе Хирш предложил индекс, который теперь носит его имя: индекс Хирша. Если отсортировать все статьи автора по убыванию цитируемости, то h-индекс — это такое число , что статья номер
в этом списке процитирована как минимум
раз. То есть, у автора с
есть как минимум 10 статей, каждая из которых процитирована не менее 10 раз.
Слева вы видите иллюстрацию рассчета h-индекса для 18 статей какого-то автора. Если мы отсортируем их по количеству цитат, то увидим, что 5 статей из 18 имеют по 5 цитат или больше, а остальные 13 имеют меньше 5 цитат. Таким образом, для этого автора .
Были попытки применения индекса Хирша и к GitHub, но они в основном ограничивались анализом отдельных авторов.
GitHub: Звезды и Форки
Мне показалось интересным применить концепцию индекса Хирша более широко. Я предлагаю два новых показателя для оценки популярности технологий и фреймворков:
-
Star H-Index (
): Технология имеет индекс
, если существует
репозиториев по этой технологии, каждый из которых имеет не менее
звёзд.
-
Fork H-Index (
): Технология имеет индекс
, если существует
репозиториев по этой технологии, каждый из которых имеет не менее
форков.
Star H-Index отражает видимость проекта (звёзды указывают на популярность), а Fork H-Index отражает активное участие сообщества (форки показывают, сколько людей активно исследуют или расширяют проект).
Этот показатель можно измерять как глобально, так и в контексте конкретного временного промежутка. Для примера, давайте рассчитаем значения и
для наших технологий с 2023 года:
Технология |
|
|
gRPC |
58 |
24 |
SOAP |
13 |
11 |
JSON-RPC |
23 |
11 |
Thrift |
12 |
9 |
Dubbo |
19 |
11 |
Похоже, что эти метрики действительно позволяют измерить популярность соответствующих технологий в репозиториях GitHub. gRPC подтверждает свое лидерство по обоим показателям, тогда как JSON-RPC прорывается на второе место с , что показывает текущую популярность проекта. SOAP, Thrift и Dubbo показывают очень близкие показатели
(в диапазоне от 12 до 19) и
(в диапазоне от 9 до 11), что может говорить об их ограниченном использовании в нишевых проектах.
GitHub Trend Analyzer
Вручную считать все эти h-индексы – занятие не из приятных. GitHub обладает отличным API, который позволяет взаимодействовать с платформой как через REST, так и через GraphQL. Поэтому я решил создать небольшое веб-приложение – GitHub Trend Analyzer.
Приложение позволяет:
-
Рассчитывать H-индексы: Введите поисковый запрос, и приложение вычислит
и
для репозиториев, соответствующих запросу.
-
Сравнивать несколько технологий: Введите несколько запросов, разделенных точкой с запятой, и получите сравнительную таблицу всех метрик.
-
Анализировать тренды: В дополнение к h-индексам, приложение позволяет визуализировать тренды активности GitHub по времени – количество репозиториев, pull requests и issues для каждого поискового запроса.
-
Экспортировать данные: Полученные результаты можно экспортировать в CSV для дальнейшего анализа.
Давайте посмотрим, что нам выдаст анализ все тех-же RPC платформ (если будете сами запускать анализ, немного подождите, подсчет H-индеска посредством GitHub API нетороплив).

Теперь, когда у нас в руках оказался такой инструмент, давайте посмотрим более подробно на историю использования этих технологий на GitHub при помощи анализа трендов.
Скрытый текст
Важно отметить, что для использования функции анализа трендов необходимо добавить ваш персональный токен GitHub API. Это связано с тем, что эта функция использует GraphQL API, который требует аутентификации. Токен можно создать здесь, не требуется никаких специальных разрешений – достаточно базового токена с разрешением на чтение публичных репозиториев.

Картина здесь достаточно ясная. С 2019 года gRPC стремительно набирает популярность и сегодня является безусловным лидером. Dubbo, первоначально разработанный компанией Alibaba, выстрелил в 2018-2019, когда попал в инкубатор Apache, однако после этого потерял темп. Возможно, причиной стала сильная привязка к Java и практически полное отсутствие поддержки JavaScript.
SOAP же демонстрирует стабильность, без резких скачков и падений. За счёт чего он продолжает жить? Ответ, похоже, кроется в том самом учебнике, с которого мы начали эту статью. Давайте взглянем на примеры репозиториев, упоминающих SOAP, которых тысячи появляются на GitHub даже в 2025 году.

«This is an Assignment given in the core course of Btech from University of calcutta” — похоже, это и есть разгадка популярности SOAP на GitHub и Google Trends. Тысячи студентов ежегодно загружают на GitHub свои системы управления персоналом, документооборотом, журналы успеваемости и учёта пациентов, чтобы получить заветное «зачтено» по курсу «Веб-технологии». Учебное пособие по этому курсу, похоже, было составлено ещё в 2010 году и с тех пор передаётся из поколения в поколение. Технологии в нём оказались заморожены во времени. Поэтому судьба SOAP выглядит вполне стабильной. Пока не развалится последняя методичка, студенты будут продолжать загружать на GitHub свои SOAP-проекты.

Косвенным подтверждением этого является тренд упоминаний данных технологий в issues на GitHub. Хорошо видно, что gRPC и JSON-RPC стабильно обсуждаются в issues, что говорит об их активном применении в реальных проектах. В то же время остальные технологии значительно отстают. SOAP пережил необъяснимый всплеск активности в 2014–2016 годах (причины которого мне так и не удалось выяснить), но затем постепенно сошёл на нет.
Заключение
GitHub Trend Analyzer позволяет применить методику h-индексов и анализ трендов не только к RPC, но и к любым другим технологиям, фреймворкам или концепциям, которые можно найти на GitHub. Например, можно уловить дуновение нового времени вот в таком графике.

Исходный код проекта доступен в репозитории, я буду рад обратной связи.
Если вы сталкивались с тем, что у вас не хватает аргументов в споре, что-же популярней, React или Vue, или же Next.js уже всех поборол: приглашаю вас. Пользуйтесь, анализируйте и принимайте обоснованные решения!
ссылка на оригинал статьи https://habr.com/ru/articles/895804/
Добавить комментарий