Сегодня искал материалы по децентрализованным социальным сетям и наткнулся на сайт IndieWeb.Org. Оказалось, что под словом IndieWeb подразумеваются те же концепции, которые хотел с 2019 года реализовать я сам: Интернет, построенный по принципу «всё своё держу на личном сайте, но при этом могу взаимодействовать с другими, в том числе и большими соцсетями». Более того, оказалось, что там уже созданы протоколы, а то и готовые сервисы даже для того, о чём я толком и подумать не мог, например, протокол webmention — аналог pingback из WordPressа. Или импорт не только своего контента в большие соцсети, но и обратный импорт лайков и комментариев. А ещё обнаружилось, что есть и готовая CMS, где многое из этого реализовано. Называется она Known.
В общем, теперь пребывают в полнейшей растерянности. С одной стороны, хорошо, что не я один мыслю в этом направлении, и уже немало сделано. С другой — растерянность от того, как быть дальше. Получается, нет смысла реализоваывать всё это в Intellect Board, как я задумывал изначально. Тем более, что множество новых протоколов увеличивает время реализации в разы.

- Перово, Москва, Россия
- me@4xpro.ru
- x4_pro
- XXXXPro
Новости сайта в Telegram
t.me/4x_proЛог жизни
Лог моей жизни, где я фиксирую наиболее эмоционально значимые для меня события и текущее настроение. Является продолжением блога, который я вел в ЖЖ с ноября 2004 по апрель 2018 года.
Узнал об IndieWeb

Отправил первый комментарий в Mastodon из своего скрипта

Сегодня проснулся бодрый и мотивированный. За окном был по-настоящему зимний день с очень приятным снежком. Но при этом не серый, как обычно, а довольно светлый. В какой-то момент я даже захотел выбраться на прогулку, но желание доразобраться с протоколом ActivityPub перевесило! И не зря! Всё же я разобрался, почему вчера не работала цифровая подпись для сообщений. Всё оказалось достаточно просто: я отправлял сообщение в /users/4xpro/inbox/, а при формировании HTTP-подписи в (request-target) указывал просто /inbox. Естественно, Mastodon такое не признавал действительным.
Когда разобрался, отправился первый комментарий от имени моего Wordpress-пользователя. Но почему-то от пользователя с socionics.me ничего не получалось, хотя ошибок не было. Опять долго ломал мозг, а оказалась очередная невнимательность: забыл указать расширение .json в URL в поле actor уже внутри самого сообщения. В общем, теперь могу уверенно сказать: IntB будет движком децентрализованной соцсети!
В общем, испытываю эмоциональный подъём. Правда, как всегда понимаю, что это за счёт биоритмического максимума, а когда он закончится, опять снесёт потоком жизни неизвестно насколько.
Ещё решил сверстать прототип главной страницы для децентрализованной сети-мультиблога, взяв за основу цветовую схему Mastodon и разместить его на CodePen.io. Может, там попадётся кому-то на глаза, кто тоже заинтересован в подобных идеях.
А ещё на lor.sh, несмотря на малочисленность этого сообщества, есть какая-то реакция на мои сообщения. Да и ленту почитать бывает интересно. Почти как в старом добром Интернете! Только политоты многовато…
Децентрализованные соцсети и Wordpress

Ситуация с идеям, о которой писал в прошлом сообщении, продолжается. Видимо, минимум по интеллектуальному биоритму наложился на максимум по интуитивному.
В частности, ночью пришла ещё идея: написать plugin для взаимодействия с Mastodon и прочими сетями на протоколе ActivityPub для Wordpress. Для начала хотя бы такой, который позволяет просто подписываться и транслировать записи блога в Mastodon.
Но получилось как всегда: сразу не приступил, а лёг спать дальше. Утром же, когда встал, идея казалась не столь привлекательной. Плюс куча всего отвлекала от основного замысла. В итоге только к вечеру поставил на поддомен WordPress и настроил https на хостинге, где стоят мои старые сайты. Причём провозился по очень глупой причине: настраивая поддомен, сразу включал в настройках https, а уже потом пытался получить сертификат от Let's encrypt.
Когда всё сделал, на всякий случай решил поискать, а нет ли готового plug-in. Как выяснилось, есть! Эх, и тут меня опередили!
Поставил. Вроде работает, но кнопки «Подписаться через Mastodon» или чего-то подобного не появилось. И тут я чуть не сломал мозг, как сделать это в самом Mastodon. Полез в раздел «Подписки и подписчики», но там были только действующие подписки, без кнопки «Добавить новую». Облазил весь интерфейс, долго ругался, и только после этого обратил внимание на подсказку в строке поиска, что туда можно вводить не только ключевые слова, но и URL. Ввёл адрес поддомена и всё получилось! Сейчас вижу в ленте сообщения из блога WordPress. Нужно ещё попробовать подписки на отдельные категории.
Ещё узнал, что для Wordpress есть plug-inы, добавляющие функциональность соцсетей. Если их доработать на поддержку получения данных из Mastodon, то получится примерно то, как я представляю себе децентрализованную сеть из личных сайтов! К тому же узнал, что в Wordpress с версии 3.x можно создавать свои типы сообщений, а не только обычные записи в блоге.
Всё это поставило меня перед непростым выбором. С одной стороны, я всегда хотел делать децентрализованную соцсеть на своём собственном движке. С другой — если взять Wordpress за базу, то это может значительно поспособствовать популяризации децентрализованных соцсетей среди блоггеров. А именно с их среды, на мой взгляд, и может начаться уход от традиционных соцсетей.
Продолжаю эксперименты с ActivityPub

Продолжаю разбираться с протоколом ActivityPub. Перечитал пример в блоге Mastodon и наконец-то разобрался с тем, как сообщение-объект вкладывается в сообщение-действие. У меня-то REST API головного мозга, и я привык, что действие определяется либо HTTP-методом, либо URLом, а в ActivityPub это не так. В результате получается несколько многословно, но зато в стиле 1Л.
Начал писать простейший клиент на PHP для взаимодействия сервер-сервер, который с моего виртуального пользователя на этом сайте пытается отправить сообщение на мой настоящий аккаунт на lor.sh. Но увы, пока что-то делаю не так: получаю ошибку "Public key not found for key http://4xpro.ru/activity_pub/me#main-key", хотя по логам видно, что lor файл скачивает. Видимо, по каким-то причинам не может извлечь из него ключы. Главная сложность в том, что посмотреть, что происходит на сервере, я не могу, разве что поставлю на второй VDS свою копию mastodonа, но это решение на крайний случай.
Еще в процессе тестирования опять столкнулся с тем, что gmdate('r') возвращает дату почти в нужном формате, только часовой пояс выводит как +0000 вместо GMT, из-за чего на приемной стороне не могут ее нормально разобрать. Эх, ну почему нельзя было сделать именно для gmdate нормальную выдачу с GMT? Уже какой раз сталкиваюсь. Приходится идти кривым путем: заменять +0000 на GTM через str_replace, чтобы не возиться с форматом.