#fedibird 有効期限付き投稿をAPIレベルで実装しました。まだUIはありません。試験導入です。
export TOKEN=XXXXXXXX
curl -XPOST -H "Authorization: Bearer $TOKEN" https://fedibird.com/api/v1/statuses -d "status=test" -d "expires_at=2020-06-16T02:10:00Z"
expires_atで、投稿の有効期限を設定します。
Fedibirdでローカルのみなんてありえないので、当然、連合先に配送されますw
有効期限に達すると、投稿の削除がローカルと連合に対して行われます。
連合先で削除されるかどうかは保証されません。自分で削除した時と同じです。
有効期限に対応したサーバでは、削除のActivityが届かなくても、期限を過ぎた投稿を削除済みとして扱うか、あるいは自主的に削除します。
有効期限が一定以上長い投稿については、削除リクエストしないという仕様も考えています。期日に消すことが主目的では無く、キャッシュを保持する期間の目安を伝える役割となります。
#fedibird いろいろなことが考えられるので、意見を聞かせて頂けると助かります。
リアルタイムに張り付くことを求められるということについていえば、たとえば、有効期限の最短を1週間にするという方法もあります。
負荷については、たとえば、全投稿にデフォルトで1ヶ月などの期間設定を行い、全て削除リクエストを飛ばすとします。削除リクエストは、投稿する速度と同じ速度で飛んできます。
投稿と削除の負荷は同じではありませんが、同じペースで時間をかけて実行されるのは、ある種、理想の負荷分散かもしれません(さらに、12時間ずらすなどの工夫も考えられます)
tootctl statuses remove との違いとして、ローカルの投稿削除があります。
expires_atで有効期限を短くする方に目が行きますが、expires_atを指定しない、ずっと残しておきたい投稿が識別できるという側面もあります。
投稿は、投稿者が自由に削除でき、APIのレートリミット以上には制限されていない。しかるに、自動で削除する機能は、手動での削除より顕著に負荷が高いなど特段の配慮が必要なければ、同様に自由に利用できて良い。
Pawooでは自動消滅トゥート機能が実際に長年提供されてきており、投稿者・閲覧者に十分な利用経験がある。これを参考にしたい。
マイクロブログ・ミニブログとして考えた時に、公開期間を指定するのはおかしくない。
有効期限を過ぎた際にそれをどう扱って欲しいかは、第一にユーザーの選択である必要を感じる。
取り扱い方法については現実的には2種類に集約されそう。hintまたはdelete。
hintは、期日を明示するだけで、取り扱いを一任する。削除してもいいし、隠してもいいし、何もしなくてもいい。
deleteは、ローカルで削除するとともにDeleteActivityを飛ばしてリモートへ明示的に削除を依頼する。漏れた場合にも、リモート側が自動削除することを期待する。
SNSのデザインとして、希少性(期間限定・ここだけで公開)で煽る効果はMastodonのポリシーと相性が悪い。