Web yazılımcılar olarak genellikle açık kaynak kodlu araçları kullanarak geliştirme yaparız. En azından bende ve tanıdığım dostlarımda durum böyle…
Peki geliştirme araçlarınızı seçerken lisans konusuna dikkat ediyor musunuz?
Eğer cevabınız evet ise; bu yazıyı okumaya devam etmenize gerek yok. Ancak cevabınız, “hayır ” ya da “hiç aklıma gelmedi” vb ise o zaman bu kısa yazıyı okumanızda fayda var. Çünkü kullandığımız araçların lisansları, projemizin geleceğini, özellikle de en önemli konu olan parasal boyutunu çok etkiler.
Programcı olarak kullandığımız araçları ikiye ayırabiliriz.
Birincisi; “php eclipse” ya da “netbeans php” (bunlar php editörleridir) gibi aracın kendisini kullandığımız ve kodlarında herhangi bir değişiklik yapmadığımız araçlardır. Bu tür araçların, açık kaynak lisanlarından birisine sahip olduğundan emin olmanız, bu araçları kullarak projeler geliştirmenize yeterli olduğu için bu yazının dışında tutuyorum.
İkincisi; Kodlarında ve dolayısi ile içeriğinde bir takım değişiklikler yaparak kullandığımız araçlar vardır. Örneğin frameworkler (codeigniter, zend framework vs) veya içerik yönetim sistemleri (wordpress, joomla, drupal vs) bunlardandır. Bu tür araçları kullanırken geliştiricilerin lisans konusuna dikkat etmesi gerekir. Programcı bu konuda bir çok lisans tipi ile karşılaşabilir. Bu lisansların herbirini ayrıntılı ele alarak, incelemek gibi bir amacım yok bu yazıda…Sadece kısa bir bakış açısı vermek amacıyla, temel bir kritere göre lisans tiplerini ikiye ayırmak istiyorum.
Geliştirici lisans metninde şu sorunun cevabını aramalı;
Aracı kullanarak, araçta değişiklikler yapıp ortaya çıkardığı yeni ürünü farklı bir lisansla dağıtabiliyor mu ? Bir başka deyişle geliştirdiği ürünü kendi ticari (kapalı kod) lisansıyla satabilecek mi?
Açık kaynak bir aracı kullanarak ticari lisanslama yapmak doğru mu, değil mi tartışması ayrı bir konu. Ancak geliştiricinin, kendi el emeğini ve göz nurunu, açık kaynak olarak dağıtma ya da ticari kapalı kod olarak satmayı kendisinin seçebilmesi gerekir. Buna inandığımı belirterek, işin biraz da felsefesine kaçan bu konuyu kapatıyorum.
GPL ; Bu ve bundan türeyen lisanlarda, eğer kodlarda değişiklik yaparak yeni bir ürün ortaya çıkarıyorsanız, bunu kapalı kod ya da farklı bir lisansla dağıtamıyorsunuz. Kısacası, geliştirdiğiniz yeni ürünün kodlarını kapatarak ve farklı bir lisansla (örn. ticari lisans vs) satamıyorsunuz. Yeni ürünü, halka açmadan kendi bünyenizde kullanabilirsiniz. Ancak dağıtmaya kalkarsanız yine GPL lisansı ile açık kaynak kodlu olarak dağıtmak zorundasınız. Örneğin Joomla, Drupal, WordPress GPL lisanslı yazılımlar olup, bunların kaynak kodlarında değişiklik yaparak yeni bir ürün ortaya koyduğunuzda bunu GPL den farklı bir türde lisansla satamıyorsunuz, dağıtamıyorsunuz. Şimdi aklınıza hemen gelebilir; O zaman joomla, drupal, wordpress için çeşitli eklentilerinin satıldığını görüyorum, bunları yaptığı yasal değil mi diye sorabilirsiniz… Tabi ki hayır; söz konusu eklentiler, adı üstünde eklenti… Örneğin bir joomla eklentisi temel joomla framework üzerinde değişiklik yaparak geliştirilmiyor. Bu eklentiler, joomla frakework’ün sunduğu imkanlarla kodda değişiklik yapılmaksızın frameworke entegre edilebilmektedir. Dolayısı ile Joomla GPL lisanslı olmasına rağmen eklentiler ticari lisansla satılabilmektedir. Aynı durum Drupal ya da WordPress te de mevcuttur.
BSD ve MIT; Aslında BSD ya da MIT, farklı lisans türleri. Ancak yukarıda bahsettiğim persfektiften baktığımızda, bu ikisi birbirine çok benzer. Yani BSD ya da MIT lisansına sahip bir yazılımı ya da aracı kullanarak, kodlarda değişiklik yaparak ortaya çıkardığınız yeni ürünü (kaynak lisans bilgisi belirtmek şartıyla) kapalı kod olarak, ticari lisansla satabiliyorsunuz. Örneğin Codeigniter ve Zend Framework BSD lisansına sahip olup, bu araçları kullanarak ürettiğiniz ürünlerin kodlarını kapatarak kendi ticari lisansınız altında satabilirsiniz. Ancak burada kaynak lisans bilgisi belirmeniz gerektiğini tekrar vurgulamak isterim.
Lisans konusuna genel olarak bu şekilde bir giriş yapmak, dikkatinizi çekmek için yeterli olur sanırım. Belki ileride tüm lisans türlerini ayrıntılı olarak ele alıp karşılaştırma fırsatı bulurum.
Sevgilerimle
________________________ Etiketler: bsd, gnu, lisans karşılaştırma, lisans seçimi, lisanslar, mit, yazılım lisanslama, yazılım lisansları
Çok açıklayıcı, akıllardaki soruları cevaplayıcı nitelikte bir yazı olmuş. Geç bir tarihte fark etmeme karşın, tüm lisans türlerini ele alan aydınlatıcı bir yazının hala çok yararlı olacağını düşünmekteyim.
Eline sağlık.
sevgili fatih, yorumun için teşekkür ederim.
evet tüm lisansları ele alan daha detaylı bir yazı yazma planım var uzun zamandır. bir kaç kez de oturup yazmayı denedim. Ancak konu, oturup tıkır tıkır bir blog yazısı şeklinde yazılacak gibi değil. Bunu gördüm. Daha çok, akademik yaklaşımla yazılması gerekiyor. Aslında çok güzel tez konusu da olur bu. Hukuk fakültelerindeki yüksek lisans ya da doktora öğrencilerine duyrulur.
Ancak en azıdan, kesin ifadelerden kaçınarak, her bir lisans ile ilgili fikirlerimi paylaştığım bir yazı ekleyeceğim buraya.
sevgiler
İbrahim Bey elinize saglık. GPL lisans ile ilgili bir noktayı bir örnek ile sormak istedim. Diyelim ki bir oyun geliştiriyorum. Bu oyunumda suyun akması, topun zıplaması gibi fizik hesapları var. Bu fizik hesapları için GPL lisanslı bir simülasyon kütüphanesi kullansam, yaptıgım oyunu GPL lisansıyla mı dagıtmak zorunda olurum? Kullandıgım kütüphanede değişiklik yapmam yada sadece kullanmam arasında bir fark olur mu?
burada asıl belirleyici konu şu; kullanılan GPL lisanslı bir kütüphane (üzerinde değişiklik yapılmış olsada, olmasada) yine GPL lisansla dağıtılması gerekiyor. yani xxx isimli bir kütüphaneyi aldınız bazı değişiklikler yaptınız ve kütüphaneye yyy ismini verdiniz. Bu yeni yyy isimli kütüphane de GPL olmak zorunda. burası zaten gayet net.
kütüphane dosyalarında (kodlarında) değişiklik yapmadan (ya da yaparak), kütüphane dosyalarının ürettiği sonuçları kullandığınız ve baştan aşağıya size ait bir yazılımı istediğiniz gibi lisanslayabilirsiniz. yani GPL lisanslı xxx kütüphanesinin içinde hesapla() isimli bir fonksiyon var diyelim. siz bu kütüphaneyi, tamamen size ait olan zzz isimli yazılımınıza include edip hesapla() fonksiyonunu kullanırsanız, zzz isimli kendi yazılımınızı istediğiniz gibi lisanslayabilirsiniz. ama bu durumda da xxx isimli GPL olarak kalmak şartı ile.
yanlız içinde bulunulan durum her zaman bu kadar net olmayabiliyor. her iki yazılımın ne kadar içi içe girdiğine göre bir sürü farklı değerlendirme ortaya çıkabilir. ayrıca mysql, jquery gibi çift lisans sunan ama temelde GPL olan yazılım ve kütüphaneler de mevcut. bunun yanında bir önceki paragrafta basettiğim konuya dünya devi firmalarda sıklıkla uymayabiliyor. örneğin, router, medya oynatıcı, uydu alıcı, cep telefonu gibi cihazlarda gömülü olarak sıkça linux kullanılmasına rağmen kodlarına erişmek mümkün olmayan bir sürü ürün var piyasada. kendilerince, “teknolojinin açığa çıkmaması için”, “cihazın stabil çalımasına sağlamak için değişikliği önlemek amacıyla”, “ekstra teknik destek yükü çıkmaması için” gibi sebepler öne sürüp açıkça kodları kapattıklarını da ifade ediyorlar. bunlar nasıl böyle yapabiliyor dersen bilemiyorum. ya da bu gibi bir durum için bir mahkeme kararı var mı detaylı araştırmadım. ama sonuçta GPL lisansını ihlal ediyorlar. hem de çok net, yoruma açık olmayacak bir konuda ihlal ediyorlar. GPL lisanslı bir kod hiçbir şekilde kapatılamaz. lisanta bu ifade açıkça geçiyor.
yazılımı dağıtmak üzere paketlerken de dikkatli olmak gerekiyor. gpl lisanslı bir yazılımı kendi yazılımınızın içine gömüp paketlerseniz riskli iş yapmış olursunuz. bu gibi durumlar için dual lisans olayını çıkaran firmalar var. örneğin yukarıda bahsettiğim mysql ya da jquery, normalde, ikinci paragrafta bahsettiğim gibi kullanılırsa, ticari yazılımda kullanılabilir ama gömülü olarak kullanılacaksa, ticari lisans sunulmuş.
eğer yazılımı paketlemiyorsanız zorun yok zaten. örneğin, web tabanlı yazılımlarda genellikle paketleme yapılmaz. yapılsa bile kurulum için mutlaka açık bir vaziyette olması gerektiği için ayrıca GPL lisanslı yazılımları belirtmeye gereki yok. böyle durumda GPL kütüphaneyi oldğu gibi alıp proje içinde herhangi bir yere koymanız yeterli.
bu arada GPL lisanslı olması demek, o yazılımın satılamayacağı anlamına gelmez. sadece lisansı değiştirilemez. ikisi farklı şeyleri ifade eder. söylemeye gerek varmıydı bilemiyorum ama eklemekte fayda var. çünkü GPL lisanslı yazılımların parayla satılamayacağı gibi yanlış bir anlayış da var.
anlatım biraz karışık oldu kusura bakma ama konu zaten çok karışık ve açık olamayan çok fazla yönleri olduğu için böyle oluyor genellikle. bu konu sözlü olarak tartışılırken de çok fazla polemik çıkıyor. tartışması en zor konulardan birisi… bir sürü örnek bir sürü istisna mevcut. ama genel hatları ile yukarıda yazdığım yaklaşımla düşünülüp geliştirme yapılırsa fazla baş ağrısı yaşanmaz.