Bir uygulamanın güncelleme ekranında "3.14.2 sürümünden 4.0.0 sürümüne geçiliyor" yazısını gördüğünüzde içinizde bir tedirginlik oluşuyorsa, bu his boşuna değil. Bu üç sayı rastgele artmıyor; her biri geliştiricinin size verdiği bir mesaj taşıyor. Doğru okuduğunuzda hangi güncellemeyi gözü kapalı kurabileceğinizi, hangisinden önce yedek almanız gerektiğini anlarsınız.
Bu format, yaygın olarak semver sürüm numarası (semantic versioning, anlamsal sürümleme) olarak biliniyor. Soldan sağa üç bölümü var:
Mantık şu: sayı ne kadar soldaysa, değişiklik o kadar köklü. Ayrıca soldaki bir sayı arttığında sağındakiler sıfırlanır. Yani 2.7.4'ten sonra gelen büyük sürüm 3.0.0 olur, 3.7.4 olmaz. Bu yüzden sonu ".0.0" ile biten sürümleri gördüğünüzde "burada bir şey değişti" diye düşünmeniz doğrudur.
Hayır, gelmesi zorunlu değil. Bu sayılar ondalık sayı değil, birbirinden bağımsız tam sayılardır. 1.9.0'dan sonra pekâlâ 1.10.0 gelebilir ve 1.10.0, 1.9.0'dan yenidir. Sürümleri metin olarak sıralayan sistemlerin en klasik hatası da budur: alfabetik sıralamada "1.10" ile "1.9" karşılaştırıldığında yanlış sonuç çıkar. Sürüm karşılaştırırken her bölümü ayrı ayrı sayı olarak düşünün.
MAJOR.MINOR.PATCH'ten sonra tireyle eklenen kısım, sürümün henüz kararlı sayılmadığını söyler. Bunlara ön yayın etiketi denir ve şu sırayı izler:
Kural olarak 1.4.0-beta.2 sürümü, 1.4.0'dan önce gelir. Yani ön yayın etiketi olan bir sürüm, aynı numaranın kararlı hâlinden daha eskidir. Bir de + işaretiyle eklenen derleme bilgisi vardır (örneğin 1.4.0+20240115); bu kısım sürüm sıralamasını etkilemez, sadece hangi derlemenin kullanıldığını gösterir.
Evet, ve bu çok gözden kaçar. 0.x.y sürümleri "henüz kararlı değil" anlamına gelir. Bu aşamada geliştirici, MINOR artışıyla bile uyumluluğu bozabilir. 0.8'den 0.9'a geçen bir kütüphane, sizin kodunuzu tamamen bozabilir ve bu semver kurallarına aykırı değildir. Bu yüzden üretim ortamında 0.x sürümlerine bağlanırken sürümü sabitlemek gerekir.
Pratik bir risk tablosu:
| Değişen bölüm | Örnek | Risk | Ne yapmalı |
|---|---|---|---|
| PATCH | 2.3.1 → 2.3.2 | Düşük | Hemen kurun, özellikle güvenlik notu varsa |
| MINOR | 2.3.1 → 2.4.0 | Orta | Sürüm notlarına göz atın, kurun |
| MAJOR | 2.3.1 → 3.0.0 | Yüksek | Yedek alın, eklentileri kontrol edin, mümkünse bekleyin |
| Ön yayın | 3.0.0-beta.1 | Yüksek | Sadece test makinesinde |
MAJOR güncellemelerde en sık yaşanan sıkıntı yazılımın kendisi değil, çevresidir: eklentiler, temalar, entegrasyonlar. Ana program yeni sürüme geçer, eklenti geliştiricisi henüz uyum sağlamamıştır. Bu yüzden büyük sürüm atlamalarında bir-iki hafta beklemek çoğu zaman en akıllı hamledir; bu arada ilk kullanıcıların bildirdiği sorunlar düzeltilir. Güncelleme öncesi yedek alma, geri dönüş planı çıkarma ve ayar dosyalarını kopyalama adımlarını sitedeki güncellemelere hazırlık rehberinde daha ayrıntılı bulabilirsiniz.
Paket yöneticisi kullanıyorsanız bağımlılık dosyalarında şu ifadeleri görürsünüz:
Bir projede beklenmedik şekilde bir şey bozulduysa ve "hiçbir şeye dokunmadım" diyorsanız, muhtemelen bu işaretlerden biri arka planda bir MINOR yükseltmesine izin vermiştir. Kilit dosyalarını (lock file) sürüm kontrolüne eklemenin sebebi tam olarak budur.
Ne yazık ki hayır. Bazı yazılımlar tarih tabanlı sürümleme kullanır (örneğin 24.04 gibi, yıl ve ay), bazıları pazarlama amacıyla numarayı büyük atlamalar