Açık kaynak kodlu yazılım, kaynak kodu okunabilen ve lisansı o kodu okuma, değiştirme ve dağıtma iznini herkese veren yazılımdır. Aynı lisans yazılımı olduğu gibi verir; güncellemeyi kimin izleyeceğini ve uygulamanın kime ait olacağını teklif ile sözleşme yazar. Vipkurum’un soru kırpma aracında açık kaynak kütüphaneler, dış sağlayıcının dil modeli ve işe özel kod tek zincirde yan yana duruyor.
Açık kaynak kodlu yazılım nedir: kaynak kodu okunabilen ve lisansıyla izin verilen yazılım
Açık kaynak kodlu yazılımda hak kodun görünmesinde değil, lisansın okuma, değiştirme ve dağıtma iznini birlikte vermesindedir. Kaynak kod, programcının üzerinde değişiklik yaptığı metindir; bilgisayarın çalıştırdığı program bu metinden üretilir. Tanımı yapan kuruluş, Open Source Initiative (OSI), kaynak kodu programcının programı değiştirmek için tercih edeceği biçim diye tarif eder. Kasıtla okunmaz hâle getirilmiş kod bu tanıma girmez ve kodun derlenmiş biçimle birlikte dağıtılabilmesi gerekir. Tanımın birimi bu yüzden program değil, değiştirilebilir biçimdir.
Tanım bunu ilk cümlesinde kendisi söyler: açık kaynak yalnız kaynak koda erişim anlamına gelmez. Lisansın koda erişimi, kodu değiştirip ondan türev iş yapmayı ve hem kodu hem türevi dağıtmayı birlikte serbest bırakması gerekir. Yazının geri kalanı bu ayrımdan yürür.
Kodu görülebilen ama onaylı bir açık kaynak lisansı taşımayan yazılım bu adı almaz. OSI, adın yalnız onayladığı lisanslardan biriyle dağıtılan yazılım için kullanılmasını ister ve onaysız lisansla bu adı kullanmak isteyenlere açıkça kullanmayın der. Teklifte kodu size açık diyen bir cümle ile açık kaynak diyen bir cümle bu yüzden aynı şeyi söylemez. İlki bir erişim sözüdür; ikincisi bir lisans adıdır ve o lisansın metni ayrıca okunur.
Karşı durum da var. Kaynağı incelemeye açık ama değiştirmeye ya da dağıtmaya izin vermeyen yazılımda görünürlük vardır, tanım yoktur; İngilizcede bu sınıfa source-available, yani kaynağı erişilebilir yazılım denir. Böyle bir ürünü değiştirmeden önce lisans metninin neye izin verdiğini okumak gerekir.
Açık kaynak ücretsiz demek değildir
Lisans kodla ne yapabileceğinizi söyler, kaç para ödeyeceğinizi söylemez. Açık kaynak tanımı, yazılımın satılmasını ya da bedava verilmesini kısıtlayan lisansı tanımın dışında bırakır. Yani açık kaynak yazılım satılabilir; OSI’nin sık sorulan sorular sayfası bunu, başkasının yazdığı yazılım için bile, açıkça evet diye cevaplar. Tersi de var: bedava dağıtılan kapalı yazılım da bulunur. Orada bedel sıfırdır ama kod kapalıdır; bedel ile açıklık birbirinden bağımsız eksenlerdir.
Karışıklığın kaynağı İngilizcedeki free kelimesidir: aynı kelime hem özgürlüğü hem de yalnızca bedeli anlatabilir. OSI’nin sayfası bu belirsizliğe ayrıca değinir. Türkçede aynı karışıklık açık ile ücretsiz arasında yaşanır ve teklifte bu kelimeler çoğu zaman yan yana okunur. Oysa biri lisansın verdiği izni, öteki bir kalemin rakamını anlatır.
Lisans ücreti sıfır olduğunda bile parçanın kurulması, barındırılması, bakımı ve işe uyarlanması ayrı işlerdir. Aynı sayfa, açık kaynak üzerinden nasıl para kazanılacağı sorusuna tam bu işleri sayarak cevap verir: güvence satmak, uyarlama ve bakım işi satmak. Bedel lisansta değil, bu işlerde yazılır; teklifte lisans satırı boş kaldığında aranacak rakam o satırlardadır.
Araç seçiminin fiyatı değil, sistemin yayından sonra kimin elinde ayakta kalacağını etkilediğini özel yazılım fiyatlarını anlatan rehberde yazdık; açık kaynak bir çatı seçmek o soruyu ortadan kaldırmaz.
Lisans okuma, değiştirme ve dağıtma izni verir; koşulu lisansa göre değişir
Açık kaynak lisanslarını birbirinden ayıran şey verdikleri izin değil, dağıtım sırasında istedikleri koşuldur: telif bildirimini korumak ya da türev işi aynı lisansla açmak. İzin verici lisansların bilinen örneği MIT metnidir. Yazılımı kullanma, kopyalama, değiştirme, birleştirme, yayımlama, dağıtma, alt lisanslama ve satma iznini ücretsiz olarak herkese verir. Karşılığında tek bir şey ister: telif bildirimi ile izin bildiriminin yazılımın her kopyasında yer alması.
Karşılıklılık şartlı lisanslar, İngilizcedeki adıyla copyleft, aynı izinleri verir, koşulları ise farklıdır. Değiştirip dağıttığınız işi aynı lisansla ve kaynak koduyla birlikte açmanızı isterler. GNU Genel Kamu Lisansı metni, aldığınız özgürlükleri alıcılara aynen aktarmanızı ve işin tamamını aynı lisansla lisanslamanızı ister. Copyleft lisansların çoğu açık kaynaktır, ama her açık kaynak lisansı copyleft değildir.
Koşul, parçanın kendi lisans metninde durur ve aynı parçanın sürümleri arasında değişebilir. Görüntü işleme kütüphanesi OpenCV’nin lisans sayfası bunu açıkça yazar: yeni sürümler Apache lisansıyla, eski sürümler BSD lisansıyla dağıtılır. Lisansın adını bilmek bu yüzden yetmez; yığında hangi sürümün durduğu ayrı bir sorudur ve devir listesinde kendi satırını ister.
Aynı sistemde duran parçalar da farklı metinler taşır. Laravel’in depodaki lisans dosyası MIT metnidir; Node.js’in lisans dosyası aynı izin verici biçimdedir; Python ise kendi vakfının lisansıyla dağıtılır ve resmi belgeleri bütün Python sürümlerinin açık kaynak olduğunu yazar. Teklifteki açık kaynak teknolojiler ifadesi bu yüzden tek bir lisansı değil, parça başına ayrı bir metni anlatır.
Hangi lisansın sizin işinize uyduğunu bu yazı söylemez. Söyleyebildiği şey koşulun nerede okunduğudur: parçanın kendi deposundaki lisans dosyasında, kullandığınız sürüme ait metinde.
Lisans ne vermez: güncelleme, destek ve “olduğu gibi” teslim
Yaygın açık kaynak lisansları yazılımı olduğu gibi verir: yazana güncelleme, destek ya da hata düzeltme borcu yüklemez ve belirli bir amaca uygunluğu üstlenmez. Bu madde izin verici metinde de karşılıklılık şartlı metinde de bulunur. MIT metni yazılımın olduğu gibi sağlandığını ve yazarların hiçbir talepten sorumlu tutulamayacağını yazar; Apache lisansı ve Python’un lisansı da aynı olduğu gibi ifadesini taşır.
MIT metninin tamamında yazara güncelleme yapma, destek verme ya da hata düzeltme yükümlülüğü getiren bir madde yoktur; tersine bir sorumluluk reddi vardır. Güvence ve bakım lisansla gelmez. İkisi de açık kaynak etrafında ayrıca satılan ya da birinin ayrıca üstlendiği işlerdir ve üstlenen taraf adıyla yazılmadıkça kimse üstlenmiş sayılmaz.
Açık kaynak yazılım güvenli mi sorusunun dürüst cevabı da buradan çıkar. Kodu herkesin okuyabilmesi, birinin onu sizin adınıza okuyup sınadığını göstermez. Lisans, yazılımın sizin işinize uyduğunu bile söylemez. Bir denetim varsa birinin yaptığı bir iştir ve yapanın adı bir yerde yazılıdır. Açık kodun daha güvenli ya da daha az güvenli olduğu yönünde bir hüküm lisanstan çıkmaz; çıkan tek şey, denetimin ayrıca aranması gerektiğidir.
Sık duyulan bir itiraz, açık parçaların güncellemesini topluluğun zaten yaptığıdır. Topluluk yeni bir sürüm yayımlayabilir; bu, sizin sisteminizde çalışan kopyanın güncellendiği anlamına gelmez. Yeni sürümü sisteminize taşımak, çalışan bölümlerle uyumunu sınamak ve gerekirse beklemeye karar vermek, sistemi sürdüren tarafın işidir ve lisans bu işi kimseye vermez.
Sonuç şudur: sisteminizdeki her açık parça, lisansın üstlenmediği bir izleme kalemidir. Sürümünü kim takip edecek, güncellemeyi kim uygulayacak, uyumsuzluk çıkarsa kim bakacak; bu soruların cevabı lisansta değil, bakımı sürdüren ekipte durur. KGM SsangYong’un kurumsal sitesinde uygulama çatısına ve ön yüz setine bu yüzden dokunulmadı: siteyi bugün de marka tarafının kendi ekibi sürdürüyor ve o ekibin tanımadığı bir parça, izleme işini dışarıdaki birine bağlardı. Araç seçiminin bakım kararını nasıl belirlediğini bakımı kimin üstlendiğini anlatan yazıda açtık.
Ticari destek sözleşmesiyle satılan açık kaynak ürünlerde de lisans değişmez; yazılım yine olduğu gibi verilir. Güvenceyi o durumda lisans değil, yanına imzalanan destek sözleşmesi verir. Güvence aradığınız yer bu yüzden her zaman bir sözleşme satırıdır.
Açık bir çatının üstüne yazılan uygulama açık kaynak olmaz: kodun sahibini sözleşme yazar
Açık kaynak bir çatının lisansı çatıyı kapsar; üstüne sizin için yazılan uygulamanın kime ait olacağını lisans değil imzalı sözleşme yazar. Çatı dediğimiz şey, uygulamanın üstüne kurulduğu hazır yapıdır: Laravel bunun bir örneğidir ve izin verici bir lisansla, MIT metniyle dağıtılır. Bu lisans, üstüne yazılan uygulamanın da açılmasını istemez. İstediği tek şey, çatının telif ve izin bildiriminin kopyalarda yerinde durmasıdır.
Karşılıklılık şartlı bir çatıda tablo değişebilir: türev iş dağıtılıyorsa aynı lisansla açılması istenir. Hangisinin geçerli olduğunu çatının kendi lisans metni söyler.
Portföydeki karşılığı KGM SsangYong’un kurumsal sitesi. Site Laravel üstünde kuruluydu, bize çalışır durumdayken ulaştı ve işe kodu baştan okuyarak başladık. Aynı sistemde ayrı kod katmanları yan yana duruyordu: herkesin indirebildiği çatı ve onun üstünde, siteye özgü uygulama. Devralma işimizde devir günü istenen tek şeyin koda okuma yetkisi olması da bundandır; uygulamanın kodu, çatınınki gibi kendiliğinden herkese açık bir depoda durmaz.
Mülkiyet sorusu bu yüzden lisansta değil, sözleşmede cevaplanır. Kendi Kullanım Şartlarımız da fikri hakların devrini sitede düzenlemez; bu konuyu taraflarca ayrıca imzalanan sözleşmeye bırakır. Bu satırın sözleşmede nerede durduğunu ve nasıl yazıldığını web sitesi sözleşmesindeki maddeleri anlatan rehberde ele aldık. Teklif aşamasında aranacak satırlar kısadır: uygulamanın fikri hakları kime geçiyor ve kaynak kodun teslimi hangi satırda yazılı.
Sözleşme uygulamayı kime devrederse devretsin, uygulamanın içinde kalan açık parçaların bildirimleri yerinde durur. Sözleşme uygulamanın sahibini yazar; parçaların lisansını kaldıramaz. MIT lisanslı bir kütüphanenin telif bildirimi, onu kullanan uygulama kimin olursa olsun kopyada kalmaya devam eder.
Bir sistemde yan yana duran parça türleri: açık kaynak kütüphane, dış sağlayıcının servisi, size özel kod
Teklifteki parçaları ayırmanın en kolay yolu, onları tek bir sistemde yan yana görmektir. Vipkurum’un soru kırpma aracında basılı kitapçığın sayfasını sorulara OpenCV ayırıyor; görüntüyü işleyen Python servisi, Laravel tarafındaki içerik yönetimine Node.js üzerinden bağlanıyor. Bu adların her biri açık kaynak lisanslı bir kütüphane ya da çalışma zamanıdır ve lisans metni kendi deposunda durur.
Aynı zincirde cevap anahtarını doğru soruya bağlama işini Gemini ve OpenAI modelleri yapıyor. Bu parçalar yığında bir kütüphane olarak değil, çağrılan bir servis olarak duruyor: kodu sağlayıcıda kalıyor, size dönen yalnız cevap. API nedir yazısında bunu başkasının kapısından geçmek diye anlattık; kapının adlarını ve cevabın biçimini karşı taraf belirliyor. API ile çağrılan böyle bir serviste elinize bir lisans metni değil, sağlayıcının kullanım şartları geçer ve bu parça teklifteki açık kaynak satırına girmez.
Geriye bu parçaları birbirine bağlayan ve işin kendisini tanımlayan kod kalıyor: sayfadan soru ayırma akışı, cevap anahtarı eşleştirme, örnekten yeni soru üretme ve soru havuzunun düzeni. Bu türden kod ne bir kütüphanenin lisansıyla ne de bir sağlayıcının şartlarıyla gelir. Kime ait olduğunu, yazdıran ile yazan taraf arasında imzalanan sözleşme belirler.
Aşağıdaki tablo bu türleri, teklifte her biri için sorulacak sorularla yan yana koyuyor. Örnekler soru kırpma zincirinden; satırlar ise kendi teklifinizdeki parçaları yerleştireceğiniz kutulardır.
| Parça türü | Soru kırpma zincirindeki örneği | Kodunu okuyup değiştirebilir misiniz | Sürümünü ve güncellemesini kim izler | İzin ve sahiplik nerede yazılı |
|---|---|---|---|---|
| Açık kaynak kütüphane ve çalışma zamanı | Python, OpenCV, Node.js ve Laravel | Okuyabilir ve değiştirebilirsiniz; koşul, bildirimi korumak ya da türev işi aynı lisansla açmaktır | Lisans kimseyi yükümlü kılmaz; izleme, bakımı sürdüren ekibin satırına yazılır | Parçanın kendi lisans metninde; sürüme göre değişebilir |
| Dış sağlayıcının servisi | Gemini ve OpenAI modelleri, API ile çağrılıyor | Okuyamaz, değiştiremezsiniz; kod sağlayıcıda kalır | Sağlayıcı; size düşen, dönen cevabı kendi kayıt düzeninize oturtmaktır | Sağlayıcının kullanım şartlarında ve hesabın kimin adına açıldığında |
| Size özel yazılan kod | Sayfadan soru ayırma, cevap anahtarı eşleştirme, soru havuzu akışı | Lisansa değil sözleşmeye bağlıdır; devirde istenen tek şey koda okuma yetkisidir | Sözleşmenin bakım satırı kimi yazıyorsa o | İmzalı sözleşmede; Kullanım Şartlarımız fikri hak devrini oraya bırakır |
Tabloyu okuma yönü satırlar boyuncadır: bir parçayı doğru satıra koyduğunuzda, kimin neyi izleyeceği sorusu kendiliğinden o satırın sağ tarafındaki hücrelere düşer. Türler tek bir parçada üst üste de binebilir. Açık kaynak bir ürünün sağlayıcı tarafından barındırılan sürümünde kod herkese açıktır, ama kullandığınız kopyayı güncelleyen sağlayıcıdır; o zaman kütüphane satırı ile servis satırı birlikte okunur. Abonelikle kullanılan bir üründe kaynak kodun zaten devredilmediğini, yerine neyin istendiğini teslim alırken neyi devraldığınızı anlatan yazıda yazdık.
Teklifte “açık kaynak teknolojilerle geliştirilir” satırı ne söyler, ne söylemez
Teklifteki bu satır yalnız lisans ücreti ödenmeyen parçaları söyler: yığındaki çatı ve kütüphaneler için kimseye lisans bedeli ödenmez ve kodları herkese açıktır. Lisansın verdiği hak budur ve satır bu haktan fazlasını taşımaz. Satırı okuduktan sonra teklifte ayrıca aranacak sorular, lisansın vermediği şeylerin teklif dilindeki karşılığıdır.
Satır, uygulamanın kodunun kime ait olacağını söylemez. Bunu sözleşmenin fikri hak satırı yazar ve o satırı imzadan önce okumak sizin elinizdedir; yukarıda andığımız sözleşme rehberi aramaya nereden başlanacağını gösteriyor.
Hangi parçanın sürümünü kimin izleyeceğini de söylemez. Lisans parçayı olduğu gibi verdiği için izleme bakım satırına yazılır ve o satırda bir ad durmuyorsa iş sizde kalmış demektir.
Parçanın sizin işinize uyduğunu kimin sınadığı da satırda yazmaz. Lisans belirli bir amaca uygunluğu açıkça reddeder; uygunluk, projenin zor kısımlarından seçilen kabul senaryolarında sınanır ve senaryo kaydıyla kapanır. Bu sınamanın nasıl kurulduğunu kabul ederken neyi test ettiğinizi anlatan yazıda anlattık.
Teklifteki araç listesini, araçların adlarını bilmeden nasıl okuyacağınızı web yazılım ajansı seçerken izlenecek yolu anlatan rehberde bulabilirsiniz. Yığına neyin eklendiğini doğrudan sormak isterseniz o soru yazılım firmasına sorulacak sorular arasında duruyor.
Satır teklifte hiç yoksa ve yığın kapalı ürünlerden oluşuyorsa da aynı sorular sorulur. Açık kaynak satırı bu soruları yaratmaz; yalnız lisans ücreti kalemini sıfırlar.
KGM SsangYong’un kurumsal sitesinde yığına giren parçalar devir listesinde tek tek adıyla yazılı ve o listede yeni olarak yalnız bir önbellek katmanı var. Elinizde başka bir ekibin yazdığı, açık kaynak bir çatı üstünde çalışan bir sistem varsa, devir gününün nasıl yürüdüğünü ve bu listenin nasıl tutulduğunu proje devralma sayfasında okuyabilirsiniz.