sosukesuzuki.dev

June, 28 2022

オープンソースをメンテするときに自分が考えていること

@azu さんのブログ記事 Maintainer Month: オープンソースをメンテナンスするコツ を読んで GitHub が Maintainer Month というイベントを主催していることを知りました。

自分は Maintainer Month の Sponsoring の対象でありませんが、自分がオープンソースのプロジェクトをメンテするときに考えていることを書き残しておこうと思います。

オープンソースガイド などにはすごいためになることが書かれていますが、積極的な内容で自分にとっては読むだけで疲れてしまうような内容でもあります。なのでこの記事ではあえて自分が普段考えていることの中でも消極的なことについて書いてみます。

オープンソースのメンテナンスに疲弊している人や、オープンソースに貢献している人、もしくは貢献しようと思っている人に「こんなゆるい気持ちでやってる人もいるんだ」と思ってもらえれば嬉しいです。「もっとまじめにやれ」と思う人もいるかもしれないけど。

普段のオープンソース活動

自分は主に JavaScript のコードフォーマッター Prettier のメンテナーとして活動しています。その過程で Babel や typescript-eslint などの Prettier が依存しているプロジェクトにも積極的に貢献しています。

自分が Prettier に関わりはじめたのは 2019 年 5 月頃なので 3 年くらい関わり続けていて、この 3 年間は世界で 2 番目に Prettier にコミットしたようです(通算では 4 番目)。

特に 2021 年以降はアクティブメンテナーが減ったため、リリースブログの執筆やリリース作業なども行うようになりました。実質的に最近の Prettier に必要最低限のことをだいたい全部やっています。

考えていること

この記事に書いたことはわざわざ意識しているわけではなく、数年間やっていたら自然とこういうスタンスになっていました。

最低限をデリバリーする

みんなが求める最低限の Prettier をデリバリーし続けることを頑張っています。

あまりにも変なフォーマットはしないとか、あまりにも遅くないとか、新しい構文も自然にフォーマットできるとか、その程度のものです。

それ以上のことができたら自分の中では特別立派なことだと考えており、基本的にはそういうことはしていません。

たとえば Prettier 2.7 で実装した --cache オプション とか、Prettier 2.6 でバンドルサイズをたくさん削った とかは特別立派な類に入ります。逆に TypeScript の新しい構文のサポートは最低限のものに含まれます。

過度に人に期待しない

オープンソースのプロジェクトをやっていると当然他人とコミュニケーションをとるわけですが、過度に人に期待していません。

Prettier に関わっている人は自分の知る限りみんなボランティアなので、やらない方が人間にとって自然な状態だと思っています。

「いつまでにやります!」みたいなコメントは「(その当時は)やる気があります!」という程度に受け取っています。

あんまり人のことを考えない

Issue や Pull Request は大変ありがたく思っていますが、必要以上に意識しないようにしています。

悪く言えば適切に無視しています。

Issue や Pull Request を見るのは自分にとってはコードを書くことに比べてコストが高く、あまり楽しくありません。

趣味のオープンソースのプロジェクトで疲れたくはないので必要以上には見ません。

人に任せる

積極的にコメントをくれる人に Issue をトリアージする権限を与えたり、興味がありそうな人に関連するパッケージのメンテナンスを託すなど、自分が得意じゃないことややりたくないことについては積極的に人に任せるようにしています。

もらえるものはもらっとく

寄付のお金などはもらえるならもらっておこうと思っています。

上述の通り雑にやっているとは言え、余暇時間を潰してみんなの役に立つことをしているのは事実だと思うので、いただけるものはありがたくいただいています。

なんだかんだお金があると時間的な余裕を作りやすくなるので Prettier の持続に興味がある人は https://opencollective.com/prettier から寄付をしていただけるとありがたいです。

頭を使う作業のフォールバック先

「やらなきゃいけないことがいっぱいあるのに絶対やりたくない!!」なんてことありませんか?私にはよくあります。

自分にとってオープンソースのための作業は「コードを書きたいしそのための集中力はあるけど、やらなきゃいけないことは絶対やりたくない!!」というときにやることになっています。

私はかなり自堕落な性格なのでそういうタイミングが頻繁に訪れます。

ちなみにこの記事の執筆も自分にとってはオープンソース活動の一貫ですが、明日に控えた期末試験の勉強がやりたくなさすぎるので書いています。

まとめ

あんまり感情を持たずに淡々とやりたいことを優先してやっています。みんなが求める最低限の Prettier にとってどうしても必要な場合に限ってやりたくないこともやります。

本当はもっと積極的にやったほうがいいのだろうとも思っていますが、疲れてメンテナンスできなくなることに比べたら雑にやるほうがマシだと考えています。