セマンティックバージョニングに従いバージョン番号を管理するのが理想が、実態はFAILS.FEATURE.BUGSである。

2021年の投稿だけど、同僚にReactのuseQuery周りの挙動や更新点について教えてもらったときに、Breaking React Query’s API on purposeとそこで引用されているFAILS.FEATURE.BUGSネタを教えてもらった。

記事はuseQueryコールバックを例に良くないAPIを説明している。わざと主語を広くしてまとめると、以下のような主張

  • インパクトのある更新もマイナーアップデートに入っている
  • ではメジャーアップデートとは? 多くはAPI設計の失敗に由来する後方互換性の打ち切り
  • API設計の失敗とは? 意図しない使われ方が多くのバグの原因となっていることである

実際、APIの失敗を認めて修正案をまとめ、後方互換性を切っていいかの確認をし、かつマーケティング的にインパクトを出しながらメジャーアップデートするのはかなり大変。

受け入れ側も、マイナーアップデートだからと言って後方互換性が維持されているなんて誰も信じていない(要出展)。最近、YYMM.PATCHみたいな日付型のバージョンニングが増えている気がするけど、バージョンニング管理を雑にしてもあまり負の影響がなさそうだからだろうか。

結論、MAJORアップデートは気合い