Projelerinizi Güvence Altına Alın: GitHub'da Lisans Ekleme Rehberi


GitHub Nedir?
GitHub çoğumuz için kod barındırmaktan fazlası. Portfolyo, işbirliği alanı, çoğu zaman da özgeçmişin kendisi. Projelerinizi orada yayımladığınızda yalnızca geliştiricilere değil, çok daha geniş bir kitleye ulaşıyorsunuz. Ama çoğu kişinin gözünden kaçan bir ayrıntı var: bir depoyu herkese açık yapmak, onu kullanılabilir yapmıyor.
Eğer bu giriş ilginizi çektiyse, Git, GitHub Nedir? Nasıl Kullanılır? yazıma göz atmanızı öneririm.
Hangi lisansı seçeceğinize karar veremediyseniz Açık Kaynak Lisans Seçici aracında MIT, Apache 2.0, GPL ve diğerlerini yan yana karşılaştırabilir, adınız işlenmiş LICENSE dosyasını doğrudan alabilirsiniz.
Bu yazıyı açtığınıza göre GitHub’ın ne olduğunu zaten biliyorsunuz. Asıl soru şu olmalı: hangi lisans neyi veriyor, neyi kısıtlıyor ve depoya nasıl ekleniyor?
Lisans Nedir?
Lisans, yazılımınızın kullanımı ve dağıtımıyla ilgili kuralları belirleyen hukuki bir metin. Neden gerektiğini anlamak için tersinden bakmak lazım. Telif hakkı, siz hiçbir şey yapmasanız bile eser üzerinde kendiliğinden doğar. Yani lisans dosyası koymadığınız bir depo, herkese açık olsa bile varsayılan olarak "tüm hakları saklıdır" durumundadır. İnsanlar kodu okuyabilir, ama yasal olarak kullanamaz, değiştiremez ve dağıtamaz. Lisans eklemek, izin vermek demektir.
Popüler Lisans Türleri
MIT License
MIT, en az kısıtlama getiren ve tam da bu yüzden en yaygın olan lisans. Kodu ticari üründe kullanabilir, değiştirebilir, hatta kapalı kaynak olarak dağıtabilirsiniz. Karşılığında istenen tek şey telif ve lisans bildirimini kopyanızda taşımanız. Metni öyle kısa ki bir oturuşta okuyup ne imzaladığınızı gerçekten anlayabilirsiniz.
GNU General Public License (GPL)
GPL, özgür yazılım hareketinin lisansı ve mantığı MIT’in tam tersi. Kullanma, değiştirme ve dağıtma hakkını verir, ama bir şart koyar: türev çalışmayı dağıtıyorsanız onu da GPL altında ve kaynak koduyla birlikte dağıtmak zorundasınız. Buna copyleft deniyor. Yükümlülüğün ne zaman doğduğu ise sıkça karıştırılıyor. Dağıtım anında doğuyor; kodu şirket içinde kullanıp dışarıya vermiyorsanız kaynağı açma zorunluluğunuz yok.
Apache License
Apache 2.0, izin verdikleri bakımından MIT’e çok yakın. Farkı iki maddede toplanıyor. Birincisi açık bir patent lisansı içermesi: katkıda bulunanlar kendi kodlarındaki patentler için size kullanım hakkı vermiş oluyor ve size patent davası açarlarsa bu hakkı kaybediyorlar. İkincisi, projede bir NOTICE dosyası varsa onu dağıttığınız kopyalarda korumanız gerekiyor. Kurumsal projelerin MIT yerine Apache 2.0 seçmesinin sebebi genelde o patent maddesi.
Seçim yaparken cevaplamanız gereken soru aslında tek: kodunuzun kapalı kaynak bir üründe kullanılmasından rahatsız olur musunuz? Hayırsa MIT ya da Apache 2.0, evetse GPL tarafına bakın.
Diğer Önemli Lisans Türlerine Kısa Bir Genel Bakış
BSD License
BSD lisansları üniversite ve araştırma kurumlarında yaygın. İki sürümünü göreceksiniz: 2 maddelik olan pratikte MIT ile neredeyse aynı, 3 maddelik olan ise buna bir madde ekleyip projenin ya da katkıda bulunanların adını tanıtımda izinsiz kullanmayı yasaklıyor.
Mozilla Public License (MPL)
MPL, GPL ile MIT arasında bir yerde duruyor. Copyleft yükümlülüğü proje geneline değil dosya seviyesine iniyor: MPL kapsamındaki bir dosyayı değiştirdiyseniz o dosyayı MPL altında yayımlarsınız, ama projenizin geri kalanı kapalı kalabilir. Firefox’un lisansı bu.
Creative Commons Licenses
Creative Commons, yazılım için değil içerik için tasarlanmış bir lisans ailesi. Belge, görsel, müzik ya da blog yazısı gibi eserlerde gayet yerinde. Yazılımda ise önerilmiyor; bunu Creative Commons kurumu da kendi SSS sayfasında açıkça söylüyor, çünkü bu lisanslar kaynak kod dağıtımı ve patent gibi konuları hiç ele almıyor.
Eclipse Public License
Eclipse Public License, Eclipse ekosisteminin lisansı ve o da zayıf copyleft sınıfında. EPL kapsamındaki dosyalarda yaptığınız değişiklikleri yine EPL altında yayımlamanız gerekiyor. Burada sık rastlanan bir yanlış anlama var: değişiklikleri yukarı akışa, yani orijinal projeye göndermek zorunda değilsiniz. Yükümlülük yalnızca dağıttığınız kopya için geçerli.

Projeye Lisans Ekleme
1. Yeni oluşturulan repoya lisans ekleme
Yeni depo açıyorsanız iş tek tıkla bitiyor. Oluşturma ekranındaki "Choose a license" menüsünden uygun olanı seçmeniz yeterli; GitHub LICENSE dosyasını sizin adınıza doldurup ilk commit’e ekliyor.

2. Mevcut repoya lisans ekleme
Depoyu çoktan açtıysanız da geç değil. Lisansı sonradan eklemek şu adımlarla oluyor:
Add File -> Create new file

Dosyaya LICENSE adını verdiğiniz anda sağ üstte "Choose a license template" düğmesi beliriyor. Adı tam olarak böyle yazmak önemli, çünkü GitHub hem şablonu hem de depo sayfasındaki lisans rozetini bu isme bakarak çalıştırıyor.

Sol sütunda yukarıda konuştuğumuz lisansların hepsi listeleniyor. Ben MIT seçiyorum. GitHub yıl ve isim alanlarını otomatik dolduruyor, gerekirse düzeltebilirsiniz. Review and Submit ile son adıma geçiyorum.

Commit changes... butonuyla da değişiklikleri commitliyoruz.

Açılan pop-up ekranında da bir commit mesajı yazmamız isteniyor, olduğu gibi bırakıp Commit changes tıklıyoruz.

Ve işte sonuç, bu işlemleri uygulayarak repomuza MIT license tanımlamış olduk.

Sonuç
LICENSE, projenizin en kısa ama en belirleyici dosyası. Yokluğunda deponuz teknik olarak açık kaynak sayılmaz ve kimse kodu güvenle kullanamaz. Seçerken tek bir soruya cevap vermeniz yeterli: kodunuzun kapalı kaynak bir üründe yer almasını ister misiniz? İstemiyorsanız GPL, umursamıyorsanız MIT, patent koruması da arıyorsanız Apache 2.0. Son bir hatırlatma: lisansı sonradan değiştirmek, o ana kadar katkı vermiş herkesin onayını gerektirebilir. Baştan doğru seçmek çok daha ucuza geliyor.
Referanslar

Mustafa Kürşad Başer
Kıdemli Yazılım Mühendisi
Karmaşık sorunlara zarif çözümler üretmekten keyif alan, tutkulu bir yazılım mühendisi. Kodlamanın ötesinde, teknoloji, sanat ve insan bilincinin kesişim noktalarını keşfetmekle derinden ilgileniyor.

