Rehber · Sözleşme
Kaynak Kod Teslimi: Sözleşmeye Yazılması Gereken 6 Madde
Bir yazılım projesinde en pahalı hata, projenin kötü yazılması değil; sizden başka kimsenin dokunamayacağı şekilde teslim edilmesidir. Bu yazı, sözleşmeye eklenmesi gereken altı maddeyi ve her birinin neden gerekli olduğunu açıklıyor.
1. Kaynak kodun mülkiyeti
Sözleşmede açıkça yazmalı: ödeme tamamlandığında, projeye özel yazılan kodun ve veritabanı şemasının tüm hakları müşteriye geçer. 'Kullanım hakkı' ile 'mülkiyet' aynı şey değildir. Kullanım hakkı verilen bir yazılımı başka bir ekibe devredemezsiniz.
2. Erişimlerin devri
Kod tek başına yetmez. Alan adı, hosting/sunucu, veritabanı, e-posta servisi, Git deposu, CI/CD, ödeme sağlayıcısı, SMS/e-posta servisi, analitik, arama konsolu. Her biri ayrı bir hesaptır ve her birinin yöneticisi sizde olmalıdır. Proje tesliminde bu hesapların listesi ve sahiplik durumu yazılı olarak devredilmelidir.
3. Üçüncü taraf lisansların listesi
Projede kullanılan açık kaynak kütüphaneler ve ticari bileşenler listelenmeli. Bazı lisanslar ticari kullanımda ek yükümlülük doğurur; bazıları yıllık ücretlidir. Teslimden sonra 'bu bileşenin lisansı bitmiş' sürpriziyle karşılaşmak istemezsiniz.
4. Dokümantasyon ve kurulum
Kurulum adımları, ortam değişkenleri, yedekleme prosedürü, dağıtım (deploy) süreci. Bu dört başlık yoksa, yeni bir geliştirici projeyi ayağa kaldırmak için günler harcar — ya da hiç kaldıramaz.
5. Veri sahipliği ve çıkış hakkı
Veritabanındaki verinin sahibi müşteridir. Sözleşmede 'talep üzerine verinin makine okunabilir formatta (SQL dökümü/CSV) teslim edileceği' yazmalı. Ayrıca tedarikçi değiştiğinde eski tedarikçinin veriye erişiminin kapatılacağı belirtilmeli.
6. Devralma (handover) maddesi
En çok atlanan ve en kritik madde. Şunu tanımlamalı: taraflardan biri ayrılmak istediğinde, 30 gün içinde kod, dokümantasyon ve erişimler devredilir; devir için makul bir destek süresi (ör. 20 saat) sağlanır ve bunun bedeli önceden bellidir. Bu madde olmadan, tedarikçiyle yaşanan bir anlaşmazlık projeyi rehin alır.
Madde metinleri nasıl yazılır?
Yukarıdaki altı başlık, sözleşmede tek bir cümleyle geçiştirilmemeli. Aşağıdaki kalıp cümleler başlangıç noktası olarak kullanılabilir; her biri avukatınız tarafından kendi sözleşme yapınıza uyarlanmalıdır.
- "Projeye özel geliştirilen tüm kaynak kod, veritabanı şeması ve teknik dokümantasyon üzerindeki tüm haklar, bedelin tamamının ödenmesiyle birlikte Müşteri'ye devredilir."
- "Yüklenici, projede kullanılan üçüncü taraf bileşenlerin listesini ve lisans tiplerini teslimde yazılı olarak bildirir."
- "Taraflardan birinin talebi halinde, 30 gün içinde tüm erişimler devredilir; devir süresince Yüklenici 20 saat teknik destek sağlar, bu desteğin bedeli sözleşmede belirtilmiştir."
- "Müşteri, verinin makine okunabilir formatta (SQL dökümü veya CSV) tek seferlik teslimini her zaman talep edebilir."
Devralma gerçekte nasıl işler?
Bir projeyi devralan ekip, ilk üç gününde şu dört soruya cevap arar: proje yerelde nasıl çalıştırılır, ortam değişkenleri nerede, veritabanı nasıl geri yüklenir, dağıtım hangi adımlarla yapılır. Bu dördünün cevabı dokümanda yoksa, devralma süresi haftalara çıkar.
Pratik bir çözüm: teslimattan önce, hiç projeye dokunmamış bir geliştiriciye "sadece dokümantasyonla projeyi ayağa kaldır" görevi verin. Ne kadar sürede başardığı, dokümanın gerçek kalitesini ölçer. Bunu bir kabul kriteri olarak sözleşmeye yazmak, teslim kalitesini görünür kılar.
Kod deposu ve erişim listesi
Devir sırasında kontrol edilmesi gereken erişim listesi:
- Alan adı kayıt kuruluşu (registrar) hesabı ve DNS yönetimi
- Sunucu/hosting paneli ve SSH anahtarları
- Git deposu sahipliği ve organizasyon üyeliği
- Veritabanı yönetici hesabı
- E-posta gönderim servisi (SPF/DKIM kayıtları dahil)
- Ödeme sağlayıcısı, SMS servisi, analitik ve arama konsolu
- SSL sertifikası yenileme yetkisi
Bu listenin tamamı müşteride değilse, proje teknik olarak teslim edilmemiştir — sadece çalışıyor görünüyordur.
Neden bu kadar önemli?
Bir yazılımı kaybetmenin en yaygın yolu, onu kötü yazan ekip değildir. En yaygın yol, erişimin tek bir kişide kalmasıdır. O kişi ayrıldığında, şirket elinde çalışan ama dokunamadığı bir sistemle kalır. Altı madde, bu senaryoyu baştan engellemek için yazılır.
Teslim anında yapılacak kontrol
Teslim günü tek bir belge imzalamak yerine, aşağıdaki kontrolleri yapın ve sonucu teslim tutanağına yazın:
- Depo müşteri organizasyonuna taşındı mı, push yetkisi kimde?
- Dokümantasyondaki adımlarla sıfırdan kurulum yapılabiliyor mu?
- Yedekten geri dönüş bir kez gerçekten denendi mi?
- Alan adı ve SSL yenileme müşteri hesabında mı?
- Tüm ortam değişkenleri ve gizli anahtarlar müşteri kasasında mı?
- Üçüncü taraf bileşen listesi ve lisans tipleri yazılı mı?
Bu altı kontrol on dakika sürer. Atlanması halinde ortaya çıkacak maliyet ise genellikle haftalarla ölçülür.
Sık yapılan hatalar
Depoyu tedarikçinin hesabında bırakmak. Proje çalışır, ama sahiplik belirsizdir. Gizli anahtarları koda gömmek. Anahtar koddaysa, depoyu devralan herkes veritabanına erişir. Yedekleme var demekle yetinmek. Geri dönüş denenmemiş yedek, yedek değildir. Teslimi tek e-postayla geçiştirmek. Tutanaksız teslim, sonraki anlaşmazlıkta ispatsızdır.
Kontrol listesi
- Kod ve şema mülkiyeti açıkça yazılı
- Tüm hesapların sahiplik listesi
- Üçüncü taraf lisans envanteri
- Kurulum ve yedekleme dokümanı
- Veri çıkış hakkı ve formatı
- Devralma süresi ve bedeli
Bu altı madde, sözleşmeyi uzatmaz; sadece projenin üç yıl sonra da sizin kontrolünüzde kalmasını sağlar.
Sık sorulan sorular
Kaynak kod bana ait olmazsa ne olur?
Yazılımı kullanmaya devam edersiniz ama değiştiremez, başka ekibe devredemez, kendi sunucunuza taşıyamazsınız. Pratikte yazılımın sahibi siz değil, tedarikçiniz olur.
Kod GitHub'da dursa yeterli mi?
Hayır. Depo kime ait, kim push yetkisine sahip, geçmiş kimin hesabında? Depo sahipliği ve erişim listesi de devredilmelidir.
Açık kaynak kütüphaneler sorun çıkarır mı?
Hayır, ama lisans listesi sözleşmede olmalı. Bazı lisanslar ticari kullanımda ek yükümlülük getirir.
Devralma maddesi neden gerekli?
Tedarikçiyle yollar ayrıldığında yeni ekibin projeyi devam ettirebilmesi için gereken dokümantasyon ve erişimleri tanımlar. Bu madde yoksa proje fiilen kilitlenir.