# Açık kaynak yazılım
Açık kaynak yazılım ya da açık kaynak kodlu yazılım, telif hakkı sahibinin kullanıcılara yazılımı ve kaynak kodunu herhangi bir amaç için kullanma, inceleme, değiştirme ve dağıtma haklarını verdiği bir lisans kapsamında yayınlanan bilgisayar yazılımıdır. Kullandıkları lisans gereğince isteyen kişi ve grupların yazılımı kendi kişisel ihtiyaçlarına uyarlamalarına ve sonunda değişikliği benzer tercihlere sahip kullanıcılar için bir çatal olarak yayınlamalarına olanak tanır.
Açık kaynak yazılımlar, halka açık bir şekilde ortak çalışmaya dayalı bir şekilde geliştirilebilir. Açık kaynak yazılım, açık işbirliğinin önde gelen bir örneğidir. Bu, kodlama yeteneğine sahip herhangi bir kullanıcının geliştirmeye çevrimiçi olarak katılabileceği ve olası katkıda bulunanların sayısının sınırsız olduğu anlamına gelir. Kodu inceleme yeteneği, halkın yazılıma olan güvenini kolaylaştırır.
Açık kaynak yazılım hareketi, Richard Stallman tarafından 1983'te GNU projesinin başlatılmasıyla başlayan özgür yazılım hareketinden 1998 yılında dallanmıştır. Açık kaynak kavramı Şubat 1998'de Eric Raymond ve Bruce Perens tarafından Açık Kaynak Girişimi'nin (OSI) kurulması ile resmîleştirilmiştir.
Açık kaynak kodlu yazılım geliştirme, tek bir şirketin geliştirdiği yazılımın ötesinde farklı bakış açıları getirebilir. Standish Group tarafından hazırlanan bir 2008 raporu, açık kaynaklı yazılım modellerinin benimsenmesinin tüketiciler için yılda yaklaşık 60 milyar dolar tasarruf sağladığını belirtti.


## Tarih.
Açık kaynak yazılım hareketi, Richard Stallman tarafından 1983'te GNU projesinin başlatılmasıyla başlayan özgür yazılım hareketinden 1998 yılında dallanmıştır. Stallman, açık kaynak topluluğu içinde, yazılım geliştirme için özgürce paylaşılan kaynak kodunun kavramsallaştırılmasında önemli rol oynayan kişi olarak kabul edilir.
1997'de Eric Raymond yazılım mühendisliği yöntemleri üzerine yazdığı, Linux çekirdek geliştirme süreci ve gözlemlerine dayanan makale önemli bir ilgi gördü ve Netscape Communications Corporation'ı dönemin popüler internet tarayıcısı Netscape'in kaynak kodlarını özgür bir lisansla yayınlamaya motive eden bir faktördü.
Ocak 1998'de Netscape kaynak kodunun GNU Genel Kamu Lisansı'na benzer Netscape Kamu Lisansı ile yayınlanacağının duyurulması üzerine 3 Şubat 1998'de özgür yazılım topluluğundan bir grup insan, özgür yazılım kavramındaki "özgür" kelimesinin ima ettiği felsefi ve siyasi gündem yerine özgür yazılımın iş dünyasına pragmatik terimlerle tanıtılmasını tartışmak üzere Kalifornia'nın Palo Alto şehrinde bir araya geldi. Özgür Yazılım Vakfı'nın sosyal aktivizminin şirketlere çekici gelmediği fikri ve yazılım kaynak kodu üzerinde paylaşma ve işbirliği yapma iş potansiyelini vurgulamak için özgür yazılım kavramını yeniden markalamanın bir yolunu aradılar. Ayrıca grup, özgür (İngilizce: free) kelimesinin İngilizcede hem özgür hem de ücretsiz anlamlarına gelmesi nedeniyle oluşan belirsizliğin işletmelerin bu terimi benimsemesinde cesaret kırıcı olarak görüyordu. Grupta bulunan kişiler arasında Christine Peterson (Foresight Enstitüsü'nden), Larry Augustin ve Jon Hall (her ikisi de Linux International'dan), Sam Ockman (Silikon Vadisi Linux Kullanıcı Grubu'ndan), Todd Anderson ve Eric Raymond vardı. Orada bulunan Christine Petersen, "açık kaynak" terimini önerdi. Ertesi gün Linus Torvalds destek verdi. Bruce Perens gruba "açık kaynak" ticari markasını oluşturmayı ve bu web sitesini barındırmayı teklif etti ve bir hafta sonra www.opensource.org web sitesini açtı. Richard Stallman bu terimi benimsemedi.
Şubat 1998'de açık kaynak hareketinin resmîleştirilmesi, genel eğitim sağlanması ve savunuculuğu için Eric Raymond ve Bruce Perens tarafından Açık Kaynak Girişimi (OSI) kuruldu. 1997'de Bruce Perens öncülüğünde Debian projesi kapsamında Debian Özgür Yazılım Yönergeleri oluşturmuştu. Şubat 1998'de Açık Kaynak Girişimi'nin kurulması ile beraber söz konusu yönergede Debian referansları "açık kaynak" ile değiştirilerek ve bir miktar revize edilerek Açık Kaynak Tanımı oluşturuldu.


## Tanım.
Açık Kaynak Girişimi'nin (OSI) tanımı, uluslararası düzeyde birçok hükûmet ve şirket tarafından standart veya fiili tanım olarak tanınmaktadır. Açık Kaynak Girişimi, bir yazılım lisansını açık kaynak olarak kabul edip etmediğini belirlemek için Açık Kaynak Tanımını kullanır. Tanım, 1997 yılında Bruce Perens öncülüğünde yazılan Debian Özgür Yazılım Yönergeleri'ne dayanmaktadır. Perens, Debian Özgür Yazılım Yönergelerini oluştururken Özgür Yazılım Vakfı'nın "dört özgürlük" tanımını kullanmamıştır. Şubat 1998'de Açık Kaynak Girişimi'nin kurulması ile beraber Perens, yönergede Debian referanslarını "açık kaynak" ile değiştirilerek ve bir miktar revize edilerek Açık Kaynak Tanımı oluşturmuştur.
Perens'in tanımına göre yazılımın hızlı bir şekilde gelişmesini sağlamak amacıyla herhangi bir kuruluş veya kullanıcı tarafından kullanıma veya dağıtıma çok az kısıtlama getirmesi, açık kaynağın açık bir özelliğidir.


### "Açık", "özgür" ve "özgür ve açık".
Bir yazılımın açık kaynak sayılması için Açık Kaynak Tanımı'na uyması, bir özgür yazılım sayılması için Özgür Yazılım Tanımı'na uyması gerekir. Bu iki tanım pratikte birbirine çok yakın olduklarından Özgür Yazılım Vakfı'nın özgür kabul ettiği yazılım lisansları ile Açık Kaynak Girişimi'nin açık kaynak kabul ettiği yazılım lisanslar çok büyük ölçüde örtüşmektedir. Örneğin yaygın kullanılan GNU GPL, MPL, MIT Lisansı, AGPL, LGPL, BSD lisansları hem özgür yazılım lisansıdır hem de açık kaynak yazılım lisansıdır. Bu nedenle neredeyse tüm özgür yazılımlar açık kaynak yazılımdır ve neredeyse tüm açık kaynak yazılımlar da özgür yazılımdır. Buna karşın, bu iki görüşün savunucuları arasında süregelen felsefi bir anlaşmazlık vardır. "Özgür" ve "açık kaynak" kelimeleri arasında tarafsız bir yol izlemek isteyenler ise genellikle "özgür ve açık kaynak" terimini kullanmaktadır.


## Açık kaynak yazılım geliştirme.
### Geliştirme modeli.
Açık kaynak hareketinin öncülerinden Eric Raymond, 1997 tarihli Katedral ve Pazar isimli yayınında açık kaynak yazılım geliştirme için katedral ve pazar(çarşı) adını verdiği iki modeli tarif etmekte ve pazar modelini önermektedir.
Raymond, yazılımın geleneksel yöntemlerle geliştirilmesini, bireylerin veya küçük grupların dikkatli ve izole bir çalışmasıyla bir katedral inşa etmeye benzetiyor ve yazılımların pazar tarzı kullanılarak, farklı gündem ve yaklaşımlarla geliştirilmesi gerektiğini öne sürüyor. Katedral modeli olarak adlandırdığı geleneksel geliştirme modelinde ilerleme merkezi bir şekilde gerçekleşir. Roller açıkça tanımlanmıştır, projeyi yönetmekten sorumlu kişiler ve uygulamadan sorumlu kişiler bellidir. Geleneksel yazılım mühendisliği katedral modelini takip eder. Ancak pazar modeli farklıdır. Bu modelde roller açıkça tanımlanmamıştır. Pazar modeli kullanılarak geliştirilen yazılımın aşağıdaki özelliklere sahip olması beklenir.
Kullanıcılara ortak geliştiriciler gibi davranılmalıdır: Kullanıcılara ortak geliştiriciler gibi davranılır ve bu nedenle yazılımın kaynak koduna erişimleri olmalıdır. Ayrıca, kullanıcıların yazılıma eklemeler, kod düzeltmeleri, hata raporları, belgeler vb. göndermeleri teşvik edilir. Daha fazla ortak geliştiriciye sahip olmak, yazılımın gelişme hızını artırır.
Erken sürümler: Yazılımın ilk sürümü, ortak geliştiricileri erken bulma şansını artırmak için mümkün olduğu kadar erken yayınlanmalıdır.
Sık entegrasyon: Proje yaşam döngüsünün sonunda çok sayıda hatanın düzeltilmesi yükünü önlemek için kod değişiklikleri mümkün olduğunca sık entegre edilmelidir (paylaşılan bir kod tabanına birleştirilmelidir). Bazı açık kaynaklı projeler, entegrasyonun otomatik olarak yapıldığı gecelik yapılara sahiptir.
Çeşitli versiyonlar: Yazılımın en az iki versiyonu olmalıdır. Daha fazla özelliğe sahip daha hatalı bir sürüm ve daha az özelliğe sahip daha kararlı bir sürüm olmalıdır. Hatalı sürüm yani geliştirme sürümü, en son özelliklerin anında kullanılmasını isteyen ve henüz kapsamlı bir şekilde test edilmemiş kodu kullanma riskini kabul etmeye istekli kullanıcılar içindir. Kullanıcılar daha sonra ortak geliştirici olarak hareket edebilir, hataları bildirebilir ve hata düzeltmeleri sağlayabilir.
Yüksek modülerleştirme: Yazılımın genel yapısı, bağımsız bileşenler üzerinde paralel geliştirmeye olanak sağlayacak şekilde modüler olmalıdır.
Dinamik karar alma yapısı: Değişen kullanıcı gereksinimlerine ve diğer faktörlere bağlı olarak stratejik kararlar veren, resmi veya resmi olmayan bir karar alma yapısına ihtiyaç vardır.
Açık kaynak geliştirme süreci, geliştiricilerin yeni özellikler eklemeleri gerekip gerekmediğini veya projelerinde bir hatanın düzeltilmesi gerekip gerekmediğini değerlendirdikleri gereksinimlerin ortaya çıkarılmasıyla başlar. Bu, açık kaynak yazılım topluluğuyla hata raporlama ve izleme veya e-posta listeleri ve proje sayfaları gibi yollarla iletişim kurularak sağlanır. Daha sonra, açık kaynak yazılım geliştiricileri bir görev seçer veya bu göreve atanarak çözüm aranır. Açık kaynak yazılımda çözümler için çoğu zaman birçok farklı olası yol olduğundan, en iyi çözüm dikkatlice düşünülerek ve hatta bazen geri bildirimi ile seçilmelidir. Geliştirici daha sonra kodu geliştirmeye ve işlemeye başlar. Kod daha sonra meslektaşları tarafından test edilir ve incelenir. Geliştiriciler, sürekli entegrasyondan elde edilen geri bildirimler yoluyla kodlarını düzenleyebilir ve geliştirebilirler. Liderlik ve topluluk projenin tamamından memnun kaldıktan sonra kısmen yayınlanabilir ve kullanıcı talimatları belgelenebilir. Proje yayınlanmaya hazırsa dondurulur ve yalnızca ciddi hata düzeltmeleri veya güvenlik onarımları yapılır. Sonunda proje tamamen yayınlanır.


## Lisanslama.
Açık kaynak lisansları, yazılım ve diğer ürünlere yönelik kaynak kodunun, planın veya tasarımın tanımlanmış şartlar ve koşullar altında kullanılmasına, değiştirilmesine ve dağıtılmasına (değişiklik yapılarak veya yapılmadan) olanak tanıyan lisans türüdür. Bu, son kullanıcıların ve ticari şirketlerin kaynak kodu, planı veya tasarımı kendi özelleştirme, merak veya sorun giderme ihtiyaçlarına göre incelemelerine ve değiştirmelerine olanak tanır. Açık kaynak lisanslı yazılımlar çoğunlukla ücretsiz olarak mevcuttur, ancak ücretsiz olmak zorunda değildir. Kaynak kodun yalnızca kişisel kullanım için yeniden dağıtımına ve değiştirilmesine izin veren, ticari amaçlı yeniden dağıtım ve değiştirilmesine izin vermeyen lisanslar genellikle açık kaynak lisansı olarak kabul edilmezler. Özgür ve açık kaynak ürünleri iki ana tür lisans kategorisi kapsamında lisanslanır: İzin verici lisanslar ve Copyleft lisanslar.