Git Evreninde Schrödinger’in Kedisi: Her Commit Yeni Bir Dünya mı Açıyor?

Bir yazılımcı yeni bir dal açtığında görünüşte sıradan bir işlem yapar: Mevcut kod tabanının belirli bir anına işaret eden yeni bir geliştirme yolu oluşturur. Fakat biraz geri çekilip baktığımızda sahne tuhaflaşır. Ana dalda kullanıcı arayüzü mavi kalırken başka bir dalda kırmızıya döner; birinde hata düzeltilir, diğerinde yeni bir hata doğar; üçüncüsünde ise proje bütünüyle terk edilir. Aynı geçmişten çıkan farklı gelecekler, Git deposunun içinde yan yana yaşamayı sürdürür. Bu manzara, kuantum mekaniğinin çoklu dünyalar yorumunun şaşırtıcı derecede kullanışlı bir dijital maketini andırır.

Commit, ölçüm ve ayrılan gelecekler

Çoklu dünyalar yorumuna göre kuantum ölçümü, olasılıklardan yalnızca birini seçip diğerlerini yok etmez. Bunun yerine evrenin kuantum durumu, farklı sonuçların gerçekleştiği ve birbirleriyle etkin biçimde etkileşemeyen dallara ayrılır. Teknik olarak burada gündelik anlamda yeni evrenler üreten kozmik bir fotokopi makinesi yoktur; evrensel dalga fonksiyonunun üniter evrimi ve dekoherens vardır. Git dalı da benzer biçimde yoktan bir proje yaratmaz. Bir commit’e yeni bir referans ekler ve bundan sonra yapılacak değişikliklerin ayrı bir tarih oluşturmasına izin verir.

Kodunuzdaki Deprem Hattı Nerede? Dallanma, Birleştirme ve Biriken Gerilim

Yerkabuğu tek parça değildir: Dev levhalar, görünmez ama durmaksızın hareket eden bir sistem içinde birbirlerine yaklaşır, uzaklaşır ya da yan yana sürtünür. Yazılım projeleri de şaşırtıcı biçimde buna benzer. Ana dal, özellik dalları, acil düzeltmeler ve deneysel kollar; aynı ürünün farklı yönlere hareket eden parçalarıdır. Çoğu zaman bu hareket sessizdir. Geliştiriciler kod yazar, testler geçer, görev panoları güncellenir. Fakat alttan alta bir şey birikir: değişim.

Tektonik plakalar sınırda takıldığında hareket bütünüyle durmaz; enerji, kayaçların esnekliği içinde depolanır. Yazılımda da iki dal aynı modülü farklı niyetlerle değiştirdiğinde benzer bir gerilim oluşur. Bir ekip ödeme akışını sadeleştirirken, başka bir ekip güvenlik katmanını sıkılaştırabilir. Her iki değişiklik kendi bağlamında doğrudur. Ancak uzun süre ayrı kalan dallar, ortak tarihten uzaklaştıkça farklı gerçeklikler üretir. Birleştirme anı geldiğinde Git’in gösterdiği çatışma işaretleri, aslında sistemin küçük sismograflarıdır.