いけむランド

はてダからやってきました

Future maintenance of RubyGems packages with native extensions

今月の中旬に以下のようなメールを cygwin-app ML に投げた。

cygwin.com

内容としては、ネイティブ拡張を持つ gem ベースのパッケージについて、積極的なメンテナンスを続けることは難しい、という相談である。

実は自分が興味を持っていたのは Ruby 処理系そのものであり、ネイティブ拡張を含む個々の gem の保守はそれほどではなかった。

それでも、これらのパッケージのメンテナンスをすることにしたのは Ruby のバージョンアップ後に依存関係が壊れたパッケージが残るのは利用者にとって良くないと考えていたからで、必要なタイミングで都度更新していた。

一方で、最近は「実際にこれらのパッケージはどれくらい利用されているのだろうか」と考えるようになった。*1

自分は追加の gem が必要になれば gem install を使って導入しており、Cygwin のパッケージとしてインストールすることはない。

おそらく、多くの Ruby 利用者も同じような運用をしているのではないかと思っている。

もちろん、これは自分の推測にすぎないため、利用実態については ML でも意見を伺いたいという形で相談している。

実際に保守コストの懸念は大きい。

gem 自体や依存ライブラリが長期間更新されていないものも多い。

そうした gem は新しい Ruby や依存ライブラリとの組み合わせでビルドに失敗したり、パッケージングがうまくいかなくなった場合には原因調査や修正の必要がある。

例えば ruby-zoom の upstream の最終更新は 2015 年で、依存している yaz も 2018 年以降更新されていない。

cygwin.com

cygwin.com

更新が止まっていること自体は仕方ないが、それゆえに upstream に期待できず、こちらで対応することになる。

RubyKaigi 2026 では「がんばるぞい」と言っていたものの、実際には Ruby 4.0 系への対応 (ビルドではなくパッケージ周りの課題の解決) もまだできていない。

まずは Ruby 本体のパッケージを何とかしたいというのが今の率直な気持ちである。

ちなみにこれは「今すぐすべての gem ベースのパッケージのメンテナンスをやめたい」ということではなく、ベストエフォートで対応していきたいと考えている。

*1:Cygwin パッケージは mirror 経由で世界中に配布されるため、具体的なダウンロード数を計測する方法は今のところはない。