ソフトウェアライフライクル
Overview
このドキュメントではBitcoin CoreプロジェクトによりリリースされるBitcoin Coreソフトウェアパッケージのライフサイクルについて説明します。このライフサイクルは商用ソフトウェアの標準的なメンテナンスポリシーに沿っています。
バージョン管理
Bitcoin CoreはMAJOR.MINORという形式でバージョン管理され、その後ろにrc1、rc2などのリリース候補が付きます。
メジャーリリース
私達は6〜7ヶ月毎のメジャーリリースを目指しています。
メジャーリリースには、22.0、23.0といった番号が付けられます。
メンテナンスリリース
メジャーリリースのバグを修正するメンテンナンスの「マイナーリリース」を提供します。一般的なルールとして、メンテナンスリリースでは(コンセンサスルールを除いて)重要な新しい機能を導入していません。ただし、必要に応じてマイナーな機能を追加したり、ソフトフォークなどによるコンセンサスルールの変更をバックポートすることがあります。
マイナーリリースには、22.1、22.2、23.1、23.2といった番号が付けられます。
コンセンサスルール
コンセンサスルールを変更する提案は、常に22.2、23.1などのメンテナンスバージョンでリリースされます。これにより、メジャーリリースに比べてチェンジセットが少なくなるため、エンタープライズユーザーにとって提案の評価とテストが容易になります。またより慎重なアップデートパスをとるユーザーにとっては、コンセンサスルールの変更をより適切な時期に採用することができるようになります。
メンテナンス期間
私達はメジャーバージョンを「メンテナンス終了日」までメンテナンスします。通常、現在およびその1つ前のメジャーリリースをメンテナンスします。 例えば現在のリリースが23.0の場合、22.0もメンテナンスされているとみなされます。 24.0がリリースされると、22.0はメンテナンス終了とみなされます。 メジャーリリースが古くなると、バックポートするための問題がますます重要になり、新しいマイナーリリースを保証するためにには、問題の量や深刻度が増すことになります。 ソフトウェアが「メンテナンス終了日」に達すると、EOLの日付まで重大セキュリティの修正が適用されます。 EOL後は、セキュリティアップデートを受けるには、コミュニティが重要な問題の修正をベストエフォートで提供したとしても、ユーザーは新しいバージョンにアップグレードしセキュリティアップデートを受け取る必要があります。 一般的に、現在のバージョンもしくは1つ前のバージョンの最新のメンテナンスリリース(ポイントリリース)の実行を推奨します。
マイナーバージョンにはバグ修正、翻訳の更新、およびソフトフォークがあります。Transifexの翻訳は最新の2つのメジャーバージョンのみ受け付けています。
例えば、メジャーバージョン22.0は2021-09-13にリリースされ、メンテナンス修正(ポイントリリース)は2022-11-15まで提供されました。 重大なセキュリティ問題は、2024-04-01のEOLの日付までは引き続き修正されます。 ただし、それ以外のバグ修正を利用するにはその後のメジャーバージョンにアップグレードする必要があります。
スケジュール
EOLを迎えると、新しいバージョンにアップグレードする必要があります。
バージョン | リリース日 | メンテナンス終了日 | EOL |
---|---|---|---|
29.x | TBA* | after v31.0 | after v32.0 |
28.x | 2024-10-02 | after v30.0 | after v31.0 |
27.x | 2024-04-16 | after v29.0 | after v30.0 |
26.x | 2023-12-06 | 2024-10-02 | after v29.0 |
25.x | 2023-05-18 | 2024-04-16 | 2024-10-02 |
24.x | 2022-11-24 | 2023-12-12 | 2024-04-02 |
23.x | 2022-04-25 | 2023-05-18 | 2023-12-01 |
22.x | 2021-09-13 | 2022-12-14 | 2023-04-01 |
0.21.x | 2021-01-15 | 2022-04-25 | 2022-10-01 |
0.20.x | 2020-06-03 | 2021-09-13 | 2022-02-01 |
0.19.x | 2019-11-24 | 2021-01-15 | 2021-08-01 |
0.18.x | 2019-05-02 | 2020-06-03 | 2021-02-01 |
0.17.x | 2018-10-03 | 2019-11-24 | 2020-08-01 |
0.16.x | 2018-02-26 | 2019-05-02 | 2020-02-01 |
0.15.x | 2017-09-15 | 2018-10-03 | 2019-08-01 |
0.14.x | 2017-03-08 | 2018-02-26 | 2019-02-01 |
0.13.x | 2016-08-23 | 2017-09-15 | 2018-08-01 |
0.12.x | 2016-02-23 | 2017-03-31 | 2018-02-28 |
0.11.x | 2015-07-12 | 2016-08-23 | 2017-08-01 |
0.10.x | 2015-02-16 | 2016-02-29 | 2017-02-28 |
0.9.x | 2014-03-19 | 2015-06-16 | 2016-02-28 |
0.8.x | 2013-02-19 | 2014-03-19 | 2015-12-31 |
* 私達は6〜7ヶ月毎にメジャーリリースを目指しています。
TBA: 追って発表されます
プロトコルのバージョン管理
上記の説明はBitcoin Coreのソフトウェアリリースについてのみ説明しています。Bitcoinシステムの他の多くの部分には、それぞれ独自のバージョンが含まれています。例えば:
- 各トランザクションにはバージョン番号が含まれます。
- P2Pネットワークプロトコルはバージョン番号を使って、ノードがサポートする機能を通知できるようにしています。
- Bitcoin Coreの組み込みウォレットは独自の内部バージョン番号があります。
これらのバージョン番号はBitcoin Coreのバージョン番号と意図的に切り離されています。これはBitcoin Coreプロジェクトが(ブロックやトランザクションのように)直接コントロールできなかったり、(ネットワークプロトコルのように)他のプロダクトとの互換性を維持する必要があったり、または(組み込みウォレットのように)いくつかのリリースで大きな変更が行われない可能性があるためです。
コンセンサスプロトコル自体にはバージョン番号はありません。
SemVerとの関係
Bitcoin Coreのソフトウェアのバージョン管理は、SemVerのオプションのバージョン管理標準には準拠していませんが、リリースのバージョン管理は表面的に似ています。SemVerは個人が自分のペースでライブラリのアップグレードを選択したり、変更が気にいらなければ古いリリースのままにしておくこともできる通常のソフトウェアライブラリで使用するよう設計されています。
Bitcoinの一部、特にコンセンサスルールは、そのように機能しません。新しいコンセンサスルールが発効するためには、いくつかのマイナー、フルノードまたはその両方によって強制されなければなりません。また新しいルールが一度発効すると、 新しいルールを知らないソフトウェアは無効なトランザクションを作成したり受け入れたりする可能性があります(ただし、アップグレードは可能な限りこういったことが起こらないよう設計されています)。
このため、Bitcoin Coreはネットワーク全体の導入が必要もしくは望ましいコンセンサスルールの変更やその他の更新についてSemVerから逸脱しています。Bitcoin Coreはこれらの変更をメジャーリリース(x.0
)ではなくメンテナンスリリース(x.y
)としてリリースします。これによりパッチサイズが最小限に抑えられ、できるだけ多くの人がその内容を検査、テストし、展開することが容易になります。また、同じパッチを複数の以前のメジャーリリースにバックポートすることが可能になり、簡単にアップグレードできるユーザー数が増えます。ただ、それを管理するボランティアは必ずしも十分ではありません。