Açık Kaynak Yazılım Nedir?
Kaynak kodu herkese açık bir şekilde yayınlanan, değiştirilebilen ve yeniden dağıtılabilir yazılımlara açık kaynak yazılım denir. Geliştiricilerin yazılımlarını kaynak kodu açık bir şekilde yayınlaması ve diğer geliştiriclerin bu kaynak kod ile çalışabilmesi açık kaynak kültürünün bir parçasıdır.
Bilgisayarların hayatımıza girdiği 50’li ve 60’lı yıllardan 1970’lere kadar kullanıcılar tarafından yazılım kodlarının paylaşılması normal karşılanan bir durumdu. 1974 yılında yazılım kodlarının telif hakkı ile korunabilecek bir ürün olduğu kabul edilmiştir ve Telif Hakkıyla Korunan Eserlerin Yeni Teknolojik Kullanımı Komisyonu (CONTU) kurulmuştur. Böylelikle özel kaynak kodlu yazılımların yükselişi başlamış oldu.
Özel mülkiyete sahip yazılımların sektördeki yeri güçlenirken özellikle akademisyenlerden oluşan bir grup yazılımcı, kodlarını açık bir şekilde paylaşmaya devam ediyordu. 1983 yılında Richard Stallman yazılımın özgür olması gerektiğini belirterek özgür yazılım hareketini başlattı. 1985 yılında ise Özgür Yazılım Vakfı’nı kurdu. Bununla birlikte özgür yazılım lisansı Genel Kamu Lisansı`nı ortaya koydu.
90’lı yılların sonuna yaklaşıldığında Eric S. Raymond “Katedral ve Çarşı” başlıklı yazısında özel mülkiyetli yazılım geliştirmeyi ve özgür yazılım hareketini karşılaştırdı. Devamında Netscape, Mozilla tarayıcısını açık kaynak olarak paylaşarak açık kaynak hareketini başlatmış oldu. Bugün özgür yazılım ve açık kaynak yazılım kavramları iç içe geçmiş durumda. Özgür yazılımda özgürlük ön plandadır. Herhangi bir kısıtlama içermezler, ekonomik kazançtan daha önemli tutulur. Her özgür yazılım aynı zamanda açık kaynaklıdır. Açık kaynak yazılım ise bazı kısıtlamalara sahip olabilir. Kullanılan lisansa göre bu kısıtlamalar değişiklik gösterebilir. Bu sebeple her açık kaynak yazılım, özgür yazılım olmayabilir.
Açık Kaynak Kodlu Yazılımın Özellikleri Nelerdir?
Açık kaynak yazılım istenilen şekilde değiştirilip üzerinde geliştirmeler yapılabilir. Lisansının imkan tanıdığı şekilde yeniden dağıtılabilir. Açık kaynak yazılımlar geliştiriciler ve kullanıcılardan oluşan bir topluluğa sahiptir. Bu topluluk sürekli bilgi alışverişinde bulunarak yazılımı en iyi haline getirmek üzere beraber çalışır.
Özellikle kurumlarda kullanımı ücretsiz olan açık kaynak yazılımlar tercih edilerek maliyetler kısılabilir ve tasarruf sağlanarak bu kaynak başka alanlarda değerlendirilebilir.
Açık kaynak yazılımlar güvenlidir. Kaynak kodu herkese açık olduğundan çok fazla geliştirici tarafından incelenir. Hatalar hızlı bir şekilde tespit edilirken zararlı kodların yazılımda yer almasının önüne geçilir. Bu açıdan açık kaynak yazılımlar güvenlik sunar.
Açık kaynaklı Yazılımın Avantajları Nelerdir?
Açık kaynak yazılımlar birçok avantajı beraberinde getirir. Ücretsiz olarak kullanılabilmesi en çok söz edilen avantajlarındandır. Bununla beraber daha pek çok avantajı vardır.
- Kullanması ücretsizdir. Açık kaynak yazılımları kullanmak için lisanslama ücreti gerekmez.
- İstenilen geliştirmeler yapılabilir, yazılım amaca özel hale getirilebilir.
- Sahip olduğu lisansa göre açık kaynak yazılımlar, geliştirilen yazılımların bir parçası olarak kullanılabilir. Yeniden dağıtılabilir ve ticari gelir elde edilebilir.
- Kaynak kodunun herkes tarafından görülebilmesi yazılımın güvenliğini artırır. Oldukça fazla geliştiricinin yazılım üzerinde çalışması hataların daha kolay tespit edilmesini ve hızlı bir şekilde giderilmesini sağlar.
- Topluluk desteğine sahip açık kaynak yazılımlar sürekli geliştirilmeye devam eder. Yeni teknolojiler ve ihtiyaçlar yazılıma kısa süre içinde eklenebilir.
- Açık kaynak yazılımlar geliştiricilere kendi uygulamalarını geliştirmeleri konusunda da yardımcı olur. Özellikle kod yazmaya yeni başlayan geliştiriciler, var olan kodları inceleyebilir.
Açık kaynaklı Yazılımın Dezavantajları Nelerdir?
Avantajlarının yanı sıra açık kaynak yazılımların dezavantajları da vardır. İhtiyaç duyulduğunda destek bulunamama ihtimali en büyük dezavantajlarındandır.
- Açık kaynak kodlu yazılımlar zaman içerisinde topluluk desteğini kaybedebilir. Geliştiriciler yazılımı geliştirmeye son verebilir.
- Karşılaşılan sorunlar için her zaman topluluk desteği bulunamayabilir.
- Yazılımda ihtiyaç duyulan geliştirmeler için yazılımcılara ihtiyaç duyulabilir.
- Açık kaynaklı yazılımların donanımlar ile uyumluluğu kısıtlıdır.
- Arayüzler ve kullanıcı deneyimleri genellikle zayıftır.
- Açık kaynak yazılım kullanıcılara herhangi bir garanti sunmaz, sorumluluk üstlenmez.
Açık Kaynaklı Yazılım Lisansları
Açık kaynak yazılımlar her ne kadar kaynak kodları herkese açık olarak yayınlanmış olsa da fikri mülkiyet haklarını belirten lisanlara sahiptir. Açık kaynak yazılım lisansları Copyleft ve Permissive olmak üzere ikiye ayrılır.
Copyleft kavramı Richard Stallman tarafından 80’li yılların ortasında tanımlanmıştır. Özgür yazılımın herkes tarafından kullanılabileceğini, değiştirilebileceğini ve yeniden dağıtılabileceğini söylerken bununla birlikte yeniden dağıtılan yazılımların da özgür yazılım olarak kalması gerektiğini belirtir. Sonraki yıllarda telif hakkı, Copyright teriminin tam tersini ifade eden Copyleft kelimesi kullanılmaya başlanmıştır. GNU GPL ve MPL lisansı copyleft lisanslardandır.
Permissive lisanslar ise yazılımların değiştirilmesi ve yeniden dağıtılmasında telif hakkı bildiriminin ve lisans metninin bulunmasını şart koşan lisanlardır. Yazılımın sahip olduğu lisansın kısıtlamaları çerçevesinde hareket edilebilir. BSD, MIT ve Apache lisanları permissive lisanslardan en çok bilinenleridir.
En çok tercih edilen açık kaynak yazılım lisanslarına örnek verecek olursak:
GNU Genel Kamu Lisansı (GNU GPL)
GNU GPL lisansı en yaygın kullanılan özgür yazılım lisanslarındandır. Lisansın ilk sürümü 80’li yılların sonunda Richard Stallman tarafından hazırlanmıştır. GPL lisansına sahip açık kaynak bir yazılım, sınırsız olarak kullanılabilir, amaca uygun olarak değiştirilebilir, yeniden dağıtılabilir. Üstelik açık kaynak kodunda değişiklik yapıldıktan sonra ortaya çıkan yazılım kazanç sağlama amacıyla satılabilir. Tüm bunları yaparken uyulması gereken tek şart ise dağıtılacak yazılımın da açık kaynak kodlu olmasıdır. Linux çekirdeği, Wordpress ve Joomla içerik yönetim sistemleri GPL lisansı ile dağıtılan yazılımlara örnek verilebilir.
Mozilla Kamu Lisansı (MPL)
İlk versiyonu Netscape çalışanı Mitchell Baker tarafından hazırlanan Mozilla Kamu Lisansı copyleft lisanslardandır. Açık kaynak ve özel mülkiyet yazılım geliştiricilerin endişelerini çözmeye çalışan GPL ve BSD benzeri lisanlar arasında bir seçenek olmayı amaçlar. Mozilla Vakfı tarafından geliştirilen Firefox ve Thunderbird yazılımları MPL lisansı ile dağıtılmaktadır.
MIT Lisansı
Massachusetts Teknoloji Enstitüsü tarafından hazırlanan MIT lisansı en çok tercih edilen popüler bir özgür yazılım lisansıdır. GPL lisansı ile benzerliği bulunmakla beraber kaynak kodunun kullanımına kısıtlama getirmektedir. Açık kaynak kodu istenildiği gibi değiştirilebilir ve yeniden dağıtılabilir. Kapalı kaynak yazılımlarda da kullanılabilir. Ancak yazılımda kullanılan MIT lisansa sahip kodun telif hakları bildirilmelidir. Angular, Ember.js gibi frameworkler ve Godot, Cocos2d gibi oyun motorları MIT lisansı ile dağıtılmaktadır.
Apache Lisansı
Apache Yazılım Vakfı (ASF) tarafından yayımlanan özgür yazılım lisansıdır. Bu lisansa sahip yazılımlar değiştirilebilir ve yeniden dağıtılabilir. Aynı lisansı kullanma zorunluluğu bulunmamakla beraber Apache lisansına ait kodların kullanıldığı belirtilmelidir. Apache vakfı tarafından yayınlanan Apache HTTP Server, OpenOffice gibi yazılımlar ve Android işletim sistemi Apache lisansı ile dağıtılan yazılımlara örnek verilebilir.
BSD Lisansı
Bir diğer özgür yazılım lisansı da BSD lisansıdır. BSD lisansı açık kaynak kodunun sınırsız olarak kullanılmasına, değiştirilmesine ve yeniden dağıtılmasına izin verir. Kaynak kodunun kullanıldığı yeni yazılımın açık kaynak olma zorunluluğu yoktur. BSD lisansının farklı versiyonları bulunmaktadır. FreeBSD işletim sistemi, Django web frameworkü BSD lisansı ile dağıtılan yazılımlara örnek gösterilebilir.
Açık Kaynaklı Yazılım ile Diğer Yazılım Türleri Arasındaki Fark Nedir?
Kaynak kodunun herkes tarafından incelenebildiği ve sahip olduğu lisanslamaya göre değiştirilerek yeniden dağıtılabilen yazılımların açık kaynak yazılım olarak adlandırıldığından bahsettik. Bir de bu yazılımların tam tersi şirket ya da şahıs olabilen yazılımı geliştiren topluluğun tescilli, özel mülkü kabul edilen yazılımlar vardır. Bu tip yazılımlar kapalı kaynak veya tescilli yazılım olarak adlandırılır. Açık kaynak ve kapalı kaynak yazılımlar arasındaki farklar ise oldukça belirgindir.
Açık kaynak kodlu yazılımın kaynak kodları herkes tarafından görülebilir, değiştirilip yeniden dağıtılabilir. Kapalı kaynak kodlu yazılımlarda ise kaynak kod sadece yazılımı geliştirenler tarafından görülebilir ve değiştirilebilir. Yazılım bir şirket ya da grubun özel mülkiyeti kapsamındadır.
Kaynak kodu açık olan yazılımlar kullanım amacına uygun olarak özelleştirilebilir, yeni özellikler eklenebilir. Kapalı kaynak yazılımlarda ise ihtiyaç duyulan geliştirmeler geliştiriciden talep edilir.
Maliyet açısından bakıldığında kapalı kaynak yazılımların lisanslaması özellikle küçük ölçekli işletmeler için büyük bir maddi yük oluşturur. Açık kaynak yazılımlarda ise lisanslama ücreti yoktur.
Kapalı kaynak yazılımlar pazarlanması amacı göz önünde bulundurularak tasarlanır. Son kullanıcı için kullanıcı dostu arayüzler ve başarılı bir kullanıcı deneyimi sunmak amaçlanır. Açık kaynak yazılımlarda genellikle bu nokta ilk etapta biraz geri plana atılır. Açık kaynak projenin kullanımı ve topluluk desteği arttıkça arayüz ve kullanıcı deneyimi iyileştirmeleri yapılabilir.
Şirketlerin kapalı kaynak yazılımları tercih etmesinde en büyük etkenlerden birisi de yazılımın kullanımı sırasında profesyonel destek alabilmektir. Açık kaynak yazılım tarafında ise destek kısmı topluluktadır. Bir açık kaynak yazılımın topluluk desteği ne kadar fazla ise destek bulmak da o kadar kolay olur. Bununla birlikte pek çok açık kaynak kodlu yazılım geliştiricileri de profesyonel destek vererek yazılımlarından ticari gelir elde edebilecekleri modeller oluşturmakta.
Açık kaynak ile kapalı kaynak yazılım tercihinde düşündüren bir diğer konuda güvenliktir. Açık kaynak kodlu yazılımların kaynak kodlarının herkes tarafından görülebilir olması hatalara ve kötü amaçlı kodlara karşı korunmasını sağlar. Kapalı kaynak yazılımlarda ise satıcı yazılımın güvenliğini taahhüt eder. Oluşabilecek hataları ve güvenlik açıklarını hızlı bir şekilde gidermek ile sorumludur.
Açık Kaynak Kodlu Yazılım Örnekleri Nelerdir?
Açık kaynak kodlu yazılımlar sanılanın aksine oldukça fazla tercih edilmektedir. En çok bilinen açık kaynak yazılımlara bir kaç örnek verecek olursak şu uygulamalardan bahsedilebilir:
- Mozilla Firefox
- Linux işletim sistemi
- Android işletim sistemi
- VLC Player
- LibreOffice
- Visual Studio Code
- Blender
- WordPress
Sen de yazılım geliştirme kariyerinde açık kaynak yazılımlara destek vererek deneyim kazanabilirsin. Ayrıca Techcareer.net tarafından düzenlenen hackathon programlarına katılarak yeteneklerini sergileyebilir, kendini hazır hissettiğinde Techcareer.net iş ilanları sayfasından sana uygun iş imkanlarını yakalayabilirsin.