Привет Хабр. В свободное время я поддерживаю бесплатный сервис Авакари. Основная его функция - фильтрация сообщений из многих тысяч разных источников (RSS, Telegram, Fediverse, ...). В двух словах, вы определяете критерии поиска, Авакари "просеивает" то, что вам интересно и присылает результаты. Интеграция с Fediverse появилась недавно и содержала на своём пути нетехнологические грабли, к которым автор не привык. В этой статье я расскажу о них, возможно, мой опыт будет кому-то полезен.

Взято с ноды https://cathode.church, где в списке ниже упоминается Awakari
Взято с ноды https://cathode.church, где в списке ниже упоминается Awakari

Федиверс

Fediverse - это гипертекстовый векторный Фидонет децентрализованная социальная сеть. Узлы обмениваются данными по общему протоколу ActivityPub, который и объединяет весь этот зоопарк. Узлы могут иметь собственный неповторимый софт, правила и прочее. Каждый может стать участником Fediverse зарегистрировавшись на любом из существующих узлов либо создав собственный. Есть наиболее популярный софт - Mastodon и наиболее популярный узел - https://mastodon.social. Fediverse стал особенно популярным убежищем криптоанархистов с момента покупки Twitter Маском. На момент написания статьи число пользователей превысило 11 млн. и продолжает расти.

Интеграция

После RSS и успешной интеграции с Телеграм выглядело логичным развивать Awakari в направлении интеграции социальных сетей. Facebook, Instagram и им подобные, очевидно, не заинтересованы в том, чтобы предоставлять данные кому-либо. Другое дело Fediverse, где каждый может написать свой сервер, просто реализуя открытый протокол ActivityPub. Таким образом, Awakari стал работать в роли прокси-сервиса, который от лица своих пользователей автоматически находит и подписывается (follow) на аккаунты в Fediverse. Как только аккаунт подтверждает запрос на подписку (follow), он самостоятельно начинает рассылать свои новые активности (посты) своему новому подписчику.

В механизме follow в протоколе ActivityPub на практике есть один нюанс. В наиболее популярных реализациях, таких как Mastodon, есть возможность автоматически одобрять все входящие запросы follow. С одной стороны, это позволяет набрать большое количество подписчиков и быть популярнее пользователю аккаунта. С другой стороны, пользователь может не знать, о том, что таким образом он уже согласился на обработку своих данных (постов) кем угодно и где угодно.

Тревожные сигналы

В какой-то момент люди стали замечать среди своих подписчиков Awakari и начали интересоваться, что это за зверь. Иногда даже переходили на основной сайт, находили контакты и задавали вопросы. Как правило, после разъяснений о том, как это работает они оставались удовлетворены ответами. Иногда представители ЛГБТ-специфичных узлов беспокоились о приватности своих пользователей. Их интересовала потенциальная возможность использования Awakari для преследования конкретных людей. Здесь стоит отметить также, что в Fediverse популярны леворадикальные настроения, зачастую неприемлимо: "отрицание климата" (дословно), "энтерпрайз", Трамп и тому подобное.

Из такой обратной связи мне удалось также узнать, что незадолго до этого был скандал с неким сервисом "Content Nation". Единственным автором Content Nation является некий backend-программист Sascha Nitsch (!). Сам сервис ничего особо криминального не делал, но пришелся неожиданно не по вкусу пользователям Fediverse. После чего некоторые пользователи решили ради веселья накормить Content Nation нелегальным контентом и пожаловаться на этот же сервис. Последствия таких шуток грозили автору 1 годом тюрьмы в Германии.

Awakari выгодно отличается от Content Nation тем, что он не показывает содержимое из сторонних источников на своём домене. То есть накормить его непотребщиной не так просто. Кроме того, Awakari не является "скрэйпером", а вместо этого использует общепринятый и вежливый механизм follow для получения контента. Поэтому до определённого момента казалось, что всё идёт не так плохо.

Не в ту дверь

Позже ко мне в очередной раз пришла обратная связь, что неплохо было бы сделать так, чтобы Awakari явно уведомлял пользователя Fediverse, что он на него подписан. Так как многие сервисы имеют автоматическое одобрение follow-запросов, то это выглядело вполне логичным. Эффект получился обратный - Awakari стал привлекать внимание пользователей, которые не разобравшись что к чему, стали довольно активно жаловаться. В отдельных случаях стали упоминаться GDPR и пожелания посоветоваться с адвокатами "ещё вчера":

Обратная связь от радостных пользователей Fediverse
Обратная связь от радостных пользователей Fediverse

Немного разобравшись в вопросе, могу сказать, что апелляция к GDPR была неуместна, так как при регистрации на узлах Mastodon (и остальных типах сервисов) пользователь автоматически соглашается на то, что узел будет работать как Public Морозов и рассылать активности всем подписчикам, которые, в свою очередь могут делать с этим всё, что захотят.

...Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public...

... We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon...

Строго говоря, иначе Fediverse просто работать не сможет и не будет. Можно убедиться в том, что узлы работают именно так, а не иначе, заглянув, например, на live stream в Mastodon:

Вряд ли mastodon.social спрашивает явное согласие на это у каждого пользователя других узлов
Вряд ли mastodon.social спрашивает явное согласие на это у каждого пользователя других узлов

Однако обычных пользователей это всё не убеждало и некоторый всплеск негативной реакции имел место быть. Интеграция Awakari с Fediverse даже была приостановлена на несколько часов до выработки решения проблемы.

Масла в огонь также добавило то, что кроме ActivityPub-интеграции общего назначения, в Awakari есть также ещё и Mastodon-специфичная интеграция, которая слушает этот самый Live Feed на предмет публичных постов (дополнительный входящий трафик). Это привело к тому, что некоторые пользователи, у которых нет Awakari среди подписчиков, обнаруживали свои посты в результатах в Awakari. Это, опять же, не нарушает ничего, если пост явно помечен как "indexable" и Google их вполне обрабатывает, но что дозволено Юпитеру, не дозволено быку...

Чуть позднее также был небольшой всплеск поддержки, люди с разных узлов также высказывались в защиту Авакари. Особенно интересно мнение одного пользователя из японского misskey узла:

Postmortem

  • Ущерб

    Незначительный. Блокировка на некоторых небольших узлах. Простой в течение нескольких часов интеграции с Fediverse. Снижения входящего трафика из Fediverse не замечено.

  • Риск

    Средний. Вероятность худшего исхода мала, но последствия могут быть значительными. Высокая степень неопределённости.

  • Причина

    Привлечение внимания широких масс без проработанных механизмов отказа от обработки данных в Awakari (opt-out).

  • Меры

    • Не спамить пользователей уведомлениями о follow. Всю необходимую информацию расположить в описании сервиса, доступном пользователям Fediverse для прочтения.

    • Сделать Awakari более социально-дружелюбным, выглядящим больше как соцсеть, нежели как поисковая система, чтобы не пугать пользователей из Fediverse.

    • Mastodon: обрабатывать только аккаунты и посты, явно помеченные как "discoverable" и "indexable". Запрашивать follow только если аккаунт вручную подтверждает.

    • Аккаунты с тэгом "#nobot" в описании не должны обрабатываться никак вообще.

    • Пост с тэгом "#nobot" не должен обрабатываться.

По результатам вырабатанных мер появился документ для владельцев источников, которые не хотят, чтобы Awakari их использовал: https://github.com/awakari/.github/blob/master/OPT-OUT.md. Решение пока ещё неидеальное, но лучше что-то, чем ничего.

PS

История повторилась со стартапом "Maven", который брал всё, что плохо лежало, в том числе сообщения, которые пользователи Fediverse считали "приватными". Несмотря на то, что в отличие от меня, там работает целая команда, проспонсированная Twitter и OpenAI (не-не, я не завидую), это никак их не уберегло их от наступания на те же грабли спустя 2 дня.

Комментарии (21)


  1. SUNsung
    16.06.2024 12:42
    +5

    Что я вынес из этой статьи - если хочешь развивать пет-проект на общественных началах, то делай это анонимно и разворачивая в тех странах, где на законы плевали. Если захотят закопать, то закопают, даже просто "ради фана"


    1. akurilov Автор
      16.06.2024 12:42
      +4

      Плюс некоторые решения, которые были заложены в Авакари изначально

      1. Не собирать и не хранить никаких данных пользователей, ни паролей, ни емейлов. Аутентификация - пусть делают виджеты от гугла и телеграма.

      2. Не показывать контент пользователей или сторонних сервисов на своём домене.

      3. Нет, нет и ещё раз нет.


    1. mafia8
      16.06.2024 12:42
      +2

      разворачивая в тех странах, где на законы плевали

      Можно названия этих стран?


    1. vassabi
      16.06.2024 12:42
      +1

      А есть еще вариант: делать вот это вот все, но показывать и продавать только "государственным специальным заказчикам".

      Я вот подозреваю что китай со своим файрволом собирает вот эти все данные и даже не чешется по поводу странных закидонов "белых людей" (типа копирайта, авторского права и т.д. - а не то что "у нас в федиверсе есть правила вежливости"...)


  1. vfork
    16.06.2024 12:42
    +1

    У вас ещё и ветка в гитхабе с неприличным для мастодонов словом.


    1. akurilov Автор
      16.06.2024 12:42
      +5

      А как надо? Mistress?


      1. vassabi
        16.06.2024 12:42
        +1

        slave-owner ну или хотя бы просто lord :DDD /s


  1. sena
    16.06.2024 12:42

    Зашёл на авакари, ввожу free software, ничего не находит. Это значит, по свободному ПО ничего нет?


    1. vassabi
      16.06.2024 12:42

      Hidden text

      у меня вроде работает


      1. sena
        16.06.2024 12:42

        в фаерфоксе на работает значит


        1. akurilov Автор
          16.06.2024 12:42

          Не воспроизводится. Надо больше деталей, как этого достичь


  1. rekcuFniarB
    16.06.2024 12:42
    +2

    Банят в общем-то по делу, за не совсем корректную реализацию механизма подписки, автор при реализации поддержки ActivityPub упустил один нюанс.

    Проблема его реализации в том что при подписке на пользователей он использует единый актор на весь свой сервер, что в этой сети не принято. Подписываться должен пользователь, а не весь сервер, то есть у каждого пользователя должен быть свой актор.


    1. akurilov Автор
      16.06.2024 12:42
      +1

      ActivityPub боты в общем то никак не запрещены, их много в Fediverse.

      Awakari работает таким образом, что не его пользователь подписывается, а сам Awakari сервис. Пользователь Awakari может ничего не знать о Fediverse, Awakari дискаверит все за него

      Основные претензии в духе "it's a scraper" и "продаёт мои данные за деньги", что говорит о том, что в большинстве своём люди просто не разобрались, на что жалуются.

      Я не против бана конкретными пользователями Fediverse, которые не хотят иметь дело с Awakari (хотя есть и другие способы opt-out). Но не стоит угрожать


      1. rekcuFniarB
        16.06.2024 12:42

        ActivityPub боты в общем то никак не запрещены, их много в Fediverse.

        Там нет какой-то общей политики, на разных инстансах она разная, да и в принципе каждый сервер вправе делать левой пяткой что хочет. Плюс там у отдельных профилей может стоять свойство discoverable = false, что задумано как пометка что пользователь против индексации.

        Ну и подписка подразумевает что один пользователь подписывается на другого или на группу, пользователь может отказать другому пользователю в подписке, если он ему не нравится. Там, к слову, бывают ещё и публикации только для подписчиков. А тут какой-то сервер с нестандартной реализацией механизма подписок, подписывается ради того чтобы расшаривать публикации всем подряд. Поэтому и возникло такое отношение там.

        А вот если бы у вас на каждого пользователя был бы свой актор, как у всех других реализаций ActivityPub, драмы можно было бы избежать. Впрочем, к подписывающимся без единого своего поста там тоже относятся не без паранойи.

        PS: а вообще не знаю что вы там собрались агрегировать, сеть очень скучная, разве что как альтернативный фид хабра норм за счёт того что туда вручную утаскивают самое интересное.


        1. akurilov Автор
          16.06.2024 12:42
          +1

          1. Посты которые не public игнорируются

          2. Акторы и посты, где явно не указано discoverable=true игнорируются

          3. Акторы и посты, где явно не указано indexable=true игнорируются

          4. Акторы и посты, которые содержат тэг #nobot теперь тоже игнорируются

          Меня лично интересуют некоторые авторы, вроде Микко Туоми. Зачастую самые свежие новости сначала появляются в таких вот соцсетях


  1. domix32
    16.06.2024 12:42

    проспонсированная Twitter и OpenAI

    Учитывая недавнюю новость, что бывшый глава NSA теперь член совета директоров OpenAI это выглядит достаточно иронично.


  1. AlxDr
    16.06.2024 12:42
    +1

    Расскажу почему у меня появилось желание сходу забанить всё это как только я получил запрос. Причины две.
    1. Непонятно что это. Первым делом я сходил на сайт и посмотрел, но ничего не понял. На первой странице вместо понятного и дружелюбного объяснения что это вообще висит нечто выглядящее как то ли SEOшный инструмент, то ли скрапер типа iknowwhatyoudownload. Искать контакты и задавать вопросы желания не возникло. Поработайте над представлением, ну правда, если такая реакция, то, наверное, первое впечатление какое-то не очень?

    2. Идея подписки на пользователя общим актором так себе идея, но это многие сочли бы допустимым, если бы не п.1. Те, у кого включено одобрение, вряд ли добавят, но остальные не обратят внимания.


    1. akurilov Автор
      16.06.2024 12:42

      У вас есть пример, как это могло бы выглядеть хотя бы приблизительно?


      1. AlxDr
        16.06.2024 12:42
        +1

        Не знаю, я не специалист в UX, просто поделился впечатлением почему так :)

        В принципе, описание по https://activitypub.awakari.com/actor уже нормальное, я бы добавил что-то такое и в данные профиля самого актора (так как это первое, что видят при запросе, а там загадочное "Awakari ActivityPub Bot"). Может быть, ещё ссылочку на какой-то FAQ. Упростить язык - не то, что люди не понимают все эти "publisher", "actor" (хотя не все понимают), но ещё это отдаёт какой-то корпоративщиной, словно к тебе явились одновременно Мета, Нинтендо и Амазон со свитой демонов-юристов.

        Описание opt-out точно нужно вынести кратко куда-то туда и написать по-человечески, как показывает практика, само наличие лёгкого и очевидного способа отключиться настраивает более положительно, равно как и наоборот, хотя многие им так и не пользуются.

        Ну и главная страница правда какая-то мутная. Я не знаю как сделать лучше, но на вопрос "что это вообще такое?" она сейчас не отвечает достаточно ясно и легко, особенно при нежелании читать дальше полутора экранов. Опять же, ссылка на FAQ? Подозреваю, что это может создавать сложности не только с федиверсом.

        Повторюсь, что это лишь мои впечатления. Успехов вам в начинаниях!


        1. akurilov Автор
          16.06.2024 12:42

          Я поменял. Стало ли лучше?


    1. akurilov Автор
      16.06.2024 12:42

      1. Мне нечего особо показывать о своих пользователях, тк авакари не собирает никаких данных своих пользователей. Только численный id