あきネット

フリーソフトウェアやオープンソースをはじめ、コンピューターやインターネットに関するTIPSや話題を扱います

北のまちから南のまちへと素敵な何かを届けます。
それは、六花かもしれないし、ナナカマドの実かもしれないし、雪の下キャベツかもしれません。

バージョンの付け方は作者によってバラバラ

ソフトウェアのバージョン番号の付け方は、
ソフトウェアによってマチマチで、各作者のポリシーなどで勝手に決まっています。


制作周期によるバージョニング


例えば Linux カーネルのバージョン番号にはあまり意味がありません
Linux カーネルは、制作スケジュールのほうが先に決まっていて、8週間程度に1回リリースします。
関わっている人数が多く、「これを追加したい」とか「このバグを直したい」とかいう案があちらこちらから上がってきます。
ですので、リリース周期に合わせて「マージウインドウ」を開け、期間中に提出されたものについて、8週間程度のあいだテストし必要な修正を加えて、リリースします。
期間がおよそ決まっていて、バージョンアップの内容はあとからついてきます。
よって、Linux のバージョン番号は、例えば 4.18.13 というバージョン番号であっても、メジャー番号の 4 には特に意味がありません。リリース時には 4.18.0 で、バグフィックス等の変更をあとで加えるごとに3つめの数字が1つ上がり、13回変更すれば 4.18.13 となります。


商品名としてのバージョニング


例えば、 Windows 10 は商品名で、10 というバージョンはビジネス目的で付いています。
ソフトウェア内部のバージョン番号は別の番号が付いています
Windows 95、Windows 98、Windows 2000、Windows MEとかいうのは、発売年に合わせて付けたもので、ソフトウェアの内部構造の問題ではなく、ビジネス目的でこの商品名にしました、というわけです。
Windows 7、Windows 8というのは、いくらかは、内部のソフトウェアのバージョン番号と関係はあるものの、一致はしていません。例えば Windows 7 は、内部的には Windows NT 6.1 です(Vista が 6.0 だったから、内部は 6.1 だけど 商品名は 7 にした)。
商品として「アップグレードしましたよ」という売りにしたいだけのことです。


Windows には 9 がありませんが、ライバルの MacOS が X (テン)になっていたのに対抗したということが大きいです。


MacOS は 9 の時代がとても長かったのですが、X になって内部が完全に換わりました。
MacOS 9 は自社オリジナルでしたが、MacOS X は FreeBSD を流用しています。
Mac は、9 から 10 になると全くの別物になったわけです。


セマンティック バージョニング

バージョン番号の付け方の標準に類するものとして、"Semantic Versioning"があります。
フリーソフトウェア、オープンソースソフトウェアをはじめ、いくらかのソフトウェアは、セマンティックバージョニングに基づいています。


バージョンナンバーは、メジャー.マイナー.パッチとし、バージョンを上げるには、


1. APIの変更に互換性のない場合はメジャーバージョンを、

2. 後方互換性があり機能性を追加した場合はマイナーバージョンを、

3. 後方互換性を伴うバグ修正をした場合はパッチバージョンを上げます。


互換性の有無でメジャーバージョンアップか、マイナーバージョンアップかが決まります。
機能と関係ないバグ修正は、3つめのパッチ番号だけを上げます。


「API の変更」というのは、ざっくり言うと、そのソフトウェアの使い方自体が変わるということです。


アプリケーションソフトウェアだと人が直接操作することもあるでしょうが、
多くのソフトウェアはソフトウェア同士で協調して動きます。
ところが、APIが変わると、そのソフトウェアを使うほかのソフトウェアとのコミュニケーションに支障が出ることがあるわけです。


セマンティックバージョニングを採用すれば、どの番号が上がったかによって、互換性がありそうかなさそうか、機能に影響がありそうかなさそうか、が見てわかります。
メジャーバージョンアップだったら、「これは大々的に手直ししないといけない」という注意喚起になるわけです。


そうすると、ユーザや管理者や、ほかのソフトウェアの作者などにとって、対応しやすいのです。


例えば 俗には単に「Linux」と呼ばれている OS である GNU/Linux ですが(GNU というOSの、カーネルを Linux に変更した OS です)、
多くのソフトウェアをセットにして OS として使えるようにした「ディストリビューション」のかたちで配布されています。例えば Debian とか、 Fedora とか、Ubuntu とか、Slackware とか。
ディストリビューションの作者にとって、セマンティックバージョニングにしてくれたほうがラクです。「このバージョンアップは、ほかのソフトウェアパッケージの対応が必要そうかな?」とか推測が立つからですね。


NetBSD、FreeBSD、OpenBSD といった BSD 系の OS にしても、オープンソースソフトウェアの集合体ですので、OS の制作者達にとってとっても便宜です。


セマンティックバージョンをガン無視のフリーソフトウェアもあります。
例えば Systemd とか Less とか、ひとつの数字をひたすら上げ続けるだけなので、番号に全く意味がありません。(Systemd に関しては、迷惑と言わざるをえません。)



ですが、セマンティックバージョニングは、前記のように Linux の制作手法からすると無意味、全然関係ありません。Linux は、セマンティックバージョニングを採用するのは無理なんだろうなあと思います。


ビジネスがさきにありきの、Windows であれ、一太郎だとか弥生会計だとか、VOCALOIDとかもそうですが、商品名にセマンティックバージョニングが出てくるなんてことはまず期待しないほうがいいでしょう。
たとい内部バージョンではそういうことをしていても、商品名にはまず出てこないでしょう。
とりわけ、アプリケーションソフトウェアや、エンドユーザの操作感が問題になるようなソフトウェアでは、API互換性の有無がどうとかいうのは二の次でしょう。弥生会計とかなんて、税制改正が、とか、法令改正が、とかいうほうが問題です😁


そういうわけで、ソフトウェアのバージョン番号の付け方は、あんまりアテにならないよ、って話です。