セマンティックバージョニングに従いバージョン番号を管理するのが理想が、実態はFAILS.FEATURE.BUGS
である。
Absolutely. The thing about semver major version numbers are that they don't mean new stuff, they're a permanent reminder of how many times you got the API wrong. Semver doesn't mean MAJOR.MINOR.PATCH, it means FAILS.FEATURES.BUGS
— Will McGugan (@willmcgugan) August 6, 2021
2021年の投稿だけど、同僚にReactのuseQuery
周りの挙動や更新点について教えてもらったときに、Breaking React Query’s API on purposeとそこで引用されているFAILS.FEATURE.BUGS
ネタを教えてもらった。
記事はuseQuery
コールバックを例に良くないAPIを説明している。わざと主語を広くしてまとめると、以下のような主張
- インパクトのある更新もマイナーアップデートに入っている
- ではメジャーアップデートとは? 多くはAPI設計の失敗に由来する後方互換性の打ち切り
- API設計の失敗とは? 意図しない使われ方が多くのバグの原因となっていることである
実際、APIの失敗を認めて修正案をまとめ、後方互換性を切っていいかの確認をし、かつマーケティング的にインパクトを出しながらメジャーアップデートするのはかなり大変。
受け入れ側も、マイナーアップデートだからと言って後方互換性が維持されているなんて誰も信じていない(要出展)。最近、YYMM.PATCH
みたいな日付型のバージョンニングが増えている気がするけど、バージョンニング管理を雑にしてもあまり負の影響がなさそうだからだろうか。
結論、MAJORアップデートは気合い