Привет, Хабр. На днях в комментариях к одному хабропосту я увидела фразу: "Думаю, будущее всё-таки за федерацией". Это, наконец, сподвигло меня на написание статьи, зреющей в течение года. Хотелось бы, чтобы все, кому интересны децентрализованные социальные сети, вынесли из неё что-то новое.  Не буду рассказывать о преимуществах федеративных (децентрализованных) сетей, об этом можно почитать здесь или здесь. А о недостатках писал, например, Мокси Марлинспайк в блоге Signal. Раз вы читаете эту статью, надеюсь, вы согласны, что достоинств у таких систем больше. Речь пойдёт про Fediverse и про то, чем примечателен этот уголок интернета. Как сообщает Википедия, термин "fediverse" образовался из слов "федеративная" ("federated", "federation") и "вселенная" ("universe"), пытливый взгляд заметит здесь и корень слова "разнообразие" ("divers-ity"). На данный момент Fediverse состоит из 12 федеративных сетей и может похвастаться разнообразием языков программирования:  Почему же в Википедии указана лишь половина сетей?
Дело в том, что разные сети общаются по разным протоколам. Изображение ниже иллюстрирует, какие сети реализовали тот или иной протокол (+) или планируют реализовать в будущем (~).  Как видно, далеко не все сети общаются между собой. Некоторые — например, Libertree и pump.io (в каком-то смысле — потому что bridge2Ostatus всё-таки существует, но я ещё ни разу не видела, чтобы посты с платформы pump.io сфедерировались в мою ленту) совершенно отрезаны от остального мира Fediverse. Статья в Википедии отражает ту часть федеративных сетей, которые поддерживают oStatus.  oStatus — это группа протоколов, на базе которых в далёком 2010 году зарождалась микроблоггинговая платформа GNU Social. ActivityPub — протокол, предложенный группой W3C в качестве нового стандарта. Помимо этого есть протокол diaspora, изначально развивавшийся как часть сети diaspora, с тех пор вынесенный в отдельный независимый модуль. В данный момент по этому протоколу общаются 5 федеративных сетей (diaspora, Friendica, Hubzilla, Socialhome, GangGo), именуемые "the Federation".   Также существует Zot протокол, часть проекта Hubzilla. Собственно, пока только Hubzilla его и реализовала. Этот протокол, пожалуй, наиболее продвинутый и интересен большим количеством функциональных возможностей, которых нет ни в одной другой сети. К чести Hubzilla надо отметить, что по причине малой популярности собственного протокола, эта федеративная сеть единственная реализовала все остальные протоколы и, таким образом, может общаться со всеми. Для тех, кто немного запутался в терминологии Fediverse <-> Federation, рекомендую обзорную статью Шона Тилли, отражающую взаиомдействие большинства федеративных сетей в настоящий момент. Я называю термином Fediverse все федеративные сети — есть некоторая вероятность, что однажды все они будут взаимодействовать друг с другом. Сколько же вообще пользователей в федеративной вселенной? Ответ неоднозначный: трудно сказать точно. Поскольку все проекты с открытым исходным кодом, любой человек может развернуть их на своём сервере и при этом не обязан отсылать статистику. Тем не менее, какую-то статистику собирать пытаются, хотя бы для собственного удовлетворения. Примерный охват так называемой Федерации (составляющей часть Fediverse) можно посмотреть здесь. Посчитать пользователей микроблоггинговых сетей можно здесь. У сети Mastodon своя отдельная статистика, около месяца назад проект отметил миллионную регистрацию. Кто-то на этом месте подумает, что общее количество регистраций ни о чём не говорит. Уверяю вас, проект продолжает активно развиваться и два миллиона регистраций, мы надеемся, не за горами. Теперь кратко про каждую федеративну сеть. Моменты, вынесенные в "достоинства" — моё субъективное мнение. Информация: diaspora существует с 2010 года и за это время ей удалось привлечь и удерживать стабильное количество постоянных пользователей. Достоинства: регистрация по email (подтверждение не обязательно), автоудаление EXIF данных загружаемых изображений, проксирование ссылок извне с помощью Camo, приватные посты отдельной группе друзей (видимость поста "фиксируется" в тот момент, когда он отправлен и изменяться не может), доступность части подов через сеть Tor.
Подробнее о диаспоре рассказал один из разработчиков на конференции FOSDEM в прошлом году, рекомендую. Информация: появившаяся в начале 2016 года микроблоггинг платформа быстро привлекла внимание первопроходцев. Mastodon пережил настоящий бум в Японии, в связи с тем, что определённый популярный там контент (лоликоны) банится в Twitter. В результате появились мобильные приложения от японских разработчиков, и было запущено большое количество серверов.  Достоинства: Сообщество Mastodon — активное и дружелюбное, что способствует росту новых контрибьютеров. Это единственная федеративная сеть, которая стабильно спонсируется самими пользователями (через пожертвования на Liberapay, Patreon), что позволяет главному разработчику Евгению Рошко работать над проектом 24/7. Это наиболее быстро растущая по количеству пользователей федеративная платформа. С точки зрения интерфейса она привычна среднестатистическому пользователю (да, там есть emoji!). Постоянно появляется новый функционал. Информация: изначально проект создавался Майком Макгирвином, впоследствии ушедшим в проект Hubzilla. В настоящий момент Friendica разрабатывается небольшой группой энтузиастов.  Достоинства: интерфейс стандартный, разобраться не сложно. Считается, что Friendica проста в установке. Существует миграция профиля с одного сервера на другой. Есть возможность создавать несколько профилей для одного аккаунта. Присутствует основной функционал социальной сети: фотоальбомы, лайки комментариев, редактирование постов. Информация: проект развивается под руководством Майка Макгирвина и представляет собой нечто большее, чем социальная сеть. Недавно Майк дал большое интервью, в котором подробно рассказал всю историю и видение проекта. Моё личное мнение: это проект для продвинутых пользователей, готовых разобраться в комплексной архитектуре сети.  Достоинства: Уникальный функционал. Например, возможность создания на одном аккаунте разных профилей для разных целей. Продвинутая миграция аккаунта ("nomadic identity"). Продвинутые, детальные настройки профиля ("channel"). Форумы для общения по интересам. Возможность использования как хранилище файлов, с настройками приватности. Шифрование комментариев из коробки. Общение со всеми остальными федеративными сетями. Информация: изначально проект развивался Мэттом Ли как ряд плагинов для сети StatusNet, впоследствии проекты были объединены под именем GNU Social. В 2013 году Ханс Маннерхейм реализовал плагин Quitter, расширяющий функционал GNU Social. Достоинства: Наличие плагинов, большое количество мобильных клиентов (разной степени удобства). Наличие "групп", позволяющих доставлять контент ряду пользователей. Информация: Pleroma создавалась как альтернативный фронтенд GNU Social, в результате переросла в самостоятельный проект, с серверной частью на языке Elixir.  Достоинства: У Pleroma есть свой фронтенд, но проект несложно запустить с фронтендом Mastodon — это сочетание нравится многим пользователям. Благодаря своей компактности, Pleroma хорошо работает на одноплатниках (Beaglebone, Raspberry Pi). Фронтенд использует фреймворк Vue.js. Информация: это форк GNU Social, основная цель которого — переработать бэкенд и улучшить фронтенд. Достоинства: Несмотря на небольшую команду разработчиков, проект стремится стать мультипротокольной сетью, чтобы взаимодействовать со всей федеративной вселенной. В данный момент есть два небольших баунти на реализацию протоколов diaspora и Zot. Кто-нибудь желает помочь?  Информация: данный проект разрабатывается одним из контрибьютеров diaspora* и находится в pre-Alpha версии. Достоинства: язык Go популярен. И, хотя пока не ясно, в каком направлении проект будет развиваться, есть шансы, что вокруг него сформируется стабильная команда разработчиков. Информация: Socialhome разрабатывается одним из контрибьютеров diaspora*, довольно новый проект, зародившийся в 2016 году. Достоинства: Python и конкретно фреймворк Django достаточно популярны, у проекта есть все шансы обрести стабильную команду разработчиков. Главный разработчик, Джейсон Робинсон, приветствует любой вклад и открыт новым предложениям. Фронтенд в будущем будет на Vue.js. Информация: данный проект только появился на горизонте и находится в pre-Alpha версии. Достоинства: язык Rust интересен сам по себе, и проект постепенно набирает звёзды на GitHub. Команда разработчиков пока только формируется, можно внести посильный вклад. Информация: Проект Libertree появился довольно давно и развивается в основном силами одного человека. В настоящий момент эта сеть не общается с другими федеративными сетями. Разработчик говорит: если кто-то реализует другие протоколы для данной сети и пришлёт pull request, возможно, положение дел изменится.  Достоинства: Это маленькое, уютное сообщество, где принято общаться друг с другом в вежливой манере и критиковать аргументированно. Сеть обладает рядом уникальных особенностей: например, функционал расшаривания постов не предусмотрен в принципе. Пользователи считают, что обсуждение должно происходить под постом автора. По этой же причине републикация ранее опубликованной ссылки преостанавливается предупреждением с просьбой написать свой уникальный комментарий к ссылке или же перейти в ранее опубликованный пост и обсудить ссылку там. Пользователи щепетильно относятся к приватности своих постов и не очень хотят, чтобы они были видны внешнему миру — сложно сказать, достоинство это или недостаток. Информация: эта сеть, признаюсь, наименее мной изучена. Тем, кто хочет погрузиться в историю, рекомендую эту статью. И что вообще там делать? На данный момент это наиболее сложная задача. Ведь социальные сети предполагают общение. Поскольку в федеративных сетях сравнительно не много пользователей, а русскоговорящих совсем мало, новые пользователи приходят и довольно быстро уходят, разочаровавшись скудным количеством лайков под их постами, и так и не узнав, что вся соль в архитектуре! Действительно, из-за своей федеративной природы, такие социальные сети работают несколько иначе, чем привычные всем централизованные. Новый пользователь не будет видеть на своём сервере все посты со всех других серверов. Его лента будет формироваться постепенно: чем на большее количество людей с других подов человек будет подписываться, тем богаче будет становиться его новостная лента, тем больше постов будет федерироваться к нему на сервер. Разные федеративные сети решают проблему "вымершего города" — малонаселённых серверов, куда попадает мало контента — разными способами. У проекта diaspora есть релей, который позволит маленьким серверам обмениваться постами с другими серверами, где также настроен релей, независимо от того, подписаны пользователи данного сервера на остальные серверы или нет. Релей не является официальной составляющей diaspora, его необходимо настроить отдельно. В Mastodon некоторые администаторы используют ботов, которые подписываются на всех, кого найдут, таким образом увеличивая "обзор" федеративной вселенной для сервера, на котором этот бот запущен.  А населяют федеративную вселенную, в первую очередь, гики и технически подкованные пользователи, сторонники свободного программного обеспечения (FSF, FSFE), разработчики открытого свободного софта и железа (Liberapay, HardenedBSD, Pyra, Vikings, Technoethical), пиратские организации и представители, защитники конфиденциальности личной информации, люди разнообразных политических взглядов и убеждений. С недавних пор, благодаря активной рекламе в Twitter, стало подтягиваться infosec сообщество, пользователи, подвергшиеся цензуре на централизованных платформах, и просто любопытствующие. Университеты по всему миру поднимают свои серверы (MIT, University of La Rochelle, Clarkson University, Umeå University). Даже у представительства бразильского министерства культуры есть свой сервер Mastodon. Всё это люди, которым не безразлична судьба интернета, свободного от жёсткой цензуры и корпоративных аквариумов. Я пользуюсь федеративными сетями в первую очередь ради контента, который не смогла бы получать нигде в другом месте. Это источник информации о том, чем занимается европейское и мировое СПО сообщество, что волнует уважаемые хакерские группы (CCC) и ассоциации (Framasoft), что интересного было на той или иной достойной конференции (FOSDEM). Это сообщество с уникальным набором ценностей, включающее в себя разных людей, зачастую с противоположными взглядами, живущих в самых отдалённых частях планеты, расширяющих мой кругозор ежедневно. Также, из очевидного — никакой рекламы (попытки довольно быстро банятся администраторами серверов), из приятного — некоторая приватность и свобода действий (фото груди не удалят, но вежливо попросят скрыть за тегом NSFW), и завидная отказоустойчивость всей федеративной сети в целом. Хочется также сказать: и всё это бесплатно (никаких "оплатите — и ваш пост покажем всем вашим друзьям, иначе — не покажем"), но не скажу. Серверы федеративных сетей администрируются энтузиастами, нередко на их собственные средства. Поэтому первое правило Fediverse: знай своего админа! И, по возможности, скинь ему несколько долларов на поддержку системы. Было бы здорово увидеть в федеративной вселенной новые лица. Не тех, кто зарегистируется и пропадёт после первого тестового поста, но тех, кто останется и станет частью сообщества. И, возможно, пополнит свою коллекцию зелёных квадратиков на GitHub коммитами в опенсорсные проекты. Или тех, кто поднимет новые серверы и будет их администрировать, умножая Fediverse, делая её ещё более жизнеспособной децентрализованной системой. Если эта статья окажется интересной сообществу Хабра, в следующий раз расскажу про СПО коллектив Framasoft, их увлекательные мероприятия и планы на будущий год. *В данной статье используется термин "сервер" для обозначения узла той или иной сети. В документации некоторые сети называют сервера подами (diaspora), инстансами (Mastodon), деревьями (Libertree), нодами или даже стручками (кто-нибудь, пожалуйста, исправьте русский перевод диаспоры). Пусть многообразие терминологии вас не смущает: сервер — он и в Африке сервер. Выражаю благодарность Senya, одному из контрибьютеров сети diaspora, за некоторые идеи, утащенные из его доклада на Coliberator, и за вычитку данной статьи. social architect