★Fediverseを大きなLTLにしてしまったらどうなるかという妄想について。★

★この記事はFediverse Advent Calendar 2020 (2)の22日目の記事です。★ この題目は何だかよく分からないので、言い換えると、 ★自選・よりぬきのトゥートをFediverseで共有したい★ ということなのですが、これでもまだ分からないですね。 最初に、妄想というか仕掛けについて説明しましょう。

  • あるサーバに特別なサービスがあって、
  • 多くの人々(Mastodonその他の連合SNS)がそれをフォローする。
  • 各人は自分の既存のトゥートから選んで、よりぬきのものをそのサービスに通知する。(その個数には制限を付ける。)
  • すると、そのサービスはそのトゥートをブーストし、
  • フォローしている人たちに配信される。
  • というものです。LTLとかほとんど関係ないですね。 さて、ここでほんの少し自己紹介。Twitterからaidon(アイドン・人工知能/機械学習/統計学/データサイエンス) に移住。心地よく過ごしていたが、ある時、シンギュラリティと教科書に関するベストセラーの著者に質問したくて、Twitterに戻っている間に、aidonが終了。その後、今から二年余り前にPleromaでお一人様サーバを構築。人工知能や脳などに関するコミュニティができればよいなと思いつつ、 #MLoSNS を作ろうとしたりしながらも、なんとなく、今に至っています。 ★この仕掛けを『よりぬきブースト』とでも呼ぶことにします。 トゥートがインスタンスサーバの中で回るのがLTL。コミュニティもそこで回るからある意味、内部で回っている。これに対して、「よりぬきブースト」は外部、あるいはFediverseに開かれたものになっています。 ★Fediverseの視点からは、分散されたSNSをある意味統合し束ねる方向のサービスの一つと言えるかもしれません。Twitterなどに比べてユーザ数が圧倒的に少ないFediverse。更に細かく分断されるだけでは勢力が弱ってしまいます。 ★個数制限について。 各ユーザが全てのトゥートをFediverseに拡散させてしまっては読み手は読めなくなってしまいます。Followeeの記事を読むだけでも大変なのに、更に大量に増えることぱ事実上考えられない。 そこで、フィルタリングということになりますが、ここでは、読み手がフィルタリングするのではなく、書き手が読んで欲しい記事に優先順位をつけることで、書き手の意志を表現することになります。SNSでは書き手は選ばれる側で自分から選ぶことは相対的に少ないような。 しかし、優先順位を付けるのも面倒。 そこで、例えば、一番単純に、過去のある日付のトゥートをひとつだけブーストできる、ということにしては如何でしょうか? 2020年12月22日のトゥートからひとつだけ、2020年12月22日の枠として、23日以降にブーストさせることができる、というような。 ★書き手の視点から。 Followerが多くて、たくさんのトゥートを書いている「強い人」もfollowerが少なくて少ししかトゥートしていない「弱い人」も同様に一日に一つだけブーストできる。ある種の公平さがある。(ある種のフェアネス = 昔、墓場人夜さんがおっしゃっていたことに繋がるかもしれないですが、現時点では推測するしかありません) 読んでもらいたいトゥートを意識して読み手に送り出せる。 ★特徴をまとめると、
    • 書き手としては、読んでもらいたい自分の記事をより多くのユーザに届けられる。
    • ある種のフェアネスがある。
    • 読み手としては、自分の「棲家」の外の情報が得られる。
    • Chat的な使い方にはまるで不向き。
    • FediverseにLTLのような機能を付加できるという側面も。
    この仕掛けは、誰も気付いていないTikTokの本当のイノベーションを語るの記事に大いにインスパイアされました。 (今となっては評判悪く、悪名高いサービスの筆頭のようになってしまったTikTokですが) ★実装について BotでやるよりActivityPubを直接喋るサーバの方が自由度も高いと思い、まず、ActivityPubサーバを作ろうとPythonでいろいろやったのですが、他のインスタンスサーバからfollowされる、というか、検索ででてくるところまで行かなくて、プロトタイプのようなものをお見せできませんでした。 「よりぬきブースト」サーバに届いていないトゥートをブーストできるのか、そこまでは確かめたかったのですが。それができなければ、全くの妄想で終わりです。 まあ、ActivityPubについての技術をある程度持っておきたかったということはあります。 ★さて、来年に私が目指したい方向性としては、 お一人様SNSから少し脱出して、数学のMathtodonやその他のFediverseのサーヒスに目を向ける。 自分のブログを構築したい。 TwitterやRedditも併用して、Fediverseも含めて利用価値を高めたい。 TwitterやRedditから人を呼び寄せるのではなく、併用することにより、TwitterやRedditがより良い物になる、ということを示すことができれば、Fediverseも自ずと繁栄できるのではないでしょうか? (本当にそうか?)
    Fediverse (2) Advent Calendar 2020 - Adventar

    ## Fediverseのアドベントカレンダー(第二会場)です [(第一会場はこちらです)](https://adventar.org/calendars/5019) [(第三会場はこちらです)](https://adventar.org/calendars/5157) [(第四会場はこちらです)](https://adventar.org/calendars/6046) ### Fediverseで日々を過ごしていて、感じていること、考えたこと、今年のまとめ、来年の抱負、思い出話など、自由な内容でご参加下さい。ガチめの記事も歓迎です - ここでいうFediverseは、Mastodon(マストドン)、Pleroma(プレロマ)、Misskey(ミスキー)、Pixelfed、PeerTube、WriteFreely、Plume、Funkwhale、Hubzilla、Friendica、GNU Social、Mobilizon、その他ここに書き切れないたくさんのActivityPubで繋がるサーバや、リレー、notestock、検索、InstanceTickerなどの周辺サービス、クライアントアプリ、各種botなどで構成されるActivityPubネットワーク周辺を想定していますが、Diaspora、Zotなどの知見がある方もぜひご参加ください - 記事を書かれる方は、**[Fediverse Advent Calendar 2020](https://adventar.org/calendars/5019)のn日目の記事です。**のような一文を入れて頂けると助かります - 空いているところがある限り、余力のある人は複数の記事を書いて頂いてOKです - 枠が不足した場合はカレンダーを増やします - ご自身のブログや、投稿できるその他のサービスを利用して記事を公開し、そのURLを登録してください

    Adventar
    Fediverse Twitter Reddit などをまたがるコミュニティを作ることが技術的にできそうかどうか?

    Twitter との連携はできそうもない。
    ならば、私が以前考えてやりかけた #MLoSNS というのに、本物のML (Mailing List) 機能を追加して、Fediverseの外の人々には電子メールで連絡したらどうか、と思いついた。いまさら電子メールのMLかよ、という感じもするが。

    Reddit には相互の内容の自動転載が可能なのかどうか。そのうち調べてみることにしよう。

    #Twitter #Reddit #Fediverse #mailing_list
    こういう、少人数で細く長く、みたいなものは、メーリングリスト的なものが合っていそうだが、まず、Redditへの投稿、Twitterでのコンタクト、の準備が必要。
    議論の場はどうするか、当面はReddit, Twitterそれそれでやってみることになるが、ふさわしい場をどこに用意するのか。。。
    MLoSNS計画は間に合わなくても継続。

    #MLoSNS #Reddit #Twitter
    #MLoSNS のテストとおれおれFediverseのために、今日の午後、MastodonをノートPCにインストしてたけど、
    3時間以上かかって、.env.productionができたところまで。
    問題はSMTPで、ノートPCにUbuntuのexim4を入れるかどうか。使わない時は止めておけばよいのだけど。いれるしかないか。くっ

    https://docs.joinmastodon.org/administration/installation/
    を見る前に、勝手にRuby 2.6.3を導入したのが無駄になった。よけいに時間くった。
    続きはまたいつか。
    #Mastodon #Fediverse
    Installation - Mastodon documentation

    How to install Mastodon on an Ubuntu 18.04 server

    #MLoSNS #API
    https://cutls.com/users/Cutls/statuses/102174800006613049
    で教えていただいた、「レスポンスヘッダーのlink」というのは、pythonのrequestsで得たもののlinks項目にあることが分かった。
    request.links
    それは、
    <class 'dict'>
    であって、中身は
    {'next': {'url': 'https://pleroma/api/v1/timelines/home?max_id=9jLjTMhjqFtBW3N0sq&limit=5', 'rel': 'next'}, 'prev': {'url': 'https://pleroma/api/v1/timelines/home?min_id=9jN3akOYjWyvJBaxyS&limit=5', 'rel': 'prev'}}
    のようなもの。これで、より古い、より新しい、記事が取り出せるようになっているのか、なるほど。
    それにしても、min_idというのはMastodonのAPIになかったような気もするけど。
    Cutls P :thinkingdesk: (@[email protected])

    @[email protected] もし違うかったら申し訳ないのですが、 max_idに入れるIDはjsonから引っ張り出せるトゥートのIDではなく、レスポンスヘッダーのlink:というのを見なければなりません。厄介です。 あと、in_reply_to…の逆(つまりそのトゥートに返信したトゥート)を知るのにcontextを見るという方法があります。

    cutls.com
    #MLoSNS の進捗。
    投稿者のアイコンは Pleromaのユーザ用には<img>タグを使うことに。ただし、Subwaytooterなどでは<img>は有効にならない。
    それ以外は、別のトュートにて、画像にアイコンをはめて表示させることにした。ださいが仕方ない。Pythonのpillowでresizeとpasteのテスト。この記事にアイコン画像を添付してみる。400x300の透明な枠に100x100のアイコンをpasteしてある。

    掲示板システムのRedditではユーザアイコンは使っていなかった。そのActivityPub版のPrismoではとても小さいアイコンが使われていた。
    https://hostux.news/posts/ac9154ad-9c5b-48b2-bfc1-137fe4207eab

    メンションされたものを読みだす部分を別のモジュールに。MLにpostするメインループはもうちょっと。
    largeframe.png
    https://dtp-mstdn.jp/users/noellabo/statuses/102141991972056181
    によると、Mastodonでは <img>のHTMLタグは使えなさそう。
    MLoSNSで投稿者のアイコンを表示するのに、<img>タグを使おうと思っていたけど、無理そうだ、Mastdonでは。
    いずれ相手毎にことなる対応をすることになるかもしれない、とは思っていたけど、対Pleroma、対Mastodonと分けるないといけない、とまでは思っていなかった。

    MLoSNSで投稿者のアイコンが表示できない場合の代案は考えはしたが、かなり無理矢理感がある。
    まずは、Pleromaでできるだけのことをしてみる。Mastodon用にはアイコンはとりあえず諦めるか。

    Mastdonもいろいろな細かいバリエーションがあるわけだし、こういうことになってくると、掲示板のような別のWebサービスを用意して、BBS with SNS (BBSwSNS), ML with SNS(MLwSNS)とでも言うべき仕掛けに最初からしたほうが良いかもしれない、という気が少しだけしてくる。

    #MLoSNS #Pleroma #Mastodon
    いろいろあって、あらためてEugenさんが書いたリッチテキスト対応のコード(まだ制作中)ですが、 …

    添付: 1 枚の画像 いろいろあって、あらためてEugenさんが書いたリッチテキスト対応のコード(まだ制作中)ですが、 * 従来は、HTML要素としては下記の4つのタグのみ受け入れていた p br span a * あらたに、7つのタグを受け入れる em i strong b code del s * その上で、Mastodonから強調とコードの投稿を許可する というような内容になっています。 `*強調1*` *強調1* `**強調2**` **強調2** `` `コード` `` `コード` (将来のMastodon、Pleromaでしか見えません。添付画像参照) コードは、アカウントやハッシュタグの記述をリンクに変換せずに記述できます(発信元での変換の抑制なので、従来バージョン向けにも有用です) 実例: `@[email protected] join` を投稿すると、リレーに個人参加できます。 `@[email protected] subscribe #リレーの話` を投稿すると、`#リレーの話`タグ付き投稿を購読できます。(あらかじめ`@[email protected]`をフォローしておく必要があります) #mastodev

    dtp-mstdn.jp
    get /api/v1/notifications
    でやってみたけど、なにかおかしい、いまいちうまく行かない。
    max_idでそれ以前のものを取り出そうとすると、jsonではなくて、エラーメッセージとしての長いHTMLを受信してしまう。
    やはりストリーミングAPIでないとダメなのか?
    あるいは、いろいろと変なことやってたから、テスト用のPleromaが少し異常なのかも。

    'exclue_types' : ['follow', 'favourite', 'reblog']
    とかやってもだめ。

    get /api/v1/_timelines/home
    で in_reply_to_account_id でみても、返信ではなくmentionでは受け手、つまりMLoSNSのアカウントが確認できない。

    結局、本文などを検索して
    if myID in content:
    if '>@<span>' + username + '</span>' in content:
    のような感じでMLoSNS宛であることにしている。
    #MLoSNS
    MLoSNSについては、やっと、来たものをML側に出す、というのができてきた。
    しかし、MLのアカウントに対するメンションや返信であることを確認する、というのがいまいちよくできていない。
    いまは、本文中の「アットマーク自分のusername」とか useridを検出しているけど、これはまずいかも。

    mentionsという項目があるけど、これは何なのだろう?
    受信者というか宛先が簡単に調べられるようになっていない?のはいまいちよくわからない。

    https://cutls.com/users/Cutls/statuses/102134505021486965
    で気付かされた
    /api/v1/notifications
    使えばよかったのかも。

    まだPleromaだけしか相手にして無いのにこの調子。
    思っていたより結構大変そう。
    #MLoSNS
    Cutls P :thinkingdesk: (@[email protected])

    今回はこれの検証 Add `account_id` param to `GET /api/v1/notifications` (#10796) · tootsuite/mastodon@0c933c1 - https://github.com/tootsuite/mastodon/commit/0c933c1b8ca18d5856ee4b24cee1744f1137c516

    cutls.com
    MLoSNSで同報配布する記事の公開範囲について考えていたら、重大な勘違いがあるような気がしてきた。致命的とまでは行かないにしても、ご利益が大きく減ってしまいそうな。

    Little-endian丼があったとして、そこに間借りする形でBig-endian MLoSNSを置いたとすると、Big-endianアカウントから配布投稿する記事の公開範囲がpublicだと、Little-endian丼の全員に流れてしまう。これは紛争の元だ。

    記事の公開範囲をfollowers-onlyにすると、Little-endian丼には流れないけど、followersに流れた記事はboostできなくなってしまう。ここのところ、先ほどまで知らなかった。

    Little-endian丼のLTLには流れないけど、それ以外では見れるようにできるのだろうか? Unlistedというのがそれに当たるのか? これにハッシュタグが絡んだりするとややこしそう。

    かなり盛り下がりそうになってしまった。
    #MLoSNS #LTL #unlisted #followers_only