Bluesky выпустила ATProto Spaces: непубличные данные в открытом протоколе

Команда Bluesky выпустила альфа-версию ATProto Spaces (пространств), по её собственным словам, крупнейшее обновление протокола ATProto с момента его запуска. Идея прошла через несколько рабочих названий: сначала «приватные данные», затем «данные с разрешениями», короткое время, «бакеты» (buckets), и в итоге закрепилось название «пространства» (spaces). Разработка шла с февраля, с первого дневника разработки, через обсуждения на форуме и итоговое предложение (proposal), в которое внесла вклад вся экосистема ATProto, а не только сама команда Bluesky.
Проблема, которую решают пространства: сегодня все данные в ATProto по дизайну публичны, каждый пост, подписка, лайк и блокировка хранятся в распределённой сети серверов, которую любой может поднять у себя, а собирает и ретранслирует общий поток трансляции (firehose), доступный любому желающему. На этом принципе построены Bluesky и Tangled, но он не подходит для функций, которым нужны непубличные данные: настроек, приватных закладок, форумов (от десятков до миллионов участников) и платных подписочных публикаций.
Пространство, новый примитив протокола, своего рода мини-сеть ATProto внутри самого ATProto, доступ к которой ограничен определённым кругом людей и приложений. Пространство может содержать всего одну запись с минимальными накладными расходами или масштабироваться до миллиарда записей. Доступ контролирует «авторитет пространства» (space authority), такой же DID (децентрализованный идентификатор), как у обычного аккаунта, и иногда это тот же самый аккаунт, который решает, каким DID разрешён доступ. Записи хранятся в отдельных репозиториях с разрешениями на персональном сервере данных (PDS) автора.
Важная оговорка команды: пространства дают контроль доступа, а не конфиденциальность. Данные внутри пространства не зашифрованы и читаемы любым, у кого есть к нему доступ. Сценарии использования, от одиночных пространств для настроек, черновиков и закладок до платных публикаций и больших сообществ: крупнейшие пространства могут вырасти до миллионов участников. Протокол синхронизации для пространств заметно легче публичного: без общего ретранслятора (relay) приложения синхронизируют данные пространства напрямую с хостами PDS.
Что уже доступно в альфе: рабочий код, опубликованный альфа-SDK (пакеты @atproto для TypeScript с тегом alpha), пример приложения bulletin.my с открытым кодом на GitHub, доска, на которую стикеры-заметки могут оставлять взаимные подписчики автора, а видеть доску могут только его подписчики, и готовый хостинг PDS для тестов (приглашение выдаётся в аккаунте BPS). Для самостоятельного запуска команда поддерживает Docker-образ ghcr.io/bluesky-social/atproto:pds-spaces-alpha, совместимый с эталонным дистрибутивом PDS и не требующий новой конфигурации. В экосистеме уже появились независимые реализации черновика спецификации: ZDS (PDS на языке Zig), atproto-crates PDS (на Rust), rsky PDS (на Rust, разработка Blacksky) и HappyView (фреймворк для AppView).
Оговорки: это альфа-версия, возможны ломающие изменения (breaking changes), и запускать на ней продакшен-код нельзя. Команда не делает резервных копий и допускает разрушительные миграции данных без возможности восстановления; код не проходил полноценный аудит безопасности, поэтому загружать чувствительные данные нельзя. Тестовый PDS целиком удалят по завершении альфы. Хостинг и SDK планируют обновлять еженедельно по четвергам, а цель (не обещание), запустить пространства в полноценном виде до конца года.
Ключевые факты
- Bluesky выпустила альфа ATProto Spaces, крупнейшее обновление протокола ATProto с момента запуска, добавляющее непубличные данные.
- Пространство может содержать от одной записи до миллиарда записей, а крупнейшие пространства-сообщества могут вырасти до миллионов участников.
- Spaces дают контроль доступа, но не шифрование: данные в пространстве не зашифрованы и читаемы любым, у кого есть доступ.
- В комплекте, альфа-SDK на TypeScript, пример приложения bulletin.my с открытым кодом, готовый хостинг PDS для тестов и Docker-образ для самостоятельного запуска.
- Это альфа: возможны ломающие изменения, резервных копий нет, а тестовый PDS целиком удалят по завершении альфы, команда прямо просит не использовать её в продакшене.
Почему это важно
Это крупнейшее изменение архитектуры ATProto с момента запуска протокола: до сих пор все данные в сети были по дизайну публичными, что ограничивало класс приложений, которые можно на нём строить. Пространства снимают это ограничение, не ломая ключевые свойства ATProto, переносимую идентичность, совместимые данные и участие без разрешений владельца сети.
Кому это важно
В первую очередь, разработчикам, которые уже строят приложения на ATProto и в экосистеме Bluesky: теперь они могут добавлять настройки, приватные закладки, платные подписочные публикации и закрытые сообщества, не выходя за пределы протокола. Также это касается операторов PDS и авторов альтернативных реализаций протокола, таких как ZDS, atproto-crates PDS, rsky PDS и HappyView, которые уже начали внедрять черновик спецификации.
Как это применить
Начать можно без своей инфраструктуры: получить приглашение на хостинг PDS через аккаунт BPS, поставить альфа-теги TypeScript-пакетов @atproto и посмотреть исходный код примера bulletin.my на GitHub. Для самостоятельного хостинга есть Docker-образ ghcr.io/bluesky-social/atproto:pds-spaces-alpha, совместимый с эталонным дистрибутивом PDS без дополнительной настройки. Обновления хостинга и SDK команда планирует выкладывать по четвергам.
Можно ли доверять
Материал, официальный анонс от самой команды Bluesky/ATProto в её блоге, с прямыми ссылками на код, SDK, репозитории и работающий пример приложения, так что фактура проверяема напрямую. При этом сроки полноценного запуска сформулированы как цель, а не обязательство («планируем запустить до конца года»), и источник не называет ни одного конкретного человека, весь текст написан от коллективного «мы».
Риски и подводные камни
Пространства решают вопрос доступа, а не защиты данных: содержимое не зашифровано и видно любому, кому открыт доступ. Тестовый PDS не бэкапится, возможны разрушительные миграции без возможности восстановления, код ещё не прошёл полноценный аудит безопасности, а весь тестовый сервер будет удалён по завершении альфы, то есть любые данные и учётные записи на нём нужно считать временными и не показывать обычным пользователям.
«Пространства дают контроль доступа, а не конфиденциальность. Данные внутри пространства доступны для чтения любому пользователю или приложению, у которого есть доступ к этому пространству, они не зашифрованы.»
— команда Bluesky/ATProto, официальный блог atproto.com