Mastodon - новая платформа для создания децентрализованных социальных сетей
Представлен новый выпуск свободной платформы для развертывания децентрализованных социальных сетей - Mastodon 1.2. В отличие от централизованных социальных сетей, создаваемые при помощи Mastodon сервисы не подконтрольны отдельным поставщикам и могут создаваться на собственных мощностях пользователей. Если пользователь не имеет возможности запустить собственный узел, то он может выбрать заслуживающий доверия публичный сервис для подключения. Mastodon относится к категории объединенных (federated) сетей, для образования единой структуры связей в которых применяется набор протоколов OStatus, совместимый с решениями на базе платформы GNU Social.
Код серверной части проекта написан на языке Ruby с использованием Ruby on Rails, а клиентский интерфейс написан на JavaScript с применением библиотек React.js и Redux. Исходные тексты распространяются под лицензией AGPLv3. Также имеется статический фронтэнд для публикации общедоступных ресурсов, таких как профили и статусы. Хранение данных организовано при помощи PostgreSQL и Redis. Предоставляется открытый API для разработки дополнений и подключения внешних приложений (имеются клиенты для Android, iOS и Windows, можно создавать ботов).
Mastodon позиционируется как альтернативная реализация GNU Social. Платформа базируется на использовании формата ActivityStreams (лента публикаций), а также протоколов Webfinger (определение информации о пользователе через идентификатор похожий на email), PubsubHubbub (подписка на ленту публикаций) и Salmon (децентрализованный обмен сообщениями). Сообщения обрабатываются в хронологическом порядке. Размер публикации ограничен 500 символами, возможна передача коротких видео. Возможно определение настроек приватности в привязке к отдельным публикациям.
Основные возможности:
- Полная переносимость с GNU Social и другими платформами на базе протоколов OStatus;
- Обновление списка событий в реальном времени - информация обновляется сразу после поступления новых сообщений в лентах, на которые оформлена подписка. Доставка информации о новых событиях осуществляется через WebSockets;
- Автоматическое объединение нитей обсуждений - если пользователь, на сообщения которого оформлена подписка, ответит какому-то пользователю, неизвестному на текущем сервере, то сервер загрузит полную нить обсуждения;
- Поддержка прикрепления изображений и видео в формате WebM;
- Возможность работы в качестве провайдера OAuth2 для сторонних приложений;
- Все ресурсоемкие и длительно выполняемые задачи запускаются в фоне и не влияют на отзывчивость интерфейса;
- Возможность быстрого развертывания сервера при помощи готового образа Docker.