Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rubyの安定版を保守する意義 / Why we maintain stable versio...

usa
July 17, 2020

Rubyの安定版を保守する意義 / Why we maintain stable versions of Ruby?

2020年7月17日 Ruby Association Activity Report

Rubyアソシエーションの「Ruby安定版保守事業」について、担当者からその内容と目的を紹介したものです。

usa

July 17, 2020
Tweet

More Decks by usa

Other Decks in Programming

Transcript

  1. Rubyの開発プロセス 3 • master (trunk) ◦ 開発陣が日々いじっているところ • 毎年クリスマスにここから新しいブランチが生えて新バージョンがリリースされる ◦

    2018年12月25日 ruby_2_6 2.6.0 ◦ 2019年12月25日 ruby_2_7 2.7.0 ◦ 2020年12月XX日 ruby_3_0 3.0.0 ……? • ここ数年はリリースマネージャは成瀬さん
  2. 安定版ブランチ ruby_2_5 (2017年12月~2021年3月(予定)) • 最新リリースは Ruby 2.5.8 • リリースマネージャはusa •

    セキュリティメンテナンスブランチ ◦ 単なるバグの修正も入れない ◦ 原則としてセキュリティ問題であると判断された変更のみバックポート 7
  3. 安定版ブランチ • 2019年12月:masterからruby_2_7ブランチが切られてRuby 2.7.0がリリース • 2020年3月末:ruby_2_4ブランチがEoL • 2020年4月:ruby_2_7の担当が成瀬さんからnagachikaさんに引き継ぎ       ruby_2_6の担当がnagachikaさんからusaに引き継ぎ

          ruby_2_5がセキュリティメンテナンスフェーズに移行 (担当usaのまま) • ここ数年はだいたいこんな感じ • なので、常に3本の安定版ブランチが維持されている (12月~3月は4本) 8
  4. Ruby安定版保守事業 • 1番目(現ruby_2_7) ◦ masterからのパッチは分岐から間がないのでだいたいそのままあたる ◦ 単なるバグだけでなく、仕様的変更もままある • 2番目(現ruby_2_6) ◦

    masterからのパッチは簡単にはあたらなくなってくる (体感で50%くらい) ▪ 場合によっては同じ趣旨の変更の再実装もなくはない ◦ 基本的にはバグ対応のバックポートのみなので面白味はあまりない • 3番目(現ruby_2_5) ◦ masterからのパッチはほぼあたらない ◦ そもそもセキュリティ対応の頻度自体が極めて低い 12
  5. 安定版の保守が必要な裏の理由 • masterに新機能をぶちこむため ◦ 互換性はとても大事、わかる ◦ でも、言語を進化させていくためには、時として互換性の破壊も必要 ◦ 毎年互換性が破壊されるとユーザーはついてこれない •

    安定版があると、ユーザーは毎年互換性破壊を伴いうる Rubyのバージョン切り替えを強い られることがなくなる ◦ 1年ごと or 2年ごと or 3年ごと を自分のペースで選べる • それが担保されていれば、安心して masterで互換性を破壊できる……かも? 15
  6. 安定版保守の課題 • 古いバージョンの存在がユーザーの新機能の利用を阻害しうる ◦ アプリケーション開発者は、自分が使う Rubyバージョンに合わせたコードを書けばい いのであまり問題はない ◦ ライブラリ開発者は、基本的に今生きている全ての Rubyバージョンで動くように書く必

    要がある ▪ 「面倒だから古いバージョンで動かなくてもいいか」 • 前方互換性がない変更をmasterに入れにくくなる ▪ 「面倒だから新しいバージョンで動かなくてもいいか」 • ユーザーが古いバージョンにとどまってしまう • コミュニティ分断 (c.f. Ruby 1.8→1.9、Python2→Python3) 18