10 KiB
kmyblue
kmyblueはMastodonのフォークです。創作作家のためのMastodonを目指して開発しました。
kmyblueはフォーク名であり、同時にサーバー名でもあります。以下は特に記述がない限り、フォークとしてのkmyblueをさします。
kmyblueはAGPLライセンスで公開されているため、どなたでも自由にフォークし、このソースコードを元に自分でサーバーを立てて公開することができます。またActivityPubに参加することもできます。ただしkmyblueにおいてテストコードは飾りでしかないため、不具合が発生しても自己責任になります。既知のバグもいくつかありますし、直す予定のないものも含まれます。
テストコードは飾りですが、Lintは動いています。
kmyblueの強み
本家Mastodonへの積極的追従
kmyblueは、いくつかのフォークと異なり、追加機能を控えめにする代わりに本家Mastodonに積極的に追従を行います。バージョン4には4のよさがありますが、技術的に可能である限り、バージョン5へのアップグレードもやぶさかではありません。
kmyblueの追加機能そのままに、Mastodonの新機能も利用できるよう調整を行います。
絵文字リアクション対応
kmyblueは絵文字リアクションに対応しているフォークの1つです。絵文字リアクションはMisskey標準搭載の機能で、需要が高い機能である割には、サーバーに負荷がかかるため本家Mastodonには搭載されていません。
kmyblueのブランチ
- main - 現在はメンテナンスされていません
- kb_development - 現在kmyblue本体で使われているソースコードです
- kb_migration - 本家Mastodonへの追従を目的としたブランチです。
kb_development
上で開発を進めているときに利用します - kb_migration_development - 本家Mastodonへ追従し、かつその上で開発するときに使うブランチです。最新の本家コードでリファクタリングが行われ、
kb_development
とkb_migration
の互換性の維持が困難になったときに利用します。ここで追加された機能は原則、本家Mastodonのバージョンアップと同時にkb_development
に反映されます
本家Mastodonからの追加機能
kmyblueは、本家Mastodonにいくつかの改造を加えています。以下に示します。
ローカル公開
未収載を拡張した公開範囲です。本来のみ収載の公開範囲に加えて、自分のサーバーのローカルタイムラインに掲載されます。他のサーバーの連合タイムラインに載せたくない、自分と属性の近い人達が集まったサーバーと自分のフォロワーにだけ見せたい投稿に用います。
スタンプ(絵文字リアクション)
kmyblue内での呼称はスタンプですが、一般には絵文字リアクションと呼ばれる機能です。自分や他人の投稿に絵文字をつけることができます。kmyblueのスタンプはFedibirdの絵文字リアクションと互換性のあるAPIを持っているため、Fedibird対応アプリでkmyblueのスタンプ機能を利用できる場合があります。
kmyblueは、1つのアカウントが1つの投稿に複数のスタンプ(絵文字リアクション)を最大3個までつけることが可能です。また、下記機能にも対応しています。
- 他のサーバーのアカウントがつけたスタンプに相乗りする
- 自分がスタンプを付けた投稿一覧を見る
- トレンド投稿の選定条件にスタンプを付けたアカウントの数を考慮する
- 投稿の自動削除で削除条件にスタンプの数を指定する
kmyblueは、他のサーバーの投稿にスタンプをつけることで、相手サーバーに情報を送信します。ただしスタンプに対応していないサーバーにおいては、通知されることはありません。
アンテナ
「自分はフォローしていないが連合タイムラインに流れているアカウント」の投稿を購読することが可能です。アンテナはドメイン、アカウント、ハッシュタグ、キーワードの4種類の絞り込み条件を持ち、複合指定することでAND条件として働きます。アンテナによって検出された投稿は、指定されたリスト、またはホームタイムラインに追加されます。
ドメイン購読において、自分自身のドメインを指定できることも特長の1つです。隠し機能として、ドメイン絞り込み条件に自身のドメイン1つだけ、他の絞り込み条件や除外条件をすべて空欄、投稿の配置先をホームにした場合に限り、STL(ソーシャルタイムライン)モードが有効になり購読拒否設定が無視されます。
自分の投稿がアンテナに検出されるのを拒否することもできます。
ドメインブロックの拡張
ドメインブロック機能が大幅に拡張され、「制限」「停止」としなくても、細分化された操作を個別にブロックすることができます。これによって、相手サーバーとの交流が完全に遮断されるリスクを減らします。適切に管理されておらず善良なユーザーとスパム/攻撃者が同居するようなサーバーへの対策として有効です。
- お気に入り・絵文字リアクションのみをブロック
- メンションのみをブロック
- 相手からのフォローを強制的に審査制にする
- 相手からのフォローを全てブロック
他にも、「自分のサーバーの特定投稿を相手サーバーに送信しない」設定が可能です。これはセンシティブな投稿などを政治的な理由で送信することが難しいサーバーへの対策として実装しました。
Misskey対策
Misskeyおよびそのフォーク(Calckeyなど)は、フォローしていないアカウントの未収載投稿を自由に検索・購読することができます。これはMastodonの設計とは根本的に異なる仕様です。kmyblueでは、別途手動でドメインブロックデータにフラグを付けたサーバーに限り、そのサーバーに未収載投稿を送信するときに「フォロワーのみ」に変更します。他のサーバーには未収載として送信されます。この動作には、管理者だけでなくユーザー各自の設定も必要になります。
モデレーションの拡張
管理の効率化、規約違反・法律違反コンテンツへの迅速な対応(特にアカウント停止を伴わずに済むようにすること)を目的として、モデレーション機能を拡張しています。
各投稿の操作
各投稿について、強制的なCW付与、強制的な画像NSFWフラグ付与、編集履歴の削除、画像の削除、投稿の削除が行なえます。操作は即時反映されます。
アカウントの正規表現検索
アカウント名、表示名について正規表現で検索できます。ただし動作は重くなります。
AI学習禁止メタタグ
ユーザー生成コンテンツが含まれる全てのページに、AI学習を禁止するメタタグを挿入しています。ただし各ユーザーのプロフィールページ・投稿ページに限り、ユーザーは各自設定でAI学習禁止メタタグを除去することが可能です。
リンクのテキストと実際のリンク先の異なるものの強調表示
Misskeyおよびそのフォーク(Calckeyなど)では、MFMを利用することにより、例えば「https://google.co.jp/ 」に向けたリンクを「https://www.yahoo.co.jp/ 」というテキストで掲載することが容易です。それに関する基本的な詐欺を見分けることができます。ただし実際にフィッシング詐欺への効果があるかは疑問です。
投票項目数の拡張
投票について、本家Mastodonでは4項目までですが、kmyblueでは8個までに拡張しています。
連合から送られてくる投稿の添付画像最大数の拡張
本家Mastodonでは4個までですが、kmyblueでは8個までに拡張しています。ただしWebクライアントでの表示には、各自ユーザーによる設定が必要です。kmyblueローカルから投稿できる画像の枚数に変更はありません。
検索許可
ユーザーは各投稿に「検索許可」パラメータを付与できます。ここで「公開」が指定された投稿は、誰でも自由に検索機能を用いて検索することができます(全文検索に限る)。検索許可に対応していないクライアントアプリから投稿した時の値は、ユーザーが設定することができます。
これはFedibirdの「検索範囲」機能に対応します。APIに互換性はありませんが、ActivityPub仕様は共通しています。
トレンドの拡張
本家マストドンでは、センシティブフラグのついた全ての投稿がトレンドに掲載されません。kmyblueはその中でも、「センシティブフラグはついているが、画像が添付されておらずCW付きでもない」投稿をトレンドに掲載します。
本来このような投稿はトレンドに掲載すべきでありませんが、本家MastodonのWebクライアントでは文章だけの投稿のセンシティブフラグを自由に操作できないことを理由とした独自対応となります。
Sidekiqヘルスチェック
Sidekiqのヘルスチェックを目的として、30秒に1回ずつ指定されたURLにHEADリクエストを送信します。送信先URLは、環境変数(または.env.production
)にSIDEKIQ_HEALTH_FETCH_URL
として指定します。