Yazılım kaynak kodu nedir, kimde kalmalı? Teslim ve saklama (escrow) rehberi
Kaynak kodu, bir yazılımın programcıların yazdığı, insan tarafından okunabilir talimatlarıdır; kullandığınız uygulama bu koddan derlenerek ya da yorumlanarak çalışır. Kaynak kodunun kimde kalacağı işin kritikliğine bağlıdır: devredilebilir, firmada kalıp bağımsız bir emanetçide saklanabilir (escrow, yazılım saklama sözleşmesi) ya da abonelik modelinde kod firmada kalırken veri işletmeye ait olur.

Yazılım kaynak kodu nedir?
Arkadaşlar, önce bir uyarı: bu rehber hukuki tavsiye değildir. Biz yazılım geliştiren bir ekip olarak, kaynak kodu konusunda işletmelerin sahada en çok takıldığı teknik ve pratik noktaları anlatıyoruz. Sözleşme maddeleri için mutlaka bir avukata danışın ve güncel düzenlemeyi kontrol edin.
Kaynak kodu (source code), bir yazılımın programlama diliyle yazılmış metnidir. Bilgisayar bu metni doğrudan değil, derlenmiş (compiled) ya da çalışma anında yorumlanan haliyle çalıştırır. Size teslim edilen kurulum dosyası ya da telefonunuzdaki uygulama çoğu zaman bu derlenmiş çıktıdır. Derlenmiş çıktıyla yazılımı kullanabilirsiniz ama değiştiremezsiniz. Değiştirmek, hata düzeltmek ya da başka bir firmaya geliştirtmek için kaynak koduna ihtiyaç vardır.
Açık ve kapalı kaynak kod nedir?
Açık kaynak (open source) yazılımda kaynak kodu herkesin görebileceği şekilde yayımlanır ve lisansında belirtilen koşullarla kullanılabilir, değiştirilebilir. Kapalı kaynak (proprietary) yazılımda ise kod üreticide kalır; kullanıcıya yalnızca kullanım lisansı verilir.
Size özel yazdırılan bir yazılım da çoğu zaman açık kaynak bileşenler içerir. Bu bileşenlerin lisans koşulları, ileride yazılımı nasıl kullanabileceğinizi etkiler. Teslim sırasında kullanılan açık kaynak bileşenlerin ve lisanslarının listesini istemek bu yüzden önemlidir.
Kaynak kodu kimde kalmalı?
Parasını ödediğiniz yazılımın kaynak kodu, sözleşmede açıkça düzenlenmedikçe kendiliğinden size geçmez. Hakların hukuki tarafını yazılım sözleşmesinde dikkat edilmesi gerekenler rehberimizde anlattık. Burada pratik tarafına bakalım; uygulamada üç model görüyoruz:
- Kodun işletmeye devri: kaynak kodu ve üzerindeki haklar işletmeye geçer. Yazılımı ileride başka bir ekiple geliştirmek isteyen, kendi yazılım ekibi olan işletmeler için anlamlıdır.
- Kod firmada, kopyası emanetçide: firma kodu kendi ürünü olarak tutar, ama güncel bir kopya bağımsız bir üçüncü kişide saklanır. Sözleşmede yazan durumlar gerçekleşirse kopya işletmeye teslim edilir.
- Abonelik (SaaS, Software as a Service, hizmet olarak yazılım): kod firmada kalır, barındırma ve bakım firmanın sorumluluğundadır. Burada asıl güvence verinin işletmeye ait olması ve ilişki bittiğinde standart biçimlerde dışa aktarılmasıdır.
Yazılım saklama sözleşmesi (escrow) nedir?
Yazılım saklama sözleşmesi ya da kaynak kod emanetçiliği (source code escrow); yazılım firması, iş sahibi ve bağımsız bir emanetçi arasında yapılan, kaynak kodunun emanetçide saklandığı ve önceden yazılan durumlarda iş sahibine teslim edildiği düzenlemedir. Tipik teslim durumları firmanın faaliyetini durdurması ya da bakım yükümlülüğünü yerine getirmemesidir.
Escrow’un en zayıf noktası güncellik ve doğrulamadır. Emanete üç yıl önce bırakılmış bir sürüm, bugün kullandığınız yazılımı ayağa kaldırmaz. Bu yüzden sözleşmede şunlar yazmalıdır:
- Ne sıklıkla güncel kopyanın emanete verileceği (her sürümde mi, belirli aralıkla mı?).
- Emanete verilecek paketin içeriği: kod, derleme talimatı, veritabanı şeması, dokümantasyon.
- Doğrulama düzeyi: yalnızca dosyaların teslim alınması mı, yoksa kodun bağımsız biri tarafından derlenip çalıştırılarak denenmesi mi?
- Teslimi hangi olayların tetikleyeceği ve teslimin ne kadar sürede yapılacağı.
Kaynak kod tesliminde neler istenmeli?
Kaynak kodu “teslim edildi” denince bir sıkıştırılmış dosya gönderilmesi yetmiyor. Biz sahada, elinde kod olduğu halde yazılımı ayağa kaldıramayan işletmeler gördük. Teslim paketi en az şunları içermeli:
- 1. Kod deposu (repository) erişimi: yalnızca son hali değil, değişiklik geçmişiyle birlikte.
- 2. Derleme ve kurulum talimatı: kodun sıfırdan bir makinede nasıl çalışır hale getirileceği, adım adım.
- 3. Bağımlılık listesi: kullanılan kütüphaneler, sürümleri ve açık kaynak lisansları.
- 4. Veritabanı şeması ve örnek veri: tabloların yapısı ve ilişkileri.
- 5. Ortam ayarları: sunucu yapılandırması, zamanlanmış görevler, dış servis bağlantıları. Şifre ve anahtarların güvenli bir kanalla ayrıca teslimi.
- 6. Hesap sahipliği: alan adı, sunucu, bulut hesabı ve mobil uygulama mağaza hesaplarının işletme adına olması.
- 7. Teknik dokümantasyon: mimarinin kısa anlatımı ve kritik iş kurallarının nerede yazıldığı.
Kaynak kod analizi nedir, teslim alınan kod nasıl doğrulanır?
Kaynak kod analizi, kodun çalıştırılmadan incelenmesidir. Statik kod analizi (static code analysis) araçları kod kalitesini, bilinen güvenlik açıklarını ve eski kalmış bağımlılıkları raporlar. Teslim alınan kodu bu şekilde incelemek, ne aldığınızı bilmenin ilk adımıdır.
Daha önemlisi derleme denemesi: kodu, onu yazan ekipten bağımsız biri, verilen talimatla temiz bir ortamda derleyip çalıştırabiliyor mu? Bu deneme yapılmadan kod teslimi tamamlanmış sayılmamalı. Kendi yazılım ekibiniz yoksa bu kontrolü bağımsız bir yazılımcıya yaptırabilirsiniz.
Kaynak kodu elinizde olması yeterli mi?
Değil. Kaynak kodu bir yazılımın haritası gibidir; haritayı okuyacak biri yoksa işe yaramaz. Kodun yanında o kodun neden öyle yazıldığını bilen bilgi de gerekir. Bu yüzden sadece kodun değil, dokümantasyonun ve bir devir teslim sürecinin de sözleşmede yer alması gerekir.
Biz sahada şunu da görüyoruz: kaynak kodunu almak için ısrar eden işletmelerin çoğu, aslında kodu değil güvenceyi istiyor. Firma kapanırsa ne olur, veri kimde kalır, sistem durursa kim ayağa kaldırır? Bu sorulara verilen cevap; kod devri, emanet ya da veri dışa aktarma garantisinden hangisinin size uygun olduğunu belirler.
Güvence, iki tarafın emeğini de korur
Kaynak kodu konusunun baştan konuşulması güvensizlik değil, açıklıktır. Yazılımı yazan ekibin emeği de, o yazılıma işini emanet eden işletmenin emeği de ancak sınırlar baştan çizilirse korunur. Bu rehber hukuki tavsiye yerine geçmez; sözleşmenizi bir avukata inceletin ve güncel düzenlemeyi kontrol edin.
Siz de yazılımınızın kaynak kodu, veri teslimi ve devir teslim süreci için hangi modelin uygun olduğunu netleştirmek isterseniz bizimle iletişime geçebilirsiniz. Sormak istediğiniz her konuda gerekli desteği vermeye hazırız.
Sık sorulan sorular
Yazılım kaynak kodu nedir?
Kaynak kodu, bir yazılımın programlama diliyle yazılmış, insan tarafından okunabilir metnidir. Kullandığınız uygulama bu koddan derlenmiş ya da yorumlanmış haliyle çalışır. Yazılımı değiştirmek veya başka bir ekiple geliştirmek için kaynak koduna ihtiyaç vardır.
Yazılım saklama sözleşmesi nedir?
Yazılım saklama sözleşmesi (kaynak kod emanetçiliği, escrow), kaynak kodunun bağımsız bir emanetçide saklandığı ve yazılım firmasının faaliyetini durdurması gibi önceden yazılan durumlarda iş sahibine teslim edildiği üç taraflı düzenlemedir. Emanetteki kodun düzenli güncellenmesi ve doğrulanması gerekir.
Açık kaynak ile kapalı kaynak arasındaki fark nedir?
Açık kaynak yazılımda kod herkese açıktır ve lisans koşullarıyla kullanılıp değiştirilebilir. Kapalı kaynak yazılımda kod üreticide kalır, kullanıcıya yalnızca kullanım hakkı verilir.
Kaynak kod tesliminde neler istenmeli?
Değişiklik geçmişiyle kod deposu, derleme ve kurulum talimatı, bağımlılık ve lisans listesi, veritabanı şeması, ortam ayarları, alan adı ve sunucu gibi hesapların işletme adına olması ve teknik dokümantasyon. Teslim, kodun bağımsız biri tarafından derlenip çalıştırılmasıyla doğrulanmalıdır.
Abonelikle kullandığım yazılımda kaynak kodu bana verilir mi?
Abonelik (SaaS) modelinde kaynak kodu genellikle firmada kalır. Bu modelde asıl güvence verinin işletmeye ait olması ve ilişki bittiğinde standart biçimlerde dışa aktarılmasıdır. Kritik yazılımlarda ayrıca kaynak kod emanetçiliği konuşulabilir; koşullar sözleşmede yazılmalıdır.
İlgili hizmet: İhtiyaca özgü yazılım