放置されたクレートをなんとかする


はじめに

この記事は Rust 3 Advent Calendar 2020 の24日目です。
最後1つ埋まっていないのは気になるので埋めておきます。

Rustのクレートは比較的よくメンテナンスされている印象ですが、やはり放置されたクレートというのも時々見かけます。十分枯れていて問題なく動いているならいいのですが、放置された結果コンパイルが通らなくなっているような場合は困ってしまいますね。そういったクレートに対して個人的にやっている対処法を書いてみます。

Pull Request(PR)を送る

最初にやるのはPRを送ることです。放置されているように見えて、PRを送るとすぐにマージしてくれる場合もあります。特定のプラットフォームでコンパイルエラーになるようなケース(特にWindowsはケアしてる人が少ないです)は、単に作者が気づいていないだけ、ということも多いです。

メールを送る

PRを送っても反応がなく、他の人のPRもたくさんたまっている状態であることもあります。このような場合でも、直接メールを送ってみると案外すぐ反応してくれることがあります。自分自身を振り返っても、仕事が忙しいときに来たPRは「あとで見よう」と思って通知から消して、そのまま忘れてしまうことがありますね…。
個人的には、PRを作成してから1~2か月反応がなくて、ユーザ側で回避不能な問題がある場合はメールを送ってみることにしています。

メンテナになる

↑でメールを送るときに、「もし時間がとれないならメンテナンスを引き継いでもいいですよ」というようなことを一緒に書いています。ちょうど昨日このパターンで、cargo-licenseというツールのメンテナになりました。

フォークする

これはできれば避けたいのですが、全く反応がなければフォークするしかありません。GitHub上では単にフォークすればいいのですが、crates.ioに登録されている名前はどうしようもないので適当に名前を変えるしかないです。
名前がちょっとだけ違うクレートが乱立すると「どれ使ったらいいの?」となってしまうので、なるべくこうならないようにしたいですね。
こうなっているパターンとしては interfacesinterfaces2 があって、これはどちらも放置状態です。
(正確にはinterfaces2の作者さんとは連絡が取れていますがメンテナンスする気はないとのことで、interfacesの作者さんとはまだ連絡が取れていません。interfacesが無理そうならinterfaces2を引き継ごうかな、と思っています)

追記(2020/12/30)
interfacesの作者の人と連絡がついて、こちらも引き継ぐことになりました。interfaces2は閉じてもらって、こちらに一本化したいと思います。

まとめ

クレートが放置されているときに個人的にやっていることを書いてみました。やはりOSS活動というのは各個人の事情によるところが大きいのでなかなか難しい部分がありますね。最近Inside Rust Blog(とそこからリンクされたブログ)にこんな記事がありました。

Changes to Rust compiler team
Rotating the compiler team leads

Rustのコンパイラチームリーダーを定期的にローテーションさせることにした、という話です。このように継続的に開発が続けられる仕組みづくりに取り組んでいるのはとてもいいと思います。