程式版本號碼

如大家有留意,最近香港天晴的更新將版本編號由 v1.16.1 變成 v17 。為何由 v1 一口氣跳到 v17 呢?或者說,為什麼將前面的 v1 拿走?其實每次程式出新版本,都會面對一個問題,就是此版本的編號應該是什麼呢?

之前一直使用 Semantic Versioning, 即

MAJOR.MINOR.PATCH 。

規則約略如下:

  1. 如有重大改變 (如 API 改動) ,即 MAJOR + 1
  2. 如只是功能改動,即 MINOR +1
  3. 如只是 bug fix,即 PATCH +1

以「香港天晴」為例,之前是 v1.16.1,可以看出沒有重大改動,而功能變更則為 16 次。

其實使用此此法沒什麼不便,不過一直覺得很長很累贅。有時也實在決定不了怎樣才算是大改動,如「香港天晴」 v1.2 時加入 Widget 支持,算是 major 還是 minor 功能?可以說是重大變更,但也可以說是功能強化而已。結果現在出了 40 多個版本,版本編號還停留在 v1.16.1,感覺 major no. 變得沒什麼用。

直至最近讀到這篇文章,其中關於 application versioning 的部份令我深有同感,就是對用家來說,只有最前的 major no. 是重要的,點數後的數字不太理會。 你不覺得 v16 比 v1.16 容易記一點嗎? 另外文章作者也不是用有沒有重大改動決定 major + 1,而是以有沒有用家視覺上看得到的改變來決定的,則是如果程式加了一個 text box,major no 就要 + 1。

讀完後決定將 app 的版本編號改為

MAJOR.MINOR

並用以下規則:

  1. 如視覺上有變動,則 major + 1
  2. 如用家看不到的變動,如修正臭蟲或優化處理,則只是 minor + 1

這樣決定 version no. 會比較簡單,也不會令 version no. 太長,感覺不錯。