Blog
Özel Yazılımda Kaynak Kod Kime Ait? Sözleşmede Aradığımız 7 Başlık
Kaynak kod teslimi, kullanım hakkı ile devir farkı, açık kaynak lisanslar, sunucu erişimi ve escrow. Özel yazılım sözleşmesinde sorulması gereken başlıklar.
Başka bir firmanın geliştirdiği bir yazılımı devralmak için masaya oturduğumuzda ilk baktığımız şey teknoloji değil, sözleşme oluyor. Çünkü o yazılım üzerinde neler yapılabileceğini, kodun kalitesinden önce sözleşmedeki birkaç madde belirliyor. Bazen kod hiç teslim edilmemiş. Bazen teslim edilmiş ama çalışan sürümle aynı değil. Bazen de sunucu hâlâ eski firmanın hesabında duruyor ve şifreyi bilen kimse kalmamış.
Bu maddeler genellikle imza günü, herkesin aklı projenin kendisindeyken “nasılsa gerek olmaz” diye geçiştiriliyor. Gerek olduğu gün ise iş işten geçmiş oluyor.
Aşağıdaki başlıklar hukuki görüş değil. Yazılım tarafında çalışan bir ekip olarak, bir özel yazılım ya da kurumsal yazılım sözleşmesinde görmek istediğimiz şeyleri sıraladık. Sözleşmenin son hâlini mutlaka hukukçunuza okutun.
1. Kaynak kodun ne zaman ve nasıl teslim edileceği
“Kaynak kod teslim edilecektir” cümlesi tek başına yetmiyor. Kod proje sonunda mı, her aşamanın sonunda mı teslim edilecek? Bir klasör dolusu dosya olarak mı, değişiklik geçmişiyle birlikte bir Git deposu olarak mı?
Teslimatta koda ek olarak veritabanı şeması, kurulum ve derleme talimatı, yapılandırma dosyalarının örnekleri ve kullanılan dış servislerin listesi bulunmalı. Başka bir geliştirici bu paketle sistemi sıfırdan ayağa kaldıramıyorsa, elinizdeki şey eksik bir teslimattır. En güvenilir kontrol, teslim edilen kodla sistemin bağımsız bir ortamda bir kez kurulup denenmesidir.
2. Kullanım hakkı ile devir aynı şey değil
Sözleşmelerde en çok karıştırılan konu bu. Kullanım hakkı, yani lisans, yazılımı işinizde kullanabileceğiniz anlamına gelir. Ama yazılımı değiştirme, çoğaltma, başka bir firmaya geliştirme yaptırma ya da satma haklarınız sınırlı olabilir. Devirde ise yazılım üzerindeki mali haklar size geçer.
Hangisine ihtiyacınız olduğu, yazılımı ne için kullanacağınıza bağlı. Yazılım yalnızca kendi iç süreçlerinizde çalışacaksa, geniş tutulmuş bir kullanım hakkı yeterli olabilir. Yazılımı bir ürüne dönüştürüp başka firmalara satmayı düşünüyorsanız tablo değişir.
Her iki durumda da hangi hakların, hangi süreyle ve hangi kapsamda verildiğinin sözleşmede tek tek yazılması gerekir. “Tüm haklar müşteriye aittir” gibi genel bir cümlenin nasıl yorumlanacağını hukukçunuza sorun; bu tür ifadeler beklediğiniz kadar geniş sonuç doğurmayabilir.
3. Yazılım firmasının kendi altyapısı
Deneyimli yazılım firmalarının çoğu her projeye sıfırdan başlamaz. Kullanıcı girişi, yetkilendirme, raporlama, dosya yükleme, bildirim gönderme gibi ortak parçalar için yıllar içinde geliştirdiği bir altyapıyı kullanır. Bu, projeyi hızlandırır ve maliyeti düşürür; sizin için de iyi bir şeydir.
Ama bu altyapıyı size tamamen devretmesini beklemek gerçekçi değil, çünkü aynı parçalar başka projelerde de çalışıyor. Bize göre dürüst olan düzen şu: Size özel yazılan kısım size devredilir. Ortak altyapı için ise süresiz, geri alınamaz ve üzerinde değişiklik yapmanıza izin veren bir kullanım hakkı tanınır.
Bu ayrımın sözleşmede açıkça yazılması, ileride “o modül bizimdi” tartışmasının önüne geçer. Firmanın bu ayrımı daha teklif aşamasında kendiliğinden söylemesi de iyi bir işarettir.
4. Üçüncü parti ve açık kaynak bileşenler
Modern bir yazılım onlarca, bazen yüzlerce hazır kütüphanenin üzerine kurulur. Bunların büyük kısmı açık kaynak lisanslarla dağıtılır ve ticari kullanıma izin verir. Bazı lisanslar ise yazılımı başkalarına dağıttığınızda, hatta bir kısmı ağ üzerinden hizmet olarak sunduğunuzda, kaynak kodunu da paylaşma yükümlülüğü getirebilir. Yazılımı yalnızca kendi içinizde kullanıyorsanız bu çoğu zaman sorun yaratmaz; ürün olarak satmayı düşünüyorsanız önemli bir ayrıntıdır.
Ücretli bileşenler ayrı bir konu. Raporlama aracı, gelişmiş tablo bileşeni, harita servisi gibi lisanslar kimin adına alınmış? Yazılım firmasının geliştirici lisansıyla mı çalışıyor, yoksa sizin adınıza mı kayıtlı? Yollar ayrıldığında bu lisansın da onlarla birlikte gidip gitmeyeceğini baştan bilmek gerekir. Teslimatta kullanılan bileşenlerin ve lisanslarının bir listesini isteyin.
5. Sunucu, kod deposu ve servis hesapları
Kod elinizde olsa bile sistemin çalıştığı ortama erişiminiz yoksa bir anlamı kalmaz. Kurumsal bir yazılımda bu ortam birkaç parçadan oluşur: sunucu ya da bulut hesabı, veritabanı yönetici hesabı, kodun tutulduğu Git deposu, yayına alma işlerinin tanımlı olduğu araçlar, SMS, e-posta ve ödeme gibi dış servislerin hesapları ve anahtarları. Bunların listesi sözleşmede ya da ekinde yer almalı.
Önerimiz net: Bulut ve sunucu hesapları, kod deposu ve dış servis hesapları firmanızın adına açılsın; yazılım firması bu hesaplara yetkili kullanıcı olarak erişsin. Şifreler e-postayla değil, güvenli bir yöntemle paylaşılsın ve proje teslim edildiğinde değiştirilsin. Bu düzen yazılım firmasına güvensizlik anlamına gelmez, yalnızca herkesin işini kolaylaştırır.
6. Yollar ayrılırsa ne olacak?
Bu maddeyi yazarken kimse keyif almaz, ama gün geldiğinde en çok işe yarayan madde budur. Sözleşme sona erdiğinde ya da feshedildiğinde yazılım firmasının hangi süre içinde neyi teslim edeceği, yeni ekibe geçiş için ne kadar destek vereceği ve bu desteğin nasıl ücretlendirileceği yazılmalı.
Kaynak kodun size devredilmediği, yalnızca kullanım hakkı verildiği durumlarda kaynak kod emaneti, yani escrow kavramı gündeme gelir. Kodun güncel bir kopyası bağımsız bir üçüncü tarafa bırakılır. Yazılım firması faaliyetini durdurursa ya da destek yükümlülüğünü yerine getirmezse, önceden tanımlanmış koşullarla bu kopya size teslim edilir.
Küçük ve orta ölçekli projelerde escrow düzeni maliyetli ve zahmetli bulunabiliyor. Daha basit bir yol, her sürüm yayına alındığında güncel kodun sizin kontrolünüzdeki bir depoya aktarılmasıdır. Amaç aynı: Firmayla aranız bozulduğunda da yazılımınızın geleceği elinizde kalsın.
7. Veri sizindir, ama nasıl geri alacaksınız?
Sisteme girilen verinin size ait olduğu çoğu sözleşmede zaten yazar. Asıl soru pratik: Veriyi hangi formatta ve ne kadar sürede alabileceksiniz? Sözleşme bittiğinde yazılım firmasının elinde kalan kopyalar ve yedekler ne olacak, ne zaman silinecek?
Kişisel veri işleyen sistemlerde bu konunun bir de KVKK boyutu var. Genellikle veri sorumlusu siz olursunuz; yazılım firması sunucuyu yönetiyor ya da verilere erişiyorsa veri işleyen konumuna girebilir. Bu ilişkinin nasıl kurulacağını ve sözleşmeye nasıl yansıyacağını hukuk danışmanınızla netleştirin.
Bu yedi başlığı teklif aşamasında sormak kimseyi kırmaz. Sorulardan rahatsız olan bir yazılım firmasıyla karşılaşırsanız, o rahatsızlık da size bir şey söylüyor demektir.
