💾 Archived View for ostov.ml › articles › stockings.gmi captured on 2023-01-29 at 02:30:23. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Stockings

Концепт распределенной сети.

Зачем еще один протокол?

Я вдохновился идеей маленькой сети. Однако и у Gemini есть свои минусы. Централизованность.

Я бы хотел увидеть по-настоящему распределенный протокол для маленьких сайтов.

Принципы сети

Все хранят всё

Основное отличие Stockings от всех других протоколов - ты буквально скачиваешь все сайты себе.

Это гарантирует, что твой маленький сайтик будет доступен всегда.

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

Таким образом достигается то, что все участники сети хранят (почти) весь контент сети.

Markdown вместо HTML

Браузеры рендерят не html, а немного модифицированный markdown.

Из изменений, синтаксис `![](link)` отображает не только картинки, но и видео с аудио.

Offline-first

Браузеры Stockings в принципе не умеют обращаться к сети. Их задача - отображать уже скачанные сайты.

Websockets

Stockings - это подпротокол вебсокетов. Это облегчает реализацию протокола как мне, так и другим разработчикам.

Концепты сети

Архив

Архив - это буквально tar-архив, с файлами сайта внутри.

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

Архивы подписываются цифровой подписью клиента.

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

Ретранслятор (он же брокер)

Эти корневые сервера занимаются ретрансляцией данных. Сами они ничего не хранят, и архивы хранятся только у пользователей.

Когда на ретранслятор от клиента поступает архив, ретранслятор отправляет его всем остальным участникам сети.

Ретрансляторы могут пересылать архивы друг другу, образуя федерацию.

Daemon (демон)

Это утилита, которая несет основную логику сети.

Демон занимается

Браузер

Графическая утилита для удобного просмотра содержимого локального репозитория.

Должны уметь рендерить Markdown.

Feed

Желательно браузеру давать возможность пользователям подписываться на изменения архивов.

Работает по тому же принципу, что gmisub, но для Markdown.

Part

В архивах могут иметься специальные `.part` файлы. Эти файлы нужны, чтобы общаться пользователям в условиях статических сайтов.

Как это работает на примере:

Допустим в одном архиве есть `chat.part` и в другом архиве есть `chat.part`, при желании пользователя, браузер объединит их в один md-файл.

Формат part-файлов:

% date
Message...

И всё без скриптов и серверов.

Прогресс

Я сделал альфа-версию, которую обкатываем с другом. Но до релиза как до луны.

Назад