Некоторые протоколы вызывают бурные обсуждения в ИТ-сообществе, становятся стандартами индустрии — например, QUIC или DoH. На второй чаше весов лежат разработки энтузиастов, о существовании которых можно даже не догадываться.
Мы в T1 Cloud нашли пару проектов, которые вполне можно окрестить термином hidden gem — spartan:// и Spring '83.
Клиент-серверный протокол
Первая разработка, о которой мы хотим рассказать, — это клиент-серверный протокол spartan://, который берет пример с Gemini, Gopher и HTTP. Его представил инженер Майкл Лазар. В портфолио автора можно найти такие open source проекты, как TCP-сервер Jetforce и утилита для мониторинга логов Akita. Он также развивает форк библиотеки PRAW, которая представляет собой оболочку для Reddit API.
Что касается работы, то spartan:// передает запросы по TCP текстом в кодах ASCII. Контент предоставляется клиентам по запрошенному URL-адресу, структура которого напоминает HTTP. Процесс обмена очень прост: клиент отсылает URL того, что он хочет получить, завершая запрос символом новой строки. Сервер отвечает информационной строкой с цифровым кодом статуса.
Всего этих кодов четыре: «2: Success» — запрашиваемый ресурс найден и успешно загружен, «3: Redirect» — ресурс обнаружен в другом месте, нужно зарсить его повторно, «4: Client Error» — запрос отклонен, синтаксическая ошибка «5: Server Error» — по какой-то причине сервер не может обработать корректный запрос.
По умолчанию spartan:// работает с трехсотым портом. Это — явная отсылка к Фермопильскому сражению, когда 300 спартанцев обороняли ущелье от персидской армии.
Разумеется, у такого простого протокола есть определённые недостатки. По словам разработчика, он хотел создать решение, с которым легко и интересно работать. В итоге автор не фокусировался на вопросах приватности и безопасности. В то же время spartan:// имеет много общего с Gemini — даже информация о нем опубликована на тематическом
В таком контексте он больше подходит для запуска минималистичных личных сайтов и блогов. Важную роль в этом играет понятная спецификация, в которой достаточно просто разобраться и референс-код для клиента и сервера — все это можно найти на официальном сайте.
На замену RSS
Интернет полон авторов, за блогами которых хочется следить. Однако, по мнению Робина Слоана — автора бестселлера «Круглосуточный книжный мистера Пенумбры» — для этого нет удобного, наглядного и простого инструмента. Да, есть ленты социальных сетей, но их алгоритмы продвигают посты по релевантности — не всегда то, что нужно или интересно. Существуют проверенные временем RSS-фиды, однако и они не лишены недостатков. Чаще всего загружаемый XML-файл представляет собой текстовую простыню без деления на абзацы и списки.
Робин Слоан решил трансформировать систему подписок и разработал протокол Spring '83. Название представляет собой своеобразный оммаж на стандарт RFC 865, оформленный весной 1983 года. Документ содержит описание протокола Quote of the Day Protocol. На заре TCP/IP его использовали для тестирования сетей — сервер возвращал случайную короткую цитату из предопределенного списка.
Spring ‘83 работает с так называемыми «досками» (boards). Это — HTML-фрагменты размером не более 2217 байт, которые не могут воспроизводить скрипты. Их формат отображения напоминает доски объявлений в газетах или винтажные рекламы комиксов. Авторов контента система идентифицирует с помощью пары ключей со схемой Ed25519. Они представлены в HEX-формате и имеют размер 64 бита. Открытый ключ нужен для запроса соответствующей доски с сервера, а закрытый — для её редактирования.
Автор показал демо клиента, а в сети уже можно найти несколько реализаций. Например, springboard на Go, где публикуются последние новости о Spring '83, и lets-dance с разношерстным контентом вроде погоды и фотографий.
В целом вокруг протокола постепенно собирается активное сообщество. Энтузиасты уже предложили ряд улучшений — например, не использовать YAML и заменить него на JSON, а также пересмотреть подход к ротации ключей. Что интересно, автор прислушивается к своей аудитории и планирует учесть фидбэк при дальнейшей разработке.
Больше интересных проектов в нашем блоге на Хабре:
Автор:
cloudtrend