Перейти к основному содержанию

Каталоги

На Reddit имя вроде r/opensource может принадлежать только одному сообществу, и тот, кто его контролирует, его и сохраняет. Если модераторы принимают решения, которые не нравятся пользователям, единственная альтернатива — создать r/opensource2. Новое сообщество начинает с нуля подписчиков, хотя большинство людей, подписавшихся на r/opensource, интересовались открытым исходным кодом, а не этой конкретной командой модераторов.

Приложения Bitsocial решают эту проблему с помощью каталогов. Каталог — это тематическое имя, например opensource, за которое соревнуются сообщества. Короткий маршрут для этого имени открывает сообщество, которое сейчас занимает первое место, поэтому более удачное сообщество может забрать имя без чьего-либо разрешения.

Как это работает​

  1. Код каталога — это тематическое имя. Seedit использует маршруты вроде /s/funny. 5chan использует пути в стиле имиджбордов, например /g/.
  2. Сообщества соревнуются как кандидаты. У каждого каталога есть список сообществ-кандидатов, и у каждого из них свой точный адрес, например funny-posting.bso.
  3. Маршрут достаётся кандидату с наивысшим рейтингом. При открытии /s/funny показывается текущий победитель.
  4. Проигрыш ничего не удаляет. Сообщество, которое не стало победителем, сохраняет свой адрес, посты и подписчиков, и любой по-прежнему может открыть его напрямую.

Имя — это входная дверь, а не идентичность​

Код каталога — лишь маршрут для обнаружения. Всё долговременное указывает на точное сообщество:

  • Подписка со страницы /s/funny оформляется на точный адрес текущего победителя. Сам код каталога никогда не сохраняется как подписка.
  • Ссылки на посты всегда используют точный адрес сообщества, поэтому старая ссылка не может начать вести на другое сообщество после смены победителя.
  • Когда победитель меняется, Seedit не трогает существующие подписки и спрашивает каждого подписчика, перейти ли к новому победителю, оставить оба сообщества или сохранить текущее. Автоматическое переключение — это настройка для каждого каталога, которую нужно включить вручную, а при автоматическом переключении появляется уведомление с возможностью отмены.

Таким образом, конкурирующее сообщество не отбирает ничьи подписки. Оно выигрывает имя: новые посетители попадают к нему, а существующие подписчики получают выбор в один клик. Те, кому больше нравилось старое сообщество, остаются с ним.

Почему не по принципу «кто первый занял»​

  • Никакого захвата имён впрок. Владеть хорошим именем недостаточно. Сообщество должно оставаться лучшим кандидатом на него.
  • Имена не раздаёт администратор. Распределение администратором воссоздало бы центральное право вето, которое Bitsocial призван устранить.
  • У конкурентов остаётся путь к аудитории. Соперничающее сообщество претендует на то же имя, а не начинает заново под худшим.
  • Клиенты сходятся в выборе победителя. Seedit ранжирует кандидатов детерминированно, поэтому каждый клиент, читающий один и тот же финализированный снимок каталога, показывает одного и того же победителя. Seedit не подставляет другого кандидата из-за того, что победитель временно недоступен через соединение одного пользователя.

Как сейчас выбираются победители​

Кандидаты публикуются в виде JSON-файлов в репозитории bitsocialnet/lists, по одному файлу на каталог, а сообщество присоединяется к каталогу через пул-реквест к его файлу. Это временный стартовый этап. Цель в том, чтобы голосование заменило пул-реквесты как способ определения победителей.

  • Seedit ранжирует кандидатов каталога по баллам, затем по времени добавления, затем по адресу. У каждого файла каталога есть номер ревизии, и любое изменение кандидатов или победителя публикует новую ревизию.
  • 5chan проводит по одному голосованию на каждый каталог с помощью @bitsocial/pubsub-voting. Клиенты обмениваются подписанными бюллетенями через libp2p gossipsub и сами подсчитывают итоги, без сервера, считающего голоса. Для голосования нужно иметь 5chan Pass — непередаваемый токен, и у каждого владельца один голос. Голос за доску, которой ещё нет в списке, выдвигает её в кандидаты. Сейчас голосования проходят в тестовой сети Base Sepolia, и пока они не перейдут из тестовой сети, итоги отображаются, но не меняют порядок списка.

Протокол или приложение?​

Каталоги не входят в PKC — одноранговый уровень, который хранит и передаёт сообщества. Это соглашение, которое клиенты применяют поверх него наряду со списками по умолчанию и поиском; см. Обнаружение контента. Клиент может читать те же файлы каталогов, публиковать собственные или вовсе обходиться без каталогов, а пользователи по-прежнему могут открыть любое сообщество по его адресу.