バージョン番号の付け方
バージョン同士をどのように比較するのかは優先度によって決まります。優先度はメジャー、マイナー、パッチ、プレリリース識別子の順番(ビルドメタデータは優先度に関して考慮しない)で分けて評価されなければなりません(MUST)。優先度は、各識別…semver.org
このセマンティック バージョニングはライブラリの場合はとても良いのだけれど、パッケージ製品に採用するにはずーっとしっくり来なかった。
割り切ってしまえば、ひたすらメジャーバージョンアップだけ上げていったっていいわけで、だとしたらあまりバージョン番号は関係ないなと。
もっとシンプルなのは無いのだろうかと模索していたのだが、結構身近に YY.MM.patch というバージョン番号を付けている Ubuntu というのがあった。
Ubuntu は 16.04.1 のように年と月そしてセキュリティパッチという形でバージョニングをしている。これとてもわかりやすい。Ubuntu の場合は 04 と10 しか月がないが、年に 12 回しか多くてもリリースがないというのはシンプルだ。
ejabberd is a robust, massively scalable and extensible XMPP server.www.ejabberd.im
ejabberd は Erlang/OTP で書かれた XMPP サーバだが、あるタイミングで YY.MM というバージョンを採用した。ぱっとみシンプルだと自分は感じた。
いつリリースされたのかが一目見てわかること、毎月最大 1 回しかリリースタイミングが無いこと、API 互換とかを意識すること無くバージョンをふれることがある。もちろん下位互換性を適当にしろという意味では無い。
時雨堂の WebRTC SFU Sora は現時点で 3.2.5 (内部リリース含む) だが、今年(2016) の年末にリリースするバージョンから 16.12 というバージョンに変更する予定だ。その後 2017 年 03 月にリリースした場合は 17.03 といったリリースバージョンになる。
バグ修正などは 17.03.1 といった形でリリースする。
リリースする人がバージョンを考えなくて良いのはとても楽だ。シンプルだと思っている。ただメジャーバージョンアップ!というアピールがしにくいのが欠点といったら欠点かもしれない。