Изначально эта статья была опубликована на Symfony Station.
Из-за недавнего скандала с Reddit и его недальновидным CEO опенсорсные альтернативы сейчас переживают настоящий бум. И kbin — это как раз такая Fediverse-платформа, созданная с применением Symfony, API Platform и Schema Generator 3 Эрнестом Вишневски (Ernest Wiśniewski). Это именно то, на что вам нужно обратить свое внимание в первую очередь, если вы больше не хотите поддерживать самодуров, управляющих Reddit.
Стоит отметить, что еще одна популярная Fediverse-альтернатива, Lemmy, также имеет проблемы с руководством. Конечно, случаи, когда продуктом управляет не кучка идиотов, на платформе все-таки встречаются. Так что если вы решите, что kbin не совсем, то что вы искали, то мы рекомендуем попробовать beehaw.org.
Как упоминалось в моей статье “You say you want a revolution: help the free, fair, and friendly Fediverse destroy Big Social;” kbin — это сервис, очень похожий на Reddit. Это агрегатор контента с открытым исходным кодом плюс микроблогинговая платформа (как Mastodon). Но что самое замечательное — он создан на основе превосходных экосистемных партнеров Symfony!
Вы можете создавать и модерировать сообщества (журналы/Magazines), находить людей со схожими интересами и увлечениям. Лично мы создали (список действий смотрите ниже) сообщество, которое охватывает Symfony, Drupal и PHP.
Сам kbin характеризует себя так:
Kbin — это модульный децентрализованный агрегатор контента и микроблогинговая платформа, работающий в сети Fediverse. Он может взаимодействовать со многими другими сервисами ActivityPub, такими как Mastodon, Lemmy, Pleroma и Peertube. Эта инициатива направлена на продвижение свободного и открытого интернета.
Мы находимся на стадии очень ранней бета-версии, и многие функции в настоящее время находятся в активной разработке. Как и сама федерация.
Мобильные приложения создаются с помощью фреймворка Flutter и языка Dart. Это хорошая новость, поскольку это позволяет создавать одновременно Apple, Android и PWA. Они увидят свет ближе к концу этого года.
Опять же, из-за фиаско Reddit API и последующего бойкота модераторов и пользователей, kbin.social (первичный инстанс) вырос с нескольких тысяч пользователей до 123 000 с лишним в этот понедельник. По состоянию на вторник их число превысило отметку в 127 000 пользователей. Вы можете сами посмотреть текущую статистику здесь.
Хочу также упомянуть хороший инстанс, созданный экспертом по информационной безопасности, Fedia.io. Их теперь больше 21 000. Kilioa — это еще один инстанс на более чем 8 000 пользователей. И readit.buzz — еще один хороший инстанс, созданный администратором с хорошей репутацией на Mastodon (около 2000 пользователей).
Но чтобы как следует раскрутиться нам нужно куда больше инстансов (смотрите ниже).
Несмотря на некоторое замедление работы сайта kbin.social из-за невероятной нагрузки на серверы, вызванной самым настоящим цунами трафика, код все-таки справился с понедельником, когда происходила миграция с Reddit. И это неудивительно, если учитывая то, на основе чего был построен kbin. Кроме того, некоторые злонамеренные реддиторы решили помешать его работе с помощью DDOS-атак, поэтому возникла необходимость в услугах Cloudflare.
Но прежде чем мы продолжим рассказ о том, почему так сложилось, что kbin — это история большого успеха, прошу вас подумать о ряде следующих действий:
1 — присоединиться к kbin.social или другому связанному инстансу.
2 — поддержать Эрнеста и проект финансово.
3 — подписаться на наш журнал, посвященный Symfony.
4 — подписаться на Эрнеста.
И наконец, подписаться на меня. ;)
Создан на основе экосистемы Symfony
Symfony
Как уже упоминалось выше, kbin надежен как сталь благодаря тому, что он создан с использованием экосистемы Symfony.
Вот требования его инстанса, которые касаются экосистемы Symfony:
Версия PHP: 8.1 или выше
PHP-расширение GD или Imagemagick
NGINX/Apache/Caddy
PostgreSQL
Redis (опционально)
Mercure (опционально)
RabbitMQ (опционально)
Чтобы ваш инстанс был на пике надежности и быстродействия, вам все-таки стоит задействовать все опциональные службы.
И вы также имеете возможность просмотреть код на Codeberg.
API Platform
Пакет API Platform позволяет kbin быть частью Fediverse.
Поскольку сам я не являюсь экспертом в этой области, я процитирую сайт API Platform:
API Platform ActivityPub — это пакет для фреймворка API Platform и Symfony, поддерживающий протокол ActivityPub и словарь ActivityStreams.
Протокол ActivityPub — это протокол для создания децентрализованной социальной сети. Он предоставляет клиент-сервер API для создания, обновления и удаления контента, и федеративное сервер-сервер API для доставки уведомлений и контента.
API Platform ActivityPub позволяет легко добавлять поддержку ActivityPub в новые или уже существующие проекты на API Platform, сохраняя при этом преимущества всех фич API Platform (да, речь идет о Mercure, Vulcain и GraphQL!).
Более подробную информацию вы можете найти здесь.
Насколько я помню, Эрнест создал специальную версию для инстанса kbin.social. Но это все так быстро развивается, что я могу ошибаться.
Schema Generator 3
Этот инструмент представляет собой основной костяк, необходимый для организации платформы kbin.
Я не большой эксперт по генерации схем, поэтому я процитирую его идейного вдохновителя, Кевина Дугласа (Kevin Douglas):
“API Platform Schema Generator третьей версии — это инструмент командной строки, часть фреймворка API Platform, который мгновенно создает полную модель данных PHP (классы, перечисления, ORM, правила проверки данных, определения веб-API, PHPDoc…) из словарей RDF и онтологии. Словари RDF обычно используются для определения отношений и представлений о ресурсах в облачных (Schema.org), отраслевых (The NASA Air Traffic Management Ontology, The Automotive Ontology, AddictO Vocab), или организационных (EU Vocabularies, Volkswagen Vehicles Ontology) масштабах.
Среди множества различных словарей RDF на роль основы для этой децентрализованной сети особенно подходит ActivityStreams. Это словарь ActivityPub, поддерживаемый W3C протокол, используемый для создания децентрализованных и федеративных социальных сетей. ActivityPub уже реализован таким популярным программным обеспечением для социальных сетей, как Mastodon, PeerTube, Mobilizon, и WriteFreely. Серверы, реализующие протокол ActivityPub, совместимы и объединены в то, что мы называем Fediverse (Фидеверс)».
Если вы что-то не поняли или хотите узнать больше, то более подробную информацию вы можете найти здесь.
kbin — треды и микроблогинг
Позвольте мне начать с того, что дизайн и пользовательский интерфейс kbin просто фантастические. Особенно для прототипа. Да и само приложение отличное.
Вы взаимодействуете с kbin как человек (пользователь) и можете отслеживать (follow) людей (других пользователей из kbin и других федеративных платформ, таких как Mastodon) или журналы (аналогичные сабреддитам). Вы также можете следить за группами на Lemmy и других платформах Fediverse.
И другие участники федеверс (Fedizen) также могут отслеживать вашу учетную записью на kbin.
Журналы (Magazines)
Чтобы не утонуть в бурном потоке ленты kbin вам следует подписываться на отдельных пользователей и журналы. Точно так же вы отслеживаете собственную ленту в Mastodon, а не сразу всю федерацию.
Вы можете сортировать треды (ветки/темы) журнала по самым популярным, горячим, самым новым, активным или наиболее комментируемым. И вы можете смотреть микроблоги, связанные с хэштегами, установленными модератором.
Треды (Threads)
Вы можете публиковать в журналах ссылки для создания отдельных тредов. Вы взаимодействуете с тредами (на изображении выше), как в Reddit, и вы можете вести микроблог (на изображении ниже), как в Twitter, и все это без надуманной чепухи этих двух коммерческих платформ и их косячного руководства.
Итак, вы можете лайкать (up) и дизлайкать (downvote), бустить (boost), реплаить (reply) и т.д. и т.п.
Микроблоги (Microblogs)
Я точно не знаю, каков лимит символов для микроблогов, но под микро подразумевается что-то вроде 500, как в том же Mastodon.
Как видно на изображении выше, вы можете добавлять ссылки, стилизовать текст (в отличие от Mastodon), а также изображения и хэштеги.
Пользователи различных Fediverse-платформ могут подписываться на вас как на пользователя kbin и наоборот. Это очень удобно, когда вы хотите ограничится всего одной учетной записью в рамках Fediverse. kbin позволяет вам сделать все это.
Руководство пользователя
Теперь давайте сделаем небольшой экскурс по функционалу kbin. К счастью, их документация так же хороша, как и код их приложения.
Начинать свое знакомства советую с изучения всего, что вы хотите знать, в руководстве пользователя.
Что особенно важно, вы можете почитать о регистрации учетной записи, кастомизации и настройках, которые позволят вам создать желаемый опыт работы с kbin.
В отличие от коммерческих социальных сетей, здесь вам ничего не навязывают.
Вы можете узнать о всех возможностях kbin на их сайте.
Моих любимых можно выделить:
RSS-каналы
Статистику
Несколько типов тредов и элементов управления
Сообщения и комментарии
Инструменты модератора
Разработчики, kbin нуждается в вас!
Что касается критической части, нам нужны специалисты для работы над Symfony, Drupal и PHP инстансами. К сожалению, мне как контент- и фронтенд-персоне это не под силу. Но я готов донатить на это деньги.
Если вы способны разработать Symfony или Drupal приложение, то эта задача вам по силам.
Вот как вы можете создать инстанс.
Если вы все-таки сделаете это, обязательно сообщите нам об этом, чтобы мы могли распространить информацию. И будьте готовы стать администратором со стажем. Вас ждут денежные расходы, так что учитывайте и это. Большинство инстансов не стесняются просить о пожертвованиях, и вам тоже следует. Пользователи будут делать пожертвования инстансам, которые они используют, и самому kbin.
Что особенно обнадеживает, уже есть множество пулл-реквестов. Это значит, что есть люди достаточно заинтересованные этим проектом, что они хотят посмотреть его код.
Заключение
Если вы дочитали до этого момента, то уже поняли, что kbin — это захватывающая новая часть Fediverse. И у него большое будущее впереди, особенно если вы примете в нем участие.
Он надежный, как кирпичный дом, благодаря фантастическим инструментам экосистемы Symfony.
И если вы знакомы с Reddit или другими платформами Fediverse, он подойдет вам как родной.
Итак, если вы еще не сделали этого, выполните пять действий, перечисленных выше, и пошлите Reddit на три буквы. Пришло время отчалить в светлое будущее вместе с kbin!
Полезные ресурсы
kbin-core — Kbin — это децентрализованный агрегатор контента и платформа микроблогинга, работающая в сети Fediverse.
Коммюнике по нашей библиотеке (здесь найдете огромное количество кураторского вечнозеленого контента).
В преддверии старта курса "Symfony Framework" приглашаем на открытый урок, посвященный RabbitMQ. На этой встрече мы реализуем асинхронный поточный процесс обработки и RPC с помощью RabbitMQ. Записаться можно по ссылке.