Bir bakışta
- Sürüm numarasındaki her basamak, güncellemenin ne kadar köklü olduğu hakkında ipucu verir.
- SemVer sistemini kullanan yazılımlarda major, minor ve patch değişiklikleri farklı riskler taşır.
- Alfa, beta ve RC etiketleri, sürümün henüz kararlı olmadığını ve dikkatli kullanılması gerektiğini gösterir.
Sürüm Numarası Görünce Aklınıza Ne Gelmeli
Bir uygulama veya işletim sistemi "güncelleme mevcut" diye bildirim gönderdiğinde, ekranda genelde bir sayı dizisi belirir: 2.4.1, 14.2, 2024.03 gibi. Çoğu kullanıcı bu sayılara pek dikkat etmeden "güncelle" butonuna basar ya da bildirimi erteler. Oysa bu sayı dizisi rastgele değildir; geliştiricinin okuyucuya dolaylı yoldan verdiği bir mesajdır.
Sürüm numarası aslında şu soruların cevabını içinde barındırır: Bu güncelleme ne kadar köklü bir değişiklik getiriyor? Cihazımdaki başka programlarla uyumsuzluk yaşama riski var mı? Acil mi, yoksa birkaç gün beklenebilir mi? Bu yazının amacı, bu sayıları çözerek okuyucunun güncelleme kararlarını biraz daha bilinçli vermesine yardımcı olmak.
Büyük.Küçük.Yama: Klasik Üçlü Yapı Nasıl Okunur
Yazılım dünyasında en sık karşılaşılan yapı üç basamaklı bir sayı dizisidir: büyük.küçük.yama (major.minor.patch). Örneğin 3.5.2 gibi bir numarayı ele alalım.
- İlk sayı (major – büyük sürüm): Bu sayı arttığında (örneğin 3.x'ten 4.0'a geçildiğinde) genelde köklü bir değişiklik söz konusudur. Arayüz baştan tasarlanmış olabilir, eski dosya formatlarıyla uyumluluk kaybolmuş olabilir ya da bazı özellikler tamamen kaldırılmış olabilir. Bu tür güncellemelerde "her şey eskisi gibi çalışmaya devam eder" varsayımıyla hareket etmemek gerekir.
- İkinci sayı (minor – küçük sürüm): Bu sayının artması (3.5'ten 3.6'ya gibi) genelde yeni özelliklerin eklendiği ama genel yapının korunduğu anlamına gelir. Beklenmedik bir uyumsuzluk riski daha düşüktür.
- Üçüncü sayı (patch – yama): Bu genelde hata düzeltmeleri ve küçük iyileştirmeler içindir. Yeni bir özellik beklemek yerine, var olan sorunların giderildiğini düşünmek daha doğrudur.
Bu üçlü yapı bir kural kitabı değil, bir gelenektir; ama yaygınlığı sayesinde birçok yazılımda benzer mantıkla işler.
Semantik Versiyonlama (SemVer) Nedir, Neden Tercih Edilir
Major.minor.patch mantığının daha resmi ve üzerinde anlaşılmış hâline semantik versiyonlama (SemVer) denir. Bu yaklaşımın temel fikri şudur: sürüm numarası sadece bir etiket değil, bir sözleşme olsun. Yani major sürüm değiştiğinde geliştirici açıkça "geriye dönük uyumluluk garantisi yok" demiş olur; minor ve patch değişikliklerinde ise mevcut kullanım şeklinin bozulmayacağı taahhüt edilir.
Özellikle başka yazılımların üzerine inşa edildiği kütüphaneler, eklentiler ve geliştirici araçları için bu netlik önemlidir. Bir geliştirici, bir kütüphanenin sadece patch sürümünü güncellediğinde hiçbir şeyin bozulmayacağını bilmek ister. SemVer'i benimseyen projelerde sürüm numarası, rastgele bir artıştan çok, kullanıcıya doğrudan bilgi veren bir sistem hâline gelir. Bu yüzden SemVer kullanan yazılımlarda sürüm numarasına bakarak karar vermek, kullanmayanlara göre biraz daha güvenilir bir tahmin sağlar.
Tarih Tabanlı Sürümleme: Yıl.Ay Formatı ve Mantığı
Her yazılım major.minor.patch mantığını izlemez. Bazı projeler, özellikle sık güncellenen ve "en güncel olma" durumunun önemli olduğu yazılımlar, sürüm numarası yerine çıkış tarihini esas alır. Bu yaklaşımda sürüm numarası genelde yıl.ay şeklindedir (örneğin 2024.03, Mart 2024'te yayınlanan sürümü ifade eder).
Bu yöntemin avantajı basittir: kullanıcı sürüm numarasına baktığında elindeki sürümün ne kadar güncel olduğunu doğrudan anlayabilir. 2023.01 gördüğünüzde bunun bir yıldan eski olduğunu hemen fark edersiniz; oysa 5.2 gibi bir numaradan bu çıkarımı yapmak mümkün değildir.
Bu yaklaşımın SemVer'den farkı, "ne kadar köklü bir değişiklik" sorusuna değil, "ne zaman yayınlandı" sorusuna cevap vermesidir. Sürekli güncellenen tarayıcılar, işletim sistemi bileşenleri veya hızlı geliştirme döngüsüne sahip araçlarda bu yöntem daha çok tercih edilir.
Alfa, Beta, RC: Ön Sürüm Etiketleri Ne Anlatır
Bazen sürüm numarasının yanında ek bir etiket görülür: 4.0-alpha, 4.0-beta, 4.0-rc1 gibi. Bunlar, yazılımın henüz kararlı sürüme ulaşmadığını gösteren işaretlerdir.
- Alfa: Geliştirmenin en erken aşamasıdır. Özellikler eksik olabilir, çökme ve veri kaybı riski yüksektir. Genelde sadece geliştiricilerin veya çok sınırlı bir test grubunun kullanımı içindir.
- Beta: Özellikler büyük ölçüde tamamlanmıştır ama hâlâ hata bulma ve düzeltme sürecindedir. Beta sürümler genellikle daha geniş bir kullanıcı kitlesine test amacıyla açılır.
- Release Candidate (RC): Yayına aday sürüm anlamına gelir. Ciddi bir sorun çıkmazsa bu sürüm, küçük değişikliklerle birlikte resmi sürüm olarak yayınlanacaktır.
Genel kullanıcılar için önemli olan şudur: bu etiketleri gördüğünüzde, özellikle günlük işlerinizde veya önemli verilerinizle kullandığınız cihazlarda bu sürümleri yüklemekten kaçınmak mantıklıdır. Test sürümleri, meraklı kullanıcılar ve geliştiriciler için tasarlanmıştır; kararlılık garantisi vermezler.
Donanım Sürücülerinde ve İşletim Sistemlerinde Farklı Mantık
Sürüm numaralandırma mantığı her alanda aynı işlemez. Donanım sürücülerinde (örneğin ekran kartı veya yazıcı sürücüleri) sürüm numaraları çoğu zaman üreticinin kendi iç takip sistemine göre şekillenir ve major.minor.patch mantığıyla bire bir örtüşmeyebilir. Bir sürücünün 27.20.100.9 gibi uzun bir numara taşıması olağandır; bu numaraların her basamağı üreticinin dahili sürüm takibiyle ilgilidir ve dışarıdan bakıldığında "köklü değişiklik mi, küçük düzeltme mi" ayrımını yapmak SemVer'deki kadar kolay değildir.
İşletim sistemlerinde de benzer bir durum söz konusudur. Görünen sürüm numarasının yanında bir de build numarası bulunur; bu, o sürümün hangi iç derlemeden geldiğini gösteren, kullanıcı için pek anlam taşımayan ama destek taleplerinde veya hata bildirimlerinde önemli olan bir tanımlayıcıdır.
Bu farklılığın pratik sonucu şudur: bir yazılımda gördüğünüz sürüm numarası mantığını, doğrudan bir sürücü veya işletim sistemi güncellemesine uygulamaya çalışmak yanıltıcı olabilir. Bu durumlarda sürüm numarasından çok, güncellemenin notlarına (release notes) bakmak daha güvenilir bir yöntemdir.
Güncelleme Acil mi, Beklenebilir mi? Sürüm Numarasından Karar Vermek
Sürüm numarasının pratikte en işe yarar tarafı, bir güncellemenin aciliyetini tahmin etmeye yardımcı olmasıdır.
- Patch güncellemeleri genelde küçük, hızlı uygulanabilir güncellemelerdir. Özellikle güvenlik açığı kapatıyorsa, ertelemeden yüklemek genelde daha güvenli bir tercihtir.
- Minor güncellemeler acil olmayabilir. Yeni özellikler getirdiği için merak edilebilir, ama "hemen yüklemezsem sorun olur mu" kaygısı taşımaya gerek yoktur. Değişiklik günlüğüne göz atıp, işinize yarayacak bir şey varsa yükleyebilirsiniz.
- Major güncellemeler için acele etmemekte fayda var. Özellikle önemli işler için kullanılan cihazlarda, güncellemeden önce diğer kullanıcıların deneyimlerini veya bilinen sorunları araştırmak, ani bir uyumsuzlukla karşılaşma riskini azaltır.
Bu yaklaşım kesin bir kural değildir; ama sürüm numarasının hangi basamağının değiştiğine bakarak kabaca bir öncelik sırası oluşturmak mümkündür.
Değişiklik Günlüğünü Sürüm Numarasıyla Birlikte Okumak
Sürüm numarası tek başına yeterli bir bilgi kaynağı değildir; asıl detay değişiklik günlüğünde (changelog) saklıdır. Sürüm numarası size "bu büyük bir değişiklik mi, küçük bir düzeltme mi" sorusunun kaba bir cevabını verirken, changelog size tam olarak neyin değiştiğini anlatır.
Bir changelog okurken dikkat edilmesi gereken birkaç nokta vardır:
- Kırılma değişiklikleri (breaking changes): Özellikle major sürümlerde bu ifadeye rastlarsanız, güncelleme sonrası bazı ayarların veya alışkanlıkların değişebileceğini bilerek hazırlıklı olun.
- Güvenlik notları: Bir güncelleme güvenlik açığı kapatıyorsa, bu genelde changelog'da özellikle vurgulanır ve önceliklendirilmesi gerektiğine işaret eder.
- Bilinen sorunlar (known issues): Bazı changelog'lar, güncellemeyle birlikte gelen ama henüz çözülmemiş sorunları da listeler. Bu bölüm, güncellemeyi hemen mi yoksa birkaç gün bekleyip mi yapacağınıza karar verirken faydalıdır.
Sonuç olarak sürüm numarası ve changelog birbirini tamamlayan iki bilgi kaynağıdır. Sadece numaraya bakmak size kabaca bir fikir verir; changelog ise o fikri somut ayrıntılarla destekler. İkisini birlikte değerlendirmek, "bu güncellemeyi şimdi mi yapmalıyım, yoksa bekleyebilir miyim" sorusuna çok daha isabetli bir cevap vermenizi sağlar.



