Semantic versioning

Çox istifadə etdiyiniz hansısa proqram təminatı/oyun üçün yeni versiya çıxdığından xəbər tutunca nə edirsiniz? Yeni versiyanı yükləmək? Yoxsa mövcud olanı istifadə etməyə davam etmək? Yəqin ki, ilk öncə versiyasına baxıb, sonra da uyğun görsəniz dəyişiklik loqlarına (change log) göz atırsınız. Məhsulun versiyası istifadəçiyə bir çox halda lazım olan məlumatı verir və lazımsız panikanın qarşısını alır.

Məhsul versiyalandırma proqram təminatı (və oyun) hazırlamağın önəmli aspektlərindəndir. Bu mövzuda da, bir çox digər mövzuda olduğu kimi, fərqli yanaşmalar olsa da, sənayedə qəbul edilən optimal metodologiya semantik versiyalandırmadır (semantic versioning). Bu metodologiyanın müəllifi Gravatarın və GitHubın qurucularından olan Tom Preston-Wernerdir.

Xülasə

“Semantik versiyalandırma” adı naməlum ola bilər, amma işlətdiyimiz əksər məhsullarda bu tip versiyalandırmanı dəfələrlə görmüşük. Məsələn bu post yazılarkən Firefox brauzeri 60.0.2 versiyasındadır, Chrome67.0.3396.87 versiyasında, WordPress isə 4.9.6 versiyasındadır.

Ümumi məntiq çox sadədir: Versiyaları MAJOR.MINOR.PATCH olaraq adlandırırsınız. Mövzuyla əlaqədar olan semver.org səhifəsindəki məlumata əsasən, versiyaları dəyişdirərkən bunlara diqqət etməlisiniz:

  • Əvvəlki API-ın dəstəkləmədiyi dəyişiklik/əlavə edirsinizsə, MAJOR ədədi artırılmalıdır.
  • Əvvəlki API-ın dəstəklədiyi dəyişiklik/əlavə edirsinizsə, MINOR ədədi artırılmalıdır.
  • Xətaları ortadan qaldırırsınızsa (bug-fixes), PATCH ədədi artırılmalıdır.

Firefox misalı üzərindən baxacaq olsaq (60.0.2), brauzer 60-cı əsas versiyasına 2 patch tətbiq edib.

İstifadəyə verilməmiş layihələr

Məsləhətdir ki, istifadəyə verilməmiş layihələri 0.x.y şəklində versiyalandırasınız. Bu istifadəçilərə məhsulda bir çox problem ola biləcəyi haqqında məlumat verəcək və xətalar qarşılarına çıxınca daha normal reaksiya verəcəklər *. İstifadəyə verildiyi anda məhsulu 1.0.0 versiyasına keçirməyiniz məsləhətdir.

Bizim layihələrdə x ədədi oyunun istehsal mərhələsini (milestone) ifadə edir və hər mərhələ 2-3 sprintdən ibarət olur. Oyunun yoxlanış/istifadəyə verilən hər versiyası üçün y ədədini dəyişirik.

Qeyd(lər)

* Bu məqsədlə layihənin adına Alpha (daxili test mərhələsindədirsə) və ya Beta (xarici test mərhələsindədirsə) sözlərini əlavə edə bilərsiniz. Məsələn, War to the Core Beta.

Author

I am founder of DynamicBox Studio, mobile oriented game development studio located in Baku, Azerbaijan. Having spent most of my professional life as Project Engineer, I have utmost interest for data science and game development.