依存しているもののメジャー・バージョンアップ

自身のライブラリーなどにおける依存しているものがSemantic Versioningで言うところのメジャー・バージョンアップした場合、APIに互換性のない変更が加えられたということなので、動作を確認して自身のライブラリーもバージョンアップする必要がある。多くの場合、パッチ・バージョンアップで十分だが、互換性のない変更が加わったAPIを透過的に使っていた場合にどうすれば良いのかよくわからなくなった。

透過的に使っていたAPIに互換性のない変更が加わっているということは、ユーザーがライブラリーを使う方法に互換性のない変更が加わるということになる。仮にこれが依存しているものの変更でないとすると、当然メジャー・バージョンアップすべき変更ということになる。

しかしこういった場合にメジャー・バージョンアップするとすると、最悪の場合依存しているもののメジャー・バージョンアップごとに自身のライブラリーもメジャー・バージョンアップしなくてはならなくなる。自身のライブラリーにおける変更は少ないか全くないにも関わらず、だ。これはフラストレーションが溜まりそうな予感しかない。

このどちらの観点でSemantic Versioningのバージョンアップを行うかということになる。後者を重視した方がユーザーに優しいと言えるが、後に首を絞めることになりそうだ。


PostCSS v3でSource Mapがデフォルトでインラインに埋め込まれるようになった影響で、自分で作っているCSSWringやCSS MQPackerの使い方に互換性のない変更が加わることとなった。この際にこういった疑問を持ったわけだが、まだ自分の中ですら結論は出ていない。

とりあえずバージョンは上げると戻せないので、上げないと思う。後ろ向きな理由だ。