Mastodon 3.0

Gargron

(原文: https://www.patreon.com/posts/mastodon-3-0-30877380

Hello Patreon! やっとこれを書いてます。長い間の作業をまとめないといけなかったので、3.0のリリースはちょっとキツかったです。長めの期間、中断なしに何かに対して取り組めるのは悪いことじゃありません。「お役所仕事」に邪魔されることなくバグや利用上の問題を発見できたり、機能について考え方を改めたりできるわけです。でも一方で、リリースしなきゃいけないというプレッシャーがどんどん高まってくるし、変更点が多くなると最後のお役所仕事もそれだけ増えることになってしまいます。実際、563ものコミットログを開発者ではない読者にも役立つよう整理したり、そこからブログの記事に掲載できるような際立った変更点を選び出したりしないといけませんでした。今回は新機能や変更点があまりにも多いので、ブログ記事は内容を絞りに絞る必要があったんですが、本当にピックアップするべきものをちゃんと選べたかどうか、100パーセントの自信はありません。人によって、どの新機能や変更点が大切かは違いますからね。

v3.0.0をリリースしたのは10月3日ですが、ブログ記事の準備が整っていなかったので(最後の推敲がまだだった)、ソーシャルメディアでは公表しませんでした。コードはできるだけ早く公開するけれども、宣伝するのは後でも構わない。ブログ記事は、ニュースサイトに掲載されて、いい感じで拡散してもらえるようなタイミングで公開しよう、と考えていたわけです。が、目論見の通りにはいきませんでした。GitHub にアップされた長い更新ログを、誰かがすぐに Hacker News に投稿してしまったのです。いや、トップページを飾ることができたので、文句はつけられないんですけどね。ブログ記事を書いたとして、それがトップで紹介される保証なんて何もないわけですし。Hacker News の中の人は、blog.joinmastodon.org みたいなカスタムドメインよりも、もっと一般的な GitHub とか Medium とかの URL の方を見に行きたがるんじゃないかと、ぼくは踏んでます。

運の悪いことに、そのわずか1日ほど後で、Wasabi が大規模な機能停止に見舞われました。Wasabi は、ぼくの管理する Mastodon サーバーである mastodon.social が採用しているオブジェクトストレージで、基本的にユーザーのアップロードしたファイルを保存しています。なので、新機能についてのせっかくの宣伝がぶち壊しになってしまい、この機会にせっかく登録してくれた新規ユーザーも、いきなりファイルがアップロードできない、アバター画像も見られない、しかも全体的に遅い、という状況になってしまったわけです。問題は日ごとに悪化する一方でした。ファイルアップロードに関わる部分だけの問題のはずが、なぜかデータベース全体のパフォーマンスにも影響してしまい、ユーザーのホームフィードがどんどん遅れていきました。このバグは、潰さないといけません。もし関心があればですが、簡単に言うとこういうことです。Paperclip という gem が、データベースのトランザクション期間中にファイルをアップロードしていました(いや、それは仕方ないんですよ。もしファイルがちゃんと保存されていないのにデータベースに1行追加されちゃったら、それはそれで困りますから)。なので、もしストレージ(Wasabi)がカタツムリのように遅かったら、トランザクションが長い間開きっぱなしになるわけです。長時間にわたるトランザクションは、データベース自体をロックしていたというわけじゃないんですが、接続プールを食い尽くしていました。しかし、5秒でタイムアウトするよう設定しているのに、なぜ数分にもわたってトランザクションが開きっぱなしになってしまっていたのでしょうか。結局判明したのは、aws-s3 ジェムが同期的なリトライ機構(失敗するごとにリトライ間隔が延びていく)を搭載していて、それがデフォルトでオンになっているということでした。それをオフにし、接続プールの数を増やしたことで何とか事なきを得ました。いいんです。たった一晩徹夜して、睡眠サイクルがメチャクチャになっただけですから。

残念ながら、Wasabi は約1週間にわたって機能しませんでした。S3 プロクシーサービス(flexify.io)を使って mastodon.social のメディアを別のオブジェクトストレージサービスに移してみようかと思いましたが、うちのサーバーで1時間あたりに生成されるデータ量(5GB)と、flexify.io の料金(5GB/h の転送量なら $1/h)、そして、Wasabi が復活しなければ古いデータを新しいサービスに移すことができず、その間は flexify.io を使い続けなければならないことを考えると、とてもそんなお金はなく、flexify.io を外すしかありませんでした。1~2日後にようやく Wasabi が復旧して助かりましたけれども、えらいストレスが溜まりましたし、長期的には別のサービスへの乗り換えを検討しています。

ともかく、その時点で v3.0.0 のバグをいくつか潰していましたし、ブログ記事も未完成でしたから(Eleanor は病気で作業ができず、ぼくも Wasabi の問題で手一杯でした)、プロのコピーライターである Tremaine Fiske に依頼してブログ記事の執筆を助けてもらいながら、v3.0.1のリリースを急ぐことに決めました。そして10月11日、ついにブログ記事と v3.0.1 がともに陽の目を見ました。

とはいっても、明らかにしておかなければいけないことがまだまだ残っていたので、全ての新しい API と管理機能の使い方を説明するためだけに追加のブログ記事を書き、さらに、モバイルアプリケーションで Mastodon へのサインアップを可能にする方法を説明した新たな記事を用意しました(バージョン3.0で追加された機能ではありませんが、今あるモバイルアプリには決定的に欠けている機能だと思うので)。そしてふと思いたって、Kurtis Rainbolt-Greene と、Twitch で「更新レポート」ビデオも作ってみました。特に Dota 2 みたいなマルチプレイヤービデオゲームがアップデートされた時に、更新内容を1つ1つ紹介してそれぞれの意味とか影響とかについて話していくやつ、よくあるじゃないですか。あんな感じです。1時間15分くらい喋ったところで声が限界になっちゃって、更新ログの1セクションについてしか話せなかったんですけど!

そして、今はこんな感じです。ぼくは頭を切り替えて、Mastodon の開発面以外のことについて色々と進めています。例えば、joinmastodon.org へのサーバー登録依頼を処理し、ドキュメント類を外部の助けを借りて見直しています。そして、この新バージョンで可能になった教育機関での Mastodon 活用方法について、さらなるブログ記事を用意しているところです。Tシャツ以外のマーチャンタイズ案、それに新たなビデオ広告についても検討しています。11月の初頭には、アテネで開催される次回の Eunomia カンファレンスに出席する予定です。仕事の一環ではあるんですが、4ヶ月もカンヅメになっていた後の良い気分転換になるんじゃないかと思っています。

Mastodon の将来に何を見たいか、出資者のみなさんの意見を聞きたいです。さて、次期バージョンのために何を作っていきましょうかね。

投稿者:

鼻毛スライサー

自分の力と意思だけでインターネットに浮かんでいます

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です