Yazılımda Kaynak Kodu Teslimi ve Mülkiyet Hakkı

Parasını ödediğiniz yazılımın kodu sizde mi? Kaynak kodu teslimi, mülkiyet ve lisans modelleri ile teslimde istenmesi gerekenleri anlattım.

İçindekiler
  1. Kaynak kodu nedir, neden bu kadar önemli?
  2. Kaynak kodu teslimi neleri kapsamalı?
  3. Mülkiyet mi, kullanım hakkı mı?
  4. Sözleşmede kaynak kodu teslimi nasıl yazılmalı?
  5. Bu işi nasıl birlikte yaparız?
  6. Sık sorulan sorular
  7. Sonuç

Yazılımcınızla yollarınız ayrıldığında ya da projeyi başka bir ekibe devretmek istediğinizde ilk sorulan soru şudur: Kod nerede ve kime ait? Bu sorunun cevabı proje başında konuşulmadıysa, parasını ödediğiniz bir sisteme dokunamaz hâle gelebilirsiniz. Kaynak kodu teslimi, yazılımın bağımsız olarak geliştirilmeye ve bakımının yapılmaya devam edebilmesi için gereken her şeyin size eksiksiz verilmesidir. Bu yazıda teslimin neleri kapsaması gerektiğini, mülkiyet ile kullanım hakkı arasındaki farkı ve sözleşmede nelere dikkat etmeniz gerektiğini anlatıyorum.

Kaynak kodu nedir, neden bu kadar önemli?

Kaynak kodu, yazılımcının PHP, JavaScript ya da Dart gibi bir dille yazdığı, insanın okuyup değiştirebildiği metindir. Uygulama mağazasına yüklenen paket veya sunucuda çalışan derlenmiş dosyalar ise çoğu zaman bu kodun işlenmiş hâlidir ve üzerinde anlamlı bir değişiklik yapmak mümkün değildir.

Elinizde yalnızca çalışan sistem varsa yazılımı kullanabilirsiniz ama geliştiremezsiniz. Yeni bir özellik, bir güvenlik yaması ya da sunucu taşıma gerektiğinde ilk geliştiriciye bağımlı kalırsınız. Kaynak kodunun sizde olması, bu bağımlılığı ortadan kaldıran temel güvencedir.

Kaynak kodu teslimi neleri kapsamalı?

Yalnızca bir klasör dolusu dosya almak, teslim için yeterli değildir. Başka bir yazılımcının projeyi devralıp çalıştırabilmesi için şu kalemler eksiksiz olmalıdır:

  • Tüm kaynak dosyaları: Ön yüz, arka uç, mobil uygulama ve yönetim paneli kodlarının tamamı.
  • Sürüm geçmişi: Mümkünse Git deposunun kendisi; hangi değişikliğin ne zaman ve neden yapıldığını gösterir.
  • Veritabanı şeması ve örnek veri: Tabloların yapısı, ilişkiler ve geçiş (migration) dosyaları.
  • Kurulum belgesi: Gerekli yazılım sürümleri, kurulum adımları ve ortam ayarlarının açıklaması.
  • Erişim bilgileri: Sunucu, alan adı, uygulama mağazası hesapları ve üçüncü taraf servis panelleri.
  • Bağımlılık ve lisans listesi: Projede kullanılan kütüphaneler ve bunların lisans koşulları.
  • Derleme ve yayınlama talimatları: Kodun nasıl canlıya alındığı, mobil uygulamanın nasıl paketlendiği.

Sürüm geçmişinin neden bu kadar değerli olduğunu Git ile sürüm kontrolü yazısında ayrıntılı anlattım. Kısaca, geçmişi olmayan bir kod tabanı bağlamı kaybolmuş bir arşive benzer.

Mülkiyet mi, kullanım hakkı mı?

Kodun size teslim edilmesi, otomatik olarak sahibi olduğunuz anlamına gelmez. Türkiye’de bilgisayar programları Fikir ve Sanat Eserleri Kanunu kapsamında eser olarak korunur ve eser üzerindeki haklar ilk olarak onu yaratana doğar. Bu hakların size geçmesi için açık bir sözleşme hükmü gerekir; mali hakların devrinde yazılı şekil aranır. Kesin hukuki görüş için mutlaka bir avukata danışmanızı öneririm.

Pratikte karşınıza çıkan modeller şunlardır:

Model Kod sizde mi? Ne yapabilirsiniz? Uygun olduğu durum
Mali hakların tam devri Evet Değiştirme, çoğaltma, satma, başkasına geliştirtme İşinize özel, stratejik yazılımlar
Münhasır kullanım lisansı Genellikle evet Geliştirici başkasına aynı yazılımı veremez, siz kullanır ve geliştirirsiniz Rekabet avantajı sağlayan sistemler
Münhasır olmayan lisans Duruma göre Kullanırsınız; geliştirici benzerini başkalarına da sunabilir Hazır ürünün size uyarlanması
Abonelik (SaaS) Hayır Hizmeti kullanırsınız, kod sağlayıcıda kalır Standart ihtiyaçlar, düşük başlangıç maliyeti

Hangi modelin size uygun olduğu, yazılımın işinizdeki rolüne bağlıdır. Sektörünüzde fark yaratan, size özel bir süreç yazdırıyorsanız tam devir ya da münhasır lisans mantıklıdır. Bir hazır ürünün size göre uyarlanmasında ise geliştiricinin ürünü başkalarına da satabilmesi doğaldır ve maliyeti düşürür.

Geliştiricinin hazır bileşenleri ve açık kaynak

Neredeyse her projede geliştiricinin önceki işlerinden getirdiği ortak modüller ve açık kaynak kütüphaneler bulunur. Bunların mülkiyeti size geçmez; size bunları süresiz kullanma hakkı verilir. Açık kaynak bileşenlerin her birinin kendi lisansı vardır. Bazıları kodu kapalı tutmanıza izin verirken bazıları, yazılımı dağıttığınızda değişikliklerinizi de aynı lisansla paylaşmanızı şart koşar. Teslimde bu lisans listesini istemek, ileride sürpriz yaşamamanızı sağlar.

Sözleşmede kaynak kodu teslimi nasıl yazılmalı?

Belirsiz ifadeler, anlaşmazlıkların en büyük kaynağıdır. Sözleşmede en az şu noktalar açıkça yer almalıdır:

  1. Teslim zamanı: Kodun her aşama sonunda mı, yoksa son ödemeyle birlikte mi teslim edileceği.
  2. Teslim kapsamı: Yukarıdaki listedeki kalemlerin hangilerinin dâhil olduğu.
  3. Hakların kapsamı: Devir mi lisans mı, münhasır mı değil mi, süre ve coğrafya sınırı olup olmadığı.
  4. Hazır bileşenlerin durumu: Geliştiriciye ait ortak modüllerin nasıl lisanslandığı.
  5. Gizlilik: Kodun ve iş verilerinizin üçüncü kişilerle paylaşılmaması.

Sözleşmenin diğer kritik maddelerini yazılım sözleşmesinde olması gerekenler yazısında toplu olarak ele aldım.

Bir başka pratik çözüm de kodun en baştan sizin adınıza açılmış bir depoda tutulmasıdır. Geliştirici bu depoya erişim yetkisiyle çalışır; böylece kod her gün sizin hesabınızda birikir ve teslim tek seferlik bir olay olmaktan çıkar.

Bu işi nasıl birlikte yaparız?

Kendi projelerimde kaynak kodu konusunu baştan netleştirerek ilerliyorum:

  1. İhtiyacı dinleme: Yazılımın işinizdeki yerini ve ileride başka bir ekiple çalışma ihtimalinizi konuşuyoruz.
  2. Kapsam ve teklif: Teklifte hakların devir mi lisans mı olacağını, teslim kalemlerini ve zamanlamasını açıkça yazıyorum.
  3. Geliştirme: Kodu sürüm kontrolü altında, mümkünse sizin adınıza açılmış bir depoda geliştiriyorum.
  4. Teslim ve devir: Kurulum belgesi, erişim bilgileri ve lisans listesiyle birlikte teslim ediyor, isterseniz devralacak ekiple bir aktarım görüşmesi yapıyorum.

Mevcut bir projenizde teslim sorunu yaşıyorsanız ya da yeni bir proje planlıyorsanız iletişim sayfasından bana ulaşabilirsiniz.

Sık sorulan sorular

Parasını ödediğim yazılımın kodu otomatik olarak benim mi olur?

Hayır. Ödeme yapmış olmanız tek başına mülkiyet devri anlamına gelmez. Hakların size geçtiği sözleşmede yazılı olarak belirtilmelidir. Durumunuz için kesin bilgiyi bir hukukçudan almanız en doğrusudur.

Eski yazılımcım kaynak kodunu vermiyor, ne yapabilirim?

Önce sözleşmenizi ve yazışmalarınızı inceleyin. Teslim yükümlülüğü yazılıysa bunu resmî olarak talep edebilirsiniz. Sözleşme yoksa veya belirsizse bir avukattan destek almanız gerekir; teknik tarafta ise sunucudaki dosyalardan ne kadarının kurtarılabileceği değerlendirilebilir.

SaaS bir üründe kaynak kodu teslimi istenebilir mi?

Genellikle hayır, çünkü abonelik modelinde aynı kod birçok müşteriye hizmet verir. Bunun yerine verilerinizi istediğiniz zaman dışa aktarabilmeniz güvence altına alınmalıdır.

Kod teslim edildiğinde yazılımcıyla bağım tamamen kopar mı?

Kopmak zorunda değil. Kaynak kodu sizde olduğu hâlde aynı geliştiriciyle bakım anlaşmasıyla devam edebilirsiniz; fark şu ki artık bu bir zorunluluk değil, tercih olur.

Sonuç

Kaynak kodu teslimi, yazılım yatırımınızın gerçekten size ait olmasını sağlayan en önemli güvencedir; kapsamını ve hakları proje başında yazıya dökmek, ileride yaşanabilecek bağımlılığın önüne geçer. Projenizi bu güvenceyle planlamak isterseniz benimle iletişime geçebilirsiniz.