Are we decentralized yet? 🔥 Горячее 💬 Длинная дискуссия
- Fediverse (Mastodon, Pixelfed и др.): серверы разделены на «крупнейший» и «остальные» в процентах.
- Atmosphere (Bluesky, WhiteWind и др.): аналогичное деление.
Данные обновляются регулярно.
Концентрация измеряется индексом Херфиндаля-Хиршмана (HHI):
- 0 ≈ полная децентрализация,
- 10 000 ≈ монополия.
В экономике: <100 — высокая конкуренция, <1500 — неконцентрировано, >2500 — высокая концентрация.
Отслеживаются активные пользователи: для Fediverse — на серверах (инстансах), для Atmosphere — на PDS (личных серверах данных).
Код и данные на GitHub. Предложения и PR приветствуются.
Автор: Rob Ricci (@ricci@discuss.systems, @ricci.io).
Комментарии (223)
- Обсуждение крутилось вокруг того, насколько реально «избежать централизации» в разных сетях: Fediverse, ATProto/Bluesky, Nostr, Git, BitTorrent, SMTP, Bitcoin.
- Участники согласились, что полной децентрализации не существует: всегда появляются «точки притяжения» — GitHub, крупные инстансы Mastodon, Coinbase, трекеры.
- Сравнивали HHI-метрику: Mastodon выглядит менее сконцентрированным, но уступает по числу пользователей; Bluesky проще для массового пользователя, но дороже в инфраструктуре.
- Поднимали риски: спам и DDoS в открытых сетях, исчезновение мелких узлов, дефедерация, отсутствие UX-консистентности.
- Главный вывод: «децентрализация» сама по себе не цель, а баланс между устойчивостью к цензуре, удобством и экономикой узлов.
Make any site multiplayer in a few lines. Serverless WebRTC matchmaking
Trystero — безсерверный WebRTC-матчмейкинг.
Добавь мультиплеер в пару строк.
Прямо сейчас все на этой странице соединяются напрямую и синхронизируют курсоры и клики.
Поддерживаются BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase.
Пример:
import {joinRoom} from 'trystero'
const room = joinRoom({appId: 'trystero-lounge'}, '101')
room.onPeerJoin(addCursor)
room.onPeerLeave(removeCursor)
const [sendMove, getMove] = room.makeAction('mouseMove')
const [sendClick, getClick] = room.makeAction('click')
window.addEventListener('mousemove', e => sendMove([e.clientX, e.clientY]))
window.addEventListener('click', () => sendClick(randomFruit()))
getMove(([x, y], id) => setCursorPosition(id, x, y))
getClick((fruit, id) => dropFruitFrom(id, fruit))
Также доступны аудио/видео-потоки и файлы.
Комментарии (59)
- Демо-страница Trystero вызвала восторг: «круто», «весело», «отличный API», но подчёркнули, что это не «serverless» — просто чужие серверы для SDP-сигналинга.
- Вопросы масштабируемости: p2p-видео комнаты выше 4-8 человек требуют SFU/TURN-серверов, иначе падает кодировка и сеть.
- Safari и Firefox жалуются на лаги, зависания и DOMException при множестве PeerConnection.
- Сравнение с PeerJS: тот использует один центральный сервер, Trystero — гибкий мульти-сигналинг.
- Подняли юридические риски: в UK и штате Mississippi такой «социальный» сайт обязывает собирать ID пользователей.