Electronの現在のバージョン番号は1.8.2
ですが、次回のChromiumバージョンアップよりメジャーバージョンがインクリメントされ2.0.0
となり、さらにバージョニングポリシーが変更されます。現状のバージョニングの問題点と2.0.0
以降のバージョニングポリシーがどのようになるのかを説明していきます。
目次
Electron 1.x.x 以前の問題点
Electronは正式版の1系となってから、マイナーバージョンをChromiumやNode.jsのバージョンアップとして、パッチバージョンをバグ修正や機能追加に利用してきました。しかしその場合、以下の様な問題が発生します:
- ある特定のバグに対するパッチを適用する為にバージョンアップしたいのに機能追加に起因する別の問題が発生して上げられない
- Node.jsで問題が出た場合にバージョンアップしたいがChromiumまでバージョンアップしまい、別の問題が発生する為上げられない
実際に関わっているElectronプロジェクトではNode.jsの不具合は解消したいのにChromiumを上げることで別の問題が発生してしまう為1.6系でバージョンアップが滞っています。
Electron 2.0.0以降のバージョニングポリシー
Electronはこの問題を認識していたようで、2.0.0よりバージョニングポリシーが以下の様に変更される様です。
バージョンの種類 | バージョンインクリメントの意味 |
メジャーバージョン | API互換性のないメジャーバージョンアップ
|
マイナーバージョン | API互換性のあるバージョンアップ
|
パッチバージョン | APIの変更がないバグ修正・リファクタリング
|
この変更によって、Node.jsのマイナーバージョンとChromiumのパッチバージョンがメジャーバージョンに影響されること無くバージョンアップ出来る様になり、バックポートも容易になると予想されます。
また、npmモジュールでelectronをインストールした際にpackage.jsonにデフォルトで指定されるバージョン指定:
"devDependencies": {
"electron": "^1.8.2"
}
における^
(キャレット)は一番左の0以外のバージョンは変えない、つまり"electron": ">=1.8.2 <2.0.0"
と同義で、npmモジュールをアップデートした場合でもメジャーバージョンは明示的に指定しないと互換性のあるマイナーバージョンまでしかアップデートせず、また、キャレットを"~1.8.2"
のように~
(チルダ)に変更すれば"electron": ">=1.8.2 <1.9.0"
と同義でパッチバージョンのみのバージョンアップを許容とすることも出来るので、安全にパッケージ管理出来るとElectronは考えた様です。
良い改善だと思います:)