
Go kodunuzu GitHub'a bağlamayın: modül yolunu kendi alan adınıza taşıyın
Go'da içe aktarma yolu aynı zamanda kodun indirildiği adrestir; bu yüzden git sağlayıcısını değiştirmek tüm import'ları yeniden yazmayı gerektirir. Iain Cambridge kendi alan adını öneriyor.
Go'nun diğer programlama dilleri arasında alışılmadık bir özelliği var: bir paketin içe aktarma yolu, aynı zamanda araç zincirinin kaynak kodunu indirdiği adrestir. Bir kütüphane github.com/example/thing adresinde barınıyorsa, bu dize onu içe aktaran her dosyada aynen görünür. 27 Eylül 2026'da yayımlanan bir blog yazısında mühendis Iain Cambridge, bu kolaylığın bir Go projesini sessizce tek bir barındırma sağlayıcısına bağladığını ve ekiplerin modüllerini kendi alan adları altında adlandırması gerektiğini savunuyor.
Bağlılık nereden doğuyor
Sorunun özü, git sunucusunun adresinin modül yolu haline gelmesi ve kodun o sunucuya bağlanmasıdır. Bir depoyu GitLab'a, Codeberg'e ya da kendi sunucunuza taşırsanız, eski adresi anan her içe aktarma yolu, go.mod satırı ve replace yönergesi yeniden yazılmalıdır; aksi halde araçlar eski kopyayı indirmeye devam eder. Yazar, geçiş maliyetinin o kadar yüksek olduğunu söylüyor ki şirketler bu işi yapmaktan tamamen vazgeçiyor ve kod GitHub'a bağlı kalıyor.
Aynı anda GitLab, GitHub ve Azure DevOps üzerinde çalışan bir şirketten söz ediyor. Kodu taşımak o kadar büyük bir işti ve ekibin o kadar az zamanı vardı ki, üç platformu paralel yürütmek birleştirmekten daha kolay göründü. Sonuç somuttu: şirket aynı anda üç barındırma hizmeti için ödeme yapıyordu. Cambridge'e göre bu deneyim, iskelet kodu birden çok git barındırma platformunda eşzamanlı çoğaltan Boneclone aracını yazmasının nedeni.
Çözüm, modülleri kendi alan adınız altında yayımlamak; go.uber.org, go.mongodb.org ve yazarın kendi go.iain.rocks adresi de aynı deseni kullanıyor. İçe aktarma yolu alan adıdır ve arkasındaki aynı adres, kodun o anda bulunduğu yeri gösterebilir. go.iain.rocks/boneclone bugün github.com/thetrueares/boneclone adresine çözülüyor; depo GitLab'a taşınsa kullanıcılar paketi aynı komutla kurar ve hiçbir fark görmez. Yazarın görüşüne göre Go kullanan her ticari yazılım ekibi iç kütüphanelerini ve paketlerini bu şekilde adlandırmalı.
Alan adı sizin, sunucu değil
Mekanizma dile zaten gömülü: araç bir yolu go-get=1 sorgu dizesiyle istediğinde sunucu, depo adresini bildiren bir go-import meta etiketi taşıyan küçük bir HTML sayfası döndürür. Yazarın kaydı şöyle: go.iain.rocks/boneclone git https://github.com/that-guy-iain/boneclone ve yanında editörlerin dosya bağlantıları kurmasına yardımcı olan bir go-source etiketi var. Nginx yapılandırması bu sayfayı Go aracına sunar, go-get=1 göndermeyen insan ziyaretçileri ise 301 koduyla GitHub'a yönlendirir.
Yapılandırma nasıl görünüyor
Aynı durum CI ve neredeyse hiç dokunulmayan issue şablonları için de geçerli: sağlayıcıya bağlı rozetler, sabit URL'lerden üretilen otomatik kontroller ve belgelere yazılmış bağlantılar ayrı ayrı düzeltme gerektirir. Kendi alan adınız bu işin büyük bölümünü baştan ortadan kaldırır ve sağlayıcı değişikliği tek bir meta etiket ile tek bir yönlendirme hedefini düzenlemeye indirgenir.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.