Semantic Versioning ဆိုတာ
Software တွေဟာ များသောအားဖြင့် bug fixes တွေ feature အသစ်တွေ နောက်ဆုံး complete rewrite တွေပြန်လုပ်ပြီး အမြဲ update တွေထွက်လာတယ်။ Software ရေးရင်လဲ များသောအားဖြင့် update လုပ်နေရတယ်။
Application တွေစရေးတုန်းက update ပေးတဲ့အခါ 1, 2, 3 ဆိုပြီးတိုးသွားတာပေါ့။ နောက်ပိုင်း 1.1, 1.2 ဆိုပြီးလုပ်ပေမဲ့ version code မှာတော့ 1, 2, 3 ပဲလုပ်တာပေါ့။ အဲ့ဒါတွေကဘာဖြစ်လာလဲဆိုတော့ consistant မဖြစ် မှတ်ရခက်ပြီး version တစ်ခုနဲ့တစ်ခုဘာကွာလဲဆိုရင် အလွယ်တကူ စဉ်းစားလို့မရပဲ documentation ပြန်ကြည့်ရတာမျိုးတွေ ကြုံရတာပေါ့။
Semantic Versioning ကတော့ ဒီလို version ကိုဘယ်လိုပေးရမှန်းမသိတဲ့ ပြဿနာတွေကို ရှင်းပေးတဲ့ version standard တစ်ခုပါ။ မလိုက်နာလဲ ဘာမှမဖြစ်ပါဘူး။ ဒါပေမဲ့ လိုက်နာရင်တော့ ပိုသပ်ရပ်တာပေါ့။ semantic versioning ကို major, minor, patch ဆိုပြီး အဓိက ၃ ပိုင်းခွဲထားတယ်။ “1.4.2” ဆိုတဲ့ version မှာ major က 1, minor က 4, patch က 2 ပေါ့။
Patch
အရင်ဆုံး patch ကနေစကြည့်ရအောင် ကိုယ့် app ကို 1.0.0 ဆိုပြီး release လုပ်လိုက်ပြီဆိုပါဆို့ bug တွေတွေ့လို့ ပြင်ပြီး update ပေးတဲ့အခါ 1.0.1 ဆိုပြီး ပေးရပါမယ်။ 1.0.0 နဲ့ပဲထပ်မထုတ်ရဘူး။ မတူတဲ့ software နှစ်ခုဟာ version တစ်ခုထဲမရှိရဘူး။ အဲ့ 1.0.1 မှာပါ bug ပါသွားလို့ ထပ်ထုတ်မယ်ဆိုရင် 1.0.11 ဒါမှမဟုတ် 1.0.2 ဆိုပြီး အသစ်ထပ်ပေးရမယ်။ အဲ့တော့ patch ဆိုတာ bug fix လိုမျိုး မသိမသာ သေးသေးလေးတွေပြောင်းသွားတဲ့အခါ သုံးတယ်။
Minor
Minor ကတော့ feature အသစ်ထပ်ထည့်ထားမျိုးမှာသုံးပါတယ်။ Minor ပြောင်းရင် အရင် version ကလဲ support ဖြစ်ရမယ်။ ဥပမာ 1.0.0 နဲ့ 1.1.0 ဟာ နှစ်ခုလုံးအလုပ်လုပ်ရပါမယ်။ bug fix လောက်လဲမသေး သိသိသာသာလဲမပြောင်းတာမျိုးဆို minor ကိုပဲ ပြောင်းပြီး update ထုတ်ပေးရပါမယ်။
Major
အရင် version တွေကို deprecate လုပ်ချင်ရင် ဒါမှမဟုတ် ကြီးကြီမားမားပြောင်းချင်ရင် major အပြောင်းအလဲလုပ်တယ်လို့ခေါ်ပါတယ်။ major ပြောင်းဖို့က နှစ်နဲ့ချီကြာတတ်ပါတယ်။ ဥပမာ ကိုယ့် Application က Android version အဟောင်းတွေကို support မလုပ်ချင်တော့ဘူးဆိုရင် major ပြောင်းပြီးထုတ်လို့ရပါတယ်။ 3.0.0 က Android KitKat ကို support လုပ်ပြီး 4.0.0 သုံးချင်ရင်တော့ အနည်းဆုံး Lollipop မှရမယ်ဆိုတာမျိုးလုပ်လို့ရပါတယ်။
ဒီလောက်ဆိုရင်တော့ semantic versioning အခြေခံကို သဘောပေါက်လောက်ပြီထင်ပါတယ်။ alpha, beta, rc အစရှိတာတွေကိုပေးချင်ရင် 1.0.0-alpha.1 အစရှိတာမျိုးပေးလို့ရပါသေးတယ် အသေးစိတ်သိချင်ရင် semver.org မှာသွားဖတ်နိုင်ပါတယ်