Project

General

Profile

=begin
= Ruby 1.8 Branch Policy

※正式な文書は英語版です。

== ブランチマネージャ
各ブランチの管理は、それぞれ選任されたブランチマネージャが
執り行う。適宜、相互に協議を行うものとする。

変更に関してコミッター同士の議論が解決を見ない場合、該当の
ブランチマネージャがこれを調停する。

ブランチマネージャは、いかなる変更についても即時の巻戻しを
コミッターに要請、または執行できる。

ブランチマネージャは、ブランチの凍結および解除を宣言できる。
凍結中は、原則としてすべてのコミットはブランチマネージャの
事前の許可を得て行うものとする。

== ブランチの概要
stable ブランチは広範な一般利用に適したコードベースの醸成を
目標とし、安定性および同一ブランチ内における上位互換性を高い
水準で維持しつつ、性能改善や機能追加による実用性の向上を図る
系列と位置づける。

脆弱性への対応についてはこれを最優先し、セキュリティチーム
および他のブランチマネージャと連携の上迅速に行う。

== コミッター
コミッターは、自らの裁量のもと、本規約各項に従う範囲において、
原則として個別の許可を得ることなくコミットを行うことができる。

コミッターは、コミッター同士の円滑な共同作業のため、 stable
ブランチにおいてはどの時点でもビルドおよびテストが通るよう、
極力アトミックに変更をコミットするものとする。

== リリースと保守期間
品質管理と利用促進を目的として、一定期間ごとにリリースを行う。
スケジュールの調整、リリース後の保守等については、他のブランチ
マネージャと適宜協議を行う。

stable ブランチ自体は、原則として2系列までは並行して保守する。
(1.8以降)

== リリースブランチの管理
新しいリリースの準備に入る際、ブランチマネージャは stable
ブランチを分岐させ、凍結されたリリース用ブランチを作成する。

ブランチマネージャが同リリースブランチからリリースタグを打つ
とともにリリースが宣言され、以後、同リリースブランチの管理は
別途任命されたリリースブランチマネージャに委譲される。

== 互換性の維持
上位互換性は原則として維持する。ソースレベルの互換性には最大限
配慮し、バイナリ互換性についても極力配慮する。

ただし、以下の条件をすべてを満たす変更については例外とする。
(1) ドキュメントと矛盾する挙動、非公開の内部インターフェース、
ドキュメントに未記載の機能、未定義動作、または誤用濫用の類と
認められる用法にのみ影響するものであること。
(2) 新しい挙動が次期メジャーバージョンのRubyで再変更されたり、
矛盾したりすることがないこと。
(3) その変更が気づきにくい形で影響を及ぼすと思われる場合、
既存コードの修正箇所の検知方法やツールの類が提供されること。
(4) 公の場で十分に検討、議論され、ブランチマネージャの許可を
得ていること。
(5) ChangeLogやNEWSで速やかにアナウンス、ドキュメントされること。

== 事前の評価
変更のコミットにあたっては、事前に trunk 等の開発ブランチに
適用の上、十分な評価を行っておくものとする。

ただし、以下については例外とする。
(1) stable ブランチ固有の変更で、 trunk には適用できないもの。
(2) 脆弱性への対応など、緊急性の高いもの。
(3) その他、ブランチマネージャの許可を得たもの。

== 機能の追加
既存ライブラリやクラスへの機能追加については、以下の各条件を
満たす場合に認められる。
(1) ブランチの凍結期間外であること。
(2) 「互換性の維持」項の主旨を念頭に、インターフェースが慎重に
設計、評価されていること。
(3) 「事前の評価」項の主旨を念頭に、実装が十分に評価されている
こと。

== ライブラリの追加
新しいライブラリの追加については、以下の各条件を満たす場合に
認められる。
(1) ブランチの凍結期間外であること。
(2) 「互換性の維持」項の主旨を念頭に、インターフェースが慎重に
設計、評価されていること。
(3) 「事前の評価」項の主旨を念頭に、実装が十分に評価されている
こと。
(4) ライブラリの権利保持者の事前の許可を得ていること。
(5) ブランチマネージャの事前の許可を得ていること。

= ユーザ向けの説明

  • stable ブランチは、安定版のポイントリリースの準備を行うための、
    準開発ブランチです。開発方針は「ブランチの概要」項等を参照。

  • スナップショットについては、プロダクション品質は保証されません。
    よってシビアな用途、プロダクション環境での利用は推奨しません。
    そうした用途にはリリース(ブランチ)をどうぞ。

  • 次期安定版に向けた機能追加や性能向上を試したいというユーザは、
    ぜひ使ってみて、問題点を見つけたらフィードバックしてください。
    =end