マストドンのコード、特にフロントエンドをなんとかしたい、あるいはなんとかしている

はい。

このブログをわざわざ読んでいる方なら既にご存知かもしれませんが、マストドンをご存知でしょうか。

いわゆる分散型マイクロブログの一種で、2017年ごろのTwitter社による日本人イラストレーターの大規模凍結あたりで一時期話題になり、 最近またイーロンマスクによるTwitter社買収から始まった一連の混乱で再度少し話題にもなりました。

で、まあ僕としてもマストドンに小改造をしたうえで自分で運用しているんですが、マストドンのコードは今となってはだいぶ厳しい。

厳しい部分を挙げると割とキリがないんですが、ざっくり書くと

  • フロントエンドがWebpackerにべったり、かつ独自configを書きまくっている
    • デフォルトが隠蔽されているWebpackerと合わさり最終的にどういうconfigでwebpackerが動いてるのかたぶん誰も把握できてない
  • Typescriptじゃない
    • 動いてるからヨシ!じゃない
    • 改修が辛い
    • 複雑度的にも変更すると壊れる、のレベルに達していてリファクタすら決心が要る
  • 大半のReactコンポーネントがクラスベース
  • Reduxも一昔前のボイラープレート満載の構造
    • なんかredux-thunkを非同期処理のためじゃなくて他reducerのstateを気軽に横取りするための便利ツールとして使ってるとこもあるし…
  • apiスキーマのドキュメントが手で整備されている
    • 実態に即しているか、などのテストがない
    • jsonリアライザももうメンテが死んだActiveModelSeriarizerのままだし…
    • でもテストがないから乗り換えもできない

みたいな不満が募っていたんですが、

github.com

でついにTypescriptを入れさせることに成功しました。

以来、何よりもとにかくフロントエンドに型注釈が付いてほしいので、とにかくts/tsxにリネームして型を最低限付けて…を繰り返しています。

今気付いたけど、これ最初のPRからまだ1ヶ月経ってないのマ?

でもts化開始前の段階でjsxが全部で242ファイル、jsが205ファイルくらいあったので、これに型を付け切って更にイイカンジにリファクタするにはまだまだ、道のりが遠そうです。

千里の道も一歩からとはよく言いますが、それにしたってあまりにも量が多いので、誰か手伝ってくれる人を捜し求めています。 どなたか手伝ってくれませんか、マジで(