💾 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
-=-=-=-=-=-=-
Концепт распределенной сети.
Я вдохновился идеей маленькой сети. Однако и у Gemini есть свои минусы. Централизованность.
Я бы хотел увидеть по-настоящему распределенный протокол для маленьких сайтов.
Основное отличие Stockings от всех других протоколов - ты буквально скачиваешь все сайты себе.
Это гарантирует, что твой маленький сайтик будет доступен всегда.
Кроме того, сеть обязывает отдавать все архивы на отправку другим участникам.
Таким образом достигается то, что все участники сети хранят (почти) весь контент сети.
Браузеры рендерят не html, а немного модифицированный markdown.
Из изменений, синтаксис `![](link)` отображает не только картинки, но и видео с аудио.
Браузеры Stockings в принципе не умеют обращаться к сети. Их задача - отображать уже скачанные сайты.
Stockings - это подпротокол вебсокетов. Это облегчает реализацию протокола как мне, так и другим разработчикам.
Архив - это буквально tar-архив, с файлами сайта внутри.
Архив должен быть запакован так, чтобы при последующих распаковках-запаковках его хеш не менялся.
Архивы подписываются цифровой подписью клиента.
Каждый архив в сети должен иметь уникальное имя. Клиент запоминает имя архива и публичный ключ, и все остальные архивы с таким же именем, но другим ключом будут отклоняться.
Эти корневые сервера занимаются ретрансляцией данных. Сами они ничего не хранят, и архивы хранятся только у пользователей.
Когда на ретранслятор от клиента поступает архив, ретранслятор отправляет его всем остальным участникам сети.
Ретрансляторы могут пересылать архивы друг другу, образуя федерацию.
Это утилита, которая несет основную логику сети.
Демон занимается
Графическая утилита для удобного просмотра содержимого локального репозитория.
Должны уметь рендерить Markdown.
Желательно браузеру давать возможность пользователям подписываться на изменения архивов.
Работает по тому же принципу, что gmisub, но для Markdown.
В архивах могут иметься специальные `.part` файлы. Эти файлы нужны, чтобы общаться пользователям в условиях статических сайтов.
Как это работает на примере:
Допустим в одном архиве есть `chat.part` и в другом архиве есть `chat.part`, при желании пользователя, браузер объединит их в один md-файл.
Формат part-файлов:
% date Message...
И всё без скриптов и серверов.
Я сделал альфа-версию, которую обкатываем с другом. Но до релиза как до луны.