Некоторые протоколы вызывают бурные обсуждения в ИТ-сообществе, становятся стандартами индустрии — например, 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 — даже информация о нем опубликована на тематическом хостинге Yesterweb – и не поддерживает кэширование, сжатие и возобновление прерванных загрузок. Поэтому не годится для обмена объемными файлами.
В таком контексте он больше подходит для запуска минималистичных личных сайтов и блогов. Важную роль в этом играет понятная спецификация, в которой достаточно просто разобраться и референс-код для клиента и сервера — все это можно найти на официальном сайте.
На замену 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, а также пересмотреть подход к ротации ключей. Что интересно, автор прислушивается к своей аудитории и планирует учесть фидбэк при дальнейшей разработке.
Больше интересных проектов в нашем блоге на Хабре:
Комментарии (6)
13werwolf13
15.08.2022 14:21+1дико печалит что на большинстве сайтов нынче забивают на rss
а gemini по моему вообще задумка максимально шикарная (хотя безалтернативное требование tls штука спорная), но поколение большого пальца не оценит..
lab412
RSS великий формат. и отличная идея. но она разбивается о то, что все хотят рекламу показывать, а не давать вам контент. в итоге почти все ресурсы отключили эту функцию или и её засирают рекламой то же. лет 10 назад я настроил себе ленту которая начала истощаться и на сегодня в ней нет уже ничего, все выключили RSS. так что на возрождение я бы не рассчитывал, как бы красиво идея не выглядела... даже в этой статье и то реклама в конце...
alexs963
Для многих сайтов работает rss-bridge, у меня vk и youtube через него в читалку rss попадают.
V1tol
Пользую RSS как ненавязчивую альтернативу уведомлениям. Например, намного удобнее отслеживать новые коммиты или релизы в github или новые видео на youtube. Status.*.com практически всех крупных компаний имеют RSS рассылку. Да и как показывает опыт, практически у всех стоящих ресурсов есть RSS.
Biga
Тоже так считал, но потом заметил, что rss вполне себе жив. Правда иногда за ссылкой приходится лезть в исходный текст страницы.
inkelyad
Только ее пытались применить там, где не стоило бы. Скажем, для подавляющего большинства форумов было бы удобнее какое-нибудь развитие nntp/usenet протокола. Т.е. настраиваешь news читалку - и там весь форум и читаешь. Преимущество - более удобное локальное архивирование и/или поиск.