17 Şubat 2014 Pazartesi

Geleneksel Dosyalama Sistemleri

 GELENEKSEL DOSYA SİSTEMLERİ
   Dosyalar (kütükler yada files) aynı yapıya sahip ve birbirleri ile ilişki içerisinde olan "kayıt"lar (records) topluluğudur. Kayıt ise, yapılan işlemler sırasında ana belleğe yazılan veya ana bellekten okunan veri birimidir. Bir kayıt içindeki ayrı ayrı veri parçalarına da "alan" (field) adı verilir.

   Örneğin bir öğrenci bilgileri dosyasını ele alırsak, öğrencinin adı, soyadı, numarası, aldığı dersler ve bu derslerden aldığı notlar ayrı ayrı birer alandır. Bir öğrenciye ait bütün bu alanlar bir araya gelerek öğrencinin kaydını oluşturmakta ve tüm öğrencilere ait kayıtlar da bir araya gelerek öğrenci bilgileri dosyasını oluşturmaktadır.

   Dosya yapısı için bir başka örnek de nüfus kütükleridir. Nüfus kütükleri; ad, soyad, ana adı, baba adı, doğum tarihi, doğum yeri gibi alanlar içeren kayıtlardan oluşurlar.

   Dosyalar çok büyük miktarlarda veri içerdiklerinden yan belleklerde tutulurlar ve kullanılış amaçlarına göre de değişik şekillerde düzenlenirler. Düzenleniş şekline ve kaydedildiği yan belleğe (disk yada teyp gibi) bağlı olarak bir kütüğe genel olarak iki değişik şekilde erişilir.

    Sıralı Erişimli Dosya Sistemleri
    Bu tür erişimde bilgilere daha önce belirlenen bir sıra izlenerek birbiri ardı sıra ulaşılır. Sıralı erişim yönteminin en büyük dezavantajı, herhangi bir bilgiye doğrudan ulaşmanın mümkün olmamasıdır. Örneğin 500 kayıt bulunan bir dosyada 453. sırada yer alan bir kayda ulaşmak için bu kayıttan önce yer alan, 452 adet kaydın okunarak atlanması zorunludur. Bu nedenle sıralı erişim yöntemi genellikle aynı yapıdaki işlerin birleştirilerek kümeler halinde yapıldığı (batch processing) uygulamalarda kullanılır.


    Yukarıda örnek olarak sözünü ettiğim öğrenci bilgileri dosyası karne hazırlama uygulamasında sıralı erişim yöntemi kullanılarak oluşturulabilir. Çünkü bu uygulamada öğrenci kayıtlarının öğrenci okul numaralarına göre sıralı olarak bir yan bellekte tutulmaları ve bu kayıtların yan bellekten sırayla okunarak karnelerin hazırlanması sıralı erişim yönteminin verimli olarak kullanılabileceği bir uygulamadır.
    Doğrudan Erişimli Dosya Sistemleri
    Bu erişim yönteminde, ulaşılmak istenen herhangi bir bilgiye, diğer kayıtlardan bağımsız olarak doğrudan ulaşmak mümkündür. Ancak, bunun için her kaydı diğer kayıtlardan ayıran özel bir tanımlayıcıya gerek duyulur. Bu özel tanımlayıcı "anahtar" (key) olarak adlandırılır.       Böylelikle anahtar bilindiği zaman, diğer kayıtlar incelenmeksizin ve kayıtların kaydediliş sırasıyla ilgilenilmeksizin istenilen kayda doğrudan ulaşmak mümkündür. Yine, öğrenci bilgileri dosyasını ele alacak olursak örneğin öğrenci belgesi uygulamasında 500 öğrenciden 453 numaralı olana ait bilgileri içeren belgeye ulaşmak ve bunu yazıcıdan almak gerektiğinde anahtar alan olarak numarayı kullanmakla doğrudan erişim yöntemi en etkili olan yöntemdir. Çünkü sıralı erişim yönteminde 452 adet öğrenciye ait bilgiler incelendikten sonra 453. öğrencinin bilgilerine ulaşılması zaman almakta ve gereksiz yere 452 adet kayıt incelenmiş olmaktadır.


    Sonuç olarak şunu söyleyebiliriz ki bir dosya içerisindeki tüm bilgilerin değerlendirilip elden geçirilmesi gerektiğinde sıralı erişim yöntemi, pek çok kayıt içerisinde sadece bir kayda ait bilgilerin işlenmesi gerektiği durumlarda ise doğrudan erişim yöntemi etkin olarak kullanılabilmektedir.

    Bir dosyaya erişim yöntemlerini belirleyen etmenlerden biri de dosyanın düzenleniş şeklidir. Erişim yöntemleri ile de birlikte değerlendirilecek şekilde dosyalar düzenlenişlerine göre: sıralı (sequential) dosyalar ve dizinli (indexed) dosyalar olmak üzere ikiye ayrılırlar. Sıralı dosyalar oluşturulurken, veriler birbiri ardı sıra girilir ve işlenirken de yine ancak bu şekilde işlenirler (sıralı erişim). En basit dosya yapısı olmakla beraber oldukça sık kullanılırlar.
Dizinli dosyalar ise, yapı olarak sıralı dosyalardan farklıdır. Dosyanın, kayıtların anahtarlarına göre yan belleğin hangi adresinde bulunduğunu gösteren bir dizini (index) vardır. Bu dizin, yapı olarak bazı kitapların sonlarında yer alan index ile aynıdır. Kullanılış amacı da kitaplardaki indexler gibidir. Anahtarı bilinen bir kaydın bulunduğu yan bellek adresi bu indexten öğrenilerek kayda doğrudan erişilir.

    Dizinli kütüklere doğrudan erişmek mümkün olduğu gibi, dizinde kullanılan anahtarlara göre sıralı erişmek de mümkündür. Örneğimizdeki öğrenci kütüğünü dizinli bir kütük olarak yaratırsak, karne hazırlamak ve basmak istediğimizde sıralı erişim yöntemini, bir öğrenciye ait bilgilere ulaşmak ve örneğin bir öğrenci belgesi basmak istediğimizde ise doğrudan erişim yöntemini kullanabiliriz.

    Buraya kadar ele aldığımız temel dosya yapıları veri tabanı dediğimiz ve güncel olarak kullanılan uygulamalarda temel yapı taşı olarak ele alınmaktadır. Buraya kadar bahsettiğim şekilde alanlar kayıtları, kayıtlar dosyaları oluşturmaktadır. Dosyaların bir araya gelmesi ile de veri tabanları oluşturulmaktadır. Veri tabanı çok detaylı olarak hazırlanıp uygulanacak bir tasarımın ürünü olarak uygulanan bir sistemdir. Bu da bilgisayar dünyasında veri tabanı mimarisi olarak adlandırılır. Bu mimari yaklaşım, temelde, aşağıda açıklanacak bilgiler çerçevesinde gerçekleştirilir.

    Bir veri tabanı sistemi, birbiriyle kayıt (record) düzeyinde ilişkili bulunan dosyaların herhangi bir uygulama için bir araya getirilmesi olarak tanımlanabilir. Veri tabanı kavramı günümüzde çok yaygın olarak kullanılmaktadır. Bu sistemler kullanılarak her türlü şirketin, kurumun ve işletmenin bilgileri saklanıp işlenebilmektedir. Örneğin bir hastanede tutulan hasta kayıtları ve bunlarla ilgili çok değişik işlemler veri tabanı uygulamaları ile gerçekleştirilebilmektedir. Örnek olarak verdiğimiz hasta kayıtları çok değişik işlemlere sahip olabilir. Normal olarak ücret ödeyerek gelen hastalar, sevkli olarak bir kurumdan gelen hastalar, yeşil kartla gelen hastalar, gazi-dul-yetim durumuyla gelen hastalar vb. olmak üzere akla gelebilecek her durumdaki hasta düşünülerek hazırlanacak program aynı zamanda çok değişik çıkış işlemleri de yapabilecek yetenekte olmalıdır. Örneğin başka kuruma sevk olanlar, bunların takibi, ilaç alıp giden hastalar, hastaneye yatırılan hastalar, olmayan ilaçlar için eczaneye gönderilen hastalar vb. gibi durumları da kontrol edebilecek bir program tasarlanması istenebilir. İşte bu ve buna benzer bir çırpıda aklımıza gelmeyen pek çok durumu kontrol ederek sonuca ulaştıran bir programın tasarımı veri tabanı ortamında yapılabilir. Bundan başka pek çok değişik alan ve konuyla ilgili olarak da veri tabanı ortamında yazılım hazırlanabilir. Bugün artık pek çok kişi bilgisayarı kullanmakta ve bu kullanım oranının bir kısmı bu uygulamayı veri tabanı ortamında hazırlanmış programlarla yapmaktadır.

    Veri tabanı sistemi aşağıdaki şekil üzerinden detaylı olarak anlaşılabilir. Şekilde görülen en üst bölüm kullanıcı ile ilgili olan bölümdür. Temelde ise veri tabanı sistemi "veri modeli" (data model) denilen kullanılacak bilgilerin modelinin çıkarıldığı kısmı içermektedir. Nasıl ki bir terzi dikeceği bir etek yada pantolon için önce model çizmekte ve çıkarmakta daha sonra da kesim ve dikime geçmekte ise veri tabanı uygulaması yapacak kişi de öncelikle kullanacağı bilgilerin modelini çıkarmalıdır. Çıkarılan bu veri modeli uygulamanın özelliklerine göre alt modellere ayrılarak kullanıcı ile etkileşimi sağlayacak düzeye getirilmelidir. Örneğin bir fabrikanın bilgilerinin kullanımında herkesin ulaşabileceği bilgiler aynı değildir. Müdürün ulaşabileceği bilgiler ile şefin ulaşabileceği bilgiler ve alt düzeyde yer alan bir görevlinin ulaşabileceği bilgiler farklı farklıdır. Müdürün bilip ulaştığı her türlü bilgiye alt düzeydeki bir görevlinin de ulaşması söz konusu değildir. Bu yüzden uygulamada kullanılacak işlemlerin özelliğine göre alt veri modelleri bu örnek göz önüne alınarak düzenlenir. En sonda da kullanıcılar yetkilerine göre sınflandırılıp gruplandırılarak kullanıcı profilleri oluşturulur ve bu çerçevede her profildeki kullanıcı yetki düzeyine uygun bilgilere ulaşabilir hale getirilir. Temelde yer alan veri modeli kavramı çerçevesinde geliştirilen ve uygulamaya sokulan ve kullanıcıların işleyeceği veriler de fiziksel olarak diskler üzerinde saklanır.


(ALINTI)



16 Şubat 2014 Pazar

Veri,Enformasyon ve Bilgi Kavramları,

 Bu temel kavramların ne olduğunu öğrenmemiz veri tabanının ne olduğunu tam anlamıyla anlamamız açısından yararlı olacaktır.

Veri Nedir?
Olguların, kavramların,veya talimatların, insan tarafından veya otomatik yolla iletişim, yorumlama ve işleme amacına uygun bir biçimde ifadesidir.
Genellikle, biz veri veya veri birimleri üzerindeki  işlemlerimizi varlık hakkında her hangi bilgi almak için gerçekleştiririz.

Veri kaydedilebilir bilinen gerçeklerdir. Örneğin; bir kişinin ismi, adresi, telefon numarası gibi.

Enformasyon(Information) Kavramı
Karar vermek için bir değeri olan ve organize edilmiş verilerin özetlenmesi ile elde edilen gerçeklerdir
Enformasyon kelimesi Fransızcada enformasyon (information) “danışma, tanıtma;haber alma, haber verme, haberleşme, bilgilendirme” anlamlarında kullanılır. Özetle;işlenmiş ve düzenlenmiş veridir, yazılı, sözlü veya görsel bir mesajdır. Çift yönlü bir eylemdir, enformasyonun aktarılması için bir gönderen ve bir alıcı olması gerekir.Mesajı alan kişide algı veya yargı değişikliği oluşturmayı hedefler.Enformasyon veriden çok daha zengin bir içeriğe sahiptir. Bunun yanısıra, veriler dağınık bir doğaya sahipken, enformasyonda biçimlendirme, düzenleme, belli bir amaca hizmet etme, yarar sağlama kavramları söz konusudur. Rakamlar, semboller harfler ve
kelimelerden oluşan verilerin bir araya gelmesiyle oluşur.
Davenport ve Prusak’a göre verilerin enformasyona dönüştürülmesinde aşağıdaki
aşamalar dikkate alınır:

-Amaca yönelme; verilerin hangi amaç için toplandığının bilinmesi,
-Kategorize etme;verilerin analize uygun verilerinin ya da temel
bileşenlerinin neler olduğunu belirleme,
-Hesaplama;verilerin istatistiksel olarak analiz edilmesi,
-Düzeltme;verilerin hatalardan arındırılmış olması,
-Özetleme;verilerin kısa ve yararlı biçimde özetlenmesidir.

Bu işlemler gerçekleştirilirken bilgisayar ve çeşitli teknolojik cihazların kullanımının yanı sıra veriye anlam kazandırmayla ilişkili her türlü analiz sürecinde kişinin ve kişiler arası iletişimin rolünü de yadsımamak gerekir.

Bilgi(Knowledge) Kavramı
Enformasyon haline dönüştürülmüş gerçeklerin analiz edilmesi ve sentezlenmesi sonucu karar vermeye yönelik olarak elde edilen daha üst seviyeli gerçekleri içerir.

Bilgi, enformasyonun deney, tecrübe, yorum, analiz ve bağlam ile zenginleştirilmiş halidir. Sosyal olaylarda, karar ve eylemler için uygulanmaya hazır yüksek değerde bir enformasyon şeklidir. Bilgi, veri ve enformasyondan daha karışık bir kavramdır ve deneyim ve değerlere ilişkin enformasyonun akışkan bir karması şeklinde de tanımlanmaktadır. Diğer bir tanıma göre ise bilgi, enformasyon parçaları arasında kurulan ,yararlı ilişkidir. Bilgi organizeedilmiş enformasyonun oluşturduğu bir yapıdır ve kestirimlerimize ve genelleştirmelerimize olanak sağlar.

Taylor’a göre bilgi, bireylerin akıllarında tecrübe ile biçimlenir. Bilgi yalın ve basit olamaz. Çeşitli unsurların birbirleriyle karışımından oluşur. Belli bir biçime sahipolmakla birlikte, esnektir. Sezgiler işin içine girdiğinden ona sözcüklerle sahip olmak ya da mantık terimleri kullanarak onu tümüyle anlamak zordur.Şekil 9 (Şekil 9 aşağıdadır)da veri, enformasyon ve bilgi ilişkisini tanımlayan bilgi hiyerarşisi piramiti görülmektedir. Bilgi hiyerarşisi kendi içinde veri, enformasyon, bilgi ve akıl şeklinde sıralanırken teknik ve bilişsel eylemler de; toplama, düzenleme, özetleme, analiz, sentez ve karar alma şeklinde sıralanmaktadır. Veriden akla kadar geçen süreçte zihinsel bir takım faaliyetler sürmektedir. Bu süreçte elde edilen veriler toplanmakta, düzenlenmekte ve anlamlı bir topluluk haline getirilmektedir. Sonrasında özetlenerek analiz edilmekte ve sentezlenerek bilgi haline gelmektedir. Son olarak bilgi haline gelen enformasyon karar alma aşamasını tamamlayarak akıl haline dönüşmektedir.


Yanda ki grafik kavramlar arasındaki bağıntı ve verinin bilgiye dönüşüm sürecini göstermektedir.

Karar verme amacıyla verinin toplanıp, organize edilmesi, özetlenmesi, analiz edilmesi ve sentezlenmesi gerekir.



Veri,Enformasyon Bilgi İle İlgili Örnekler

Örnek 1

Bu sınıfın not ortalaması, son beş yılın en yüksek ortalamasıdır.

Bu cümle 'enformasyon' içerir. Çünkü bu cümleyi söyleyebilmemiz için son beş yılın not ortalamalarını incelemek gerekir.

Örnek 2

AyşeVeritabanı Sistemleri Dersi’nin birinci arasınavından 95 aldı.

Bu cümle 'veri' içerir,çünkü birkişininbir sınavdan aldığı notu belirten ham birgerçektir.

Örnek 3

Heryıl Veritabanı Sistemleri Dersi’nin birinci ara sınav ortalaması 75 civarında çıkar.

Bu cümle bilgi içerir.Çünkü bir dersin birinci ara sınavın not ortalaması ile ilgili bir varsayımda bulunulmuştur.


Örnek 4

Akıllı Turizim A.Ş.Türkiye’deki en başarılı Turizim Şirketi.

Bu cümlebilgi içerir.Çünkü bir şirketin başarı durumu ile ilgili bir varsayımda bulunulmuştur. Bu çıkarımı söyleyebilmek için Türkiye’deki şirketlerin yıllar itibariylebaşarıdurumlarını incelemekve en başarılı olan konusunda bir varsayımda bulunmak gerekir.

Örnek 5

Her yıl Veritabanı Sistemleri Dersi’nin birinci ara sınav ortalaması 75 civarında çıkar.

Bu cümle bilgi içerir.Çünkü bir dersin birinci ara sınav not ortalaması ile ilgili bir varsayımda bulunulmuştur.

Konuyla ilgili bir kaç farklı örnek daha inceleyelim;

Bu yıl, Osman diğer tüm satış temsilcilerinden daha fazla komisyon
elde etmiştir.(Enformasyon)

Bu yıl, Trakya Bölgesi 500.000 TL’den fazla satış gerçekleştirmiştir.
(Veri)

Her yıl Osman tüm satış temsilcilerinden daha fazla satış
gerçekleştirir.(Bilgi)









MySQL Nedir?

MySQL Nedir?

MySQL, altı milyondan fazla sistemde yüklü bulunan çoklu iş parçacıklı (multi-threaded), çok kullanıcılı (multi-user), hızlı ve sağlam (robust) bir veritabanı yönetim sistemidir.

Kaynak kodu açık olan MySQL’in pek çok platform için çalıştırılabilir ikilik kod halindeki indirilebilir sürümleri de mevcuttur.

Geliştiricileri, 500'den fazlası 7 milyon kayıt içeren 10.000 tablodan oluşan kendi veritabanlarını (100 gigabyte civarında veri) MySQL’de tuttuklarını söylüyorlar.

MySQL, tuttuğu tablolarla çok kullanıcılı sistemlerde söz konusu olan erişim hakları sorununu başarılı bir şekilde çözmektedir. MySQL’in 4.0 sürümü ile birlikte “transaction” desteği, 4.1 sürümyle birlikte de alt sorgu desteği eklenmiştir.


Ayrıca “veri tutarlılığını (referential integrity)” sağlama işinin programcıya bırakılması tercih edilmiştir, ancak bu bir dezavantaj olarak görülmeyebilir. Çünkü pek çok veritabanı programcısı VTYS’lerdeki veri tutarlılığı’nın esnek olmayan, zorlayıcı bir özellik olduğunu düşünmektedir.  

15 Şubat 2014 Cumartesi

Derleyici(Compilier) Nedir? Ne işe yarar?


Programlama dili

Mikro işlemcileri kullanmanın daha etkin yolları aranmış, ve çözüm olarak üst düzey kavramları ifade etmeye elverişli programlama dilleri geliştirilmiştir. Bu dillerin donanım kaygıları olmadığı için, özellikle kullanım kolaylığı ve ifade gücü gözetilerek tasarlanmışlardır. Programlama dilleri insanlara uygun dillerdir ve çok kabaca konuşma dillerine benzerler:

if (ortaya_kağıt_atılmış_mı()) {
   oyun_kağıdını_göster();
}
Buna rağmen, programlama dilleri çok daha sıkı kurallara sahiptirler.

Programlama dillerinin bir sorunu, anahtar sözcüklerinin geleneksel olarak İngilizce olmasıdır. Neyse ki bunlar kolayca öğrenebilecek kadar az sayıdadır. Örneğin if'in "eğer" anlamına geldiğini bir kere öğrenmek yeter.

Derleyici(Compilier) Nedir? Ne işe yarar?



En basit tanımıyla insanların anladığı programlama dilini mikro işlemcinin diline yani makinenin anlayacağı dile çevirmeye yarayan yazılımlardır.Derleyicilere aracı gözüylede bakabiliriz.Tercüman desek hiç te yanlış bir ifade kullanmış olmayacağız herhalde.

Derlemeli dil

Bu gibi dillerde yazılan programın çalıştırılır hale gelmeden önce derlenmesi gerekir. Bu yöntem çok hızlı çalışan programlar üretir; ama programı yazmanın yanında bir de derlemek gerektiği için, program geliştirme aşaması daha külfetlidir.

Aynı nedenden dolayı ve genel olarak, derlemeli dil programlarındaki hatalar daha program çalışmaya başlamadan yakalanabilirler.

D, derlemeli bir dildir.

Yorumlamalı dil

Bazı programlama dilleri derleyici gerektirmezler. Bu gibi dillere yorumlamalı dil denir. Yorumlamalı dillerde yazılan programlar derlenmeleri gerekmeden hemen çalıştırılabilirler. Bu dillere örnek olarak Python, Ruby, ve Perl'ü gösterebiliriz. Derleme aşaması olmadığı için bu diller program geliştirmeyi çabuklaştırırlar. Bir sakıncaları, her çalıştırıldıklarında program metninin baştan taranmasının ve makine kodu karşılıklarının çalışma zamanında bulunmasının gerekmesidir. Bu yüzden, yorumlamalı dillerde yazılan programlar derlemeli dillerde yazılan eşdeğerlerinden genel olarak daha yavaş çalışırlar.

Genel olarak, yorumlamalı bir dilde yazılmış olan bir programdaki çok çeşit hata ancak program çalışmaya başladıktan sonra yakalanabilir.


Açık Kaynak(Open Source) Nedir?


Açık Kaynak


   Üretim ve geliştirmede açık kaynak(Open source), son ürünün tasarımı ve uygulama detayları için erişimi ve ücretsiz yeniden dağıtımı teşvik eden bir Felsefe ya da Pragmatik Yöntembilimdir. Açık kaynak deyiminin yaygın olarak kabul edilmesinden önce, geliştiriciler ve üreticiler bu kavram için bir takım terimler kullandılar. İnternet'in yükselişi ve görevlilerin bilgisayar kaynak kodunda büyük bir reforma ihtiyaç duymaları sonucuyla açık kaynak kabul gördü. Bu sayede, üretim modellerinin kendinden arttırıcı çeşitliliğine, iletişim yollarına ve interaktif toplulukların oluşmasına olanak sağlandı. Açık kaynak yazılım hareketi yeni telif hakları, lisans verme, alan adı ve oluşan tüketici sorunlarına netlik kazandırmak için ortaya çıktı.

   Açık kaynak kodlu program, kullanımı ücretsizdir ve düzenlenmesini herkes için açık tutar. Açık kaynaklı yazılımlar içinde özgür bir yazılım lisansı ile lisanslanmış olan yazılımlar, Özgür yazılım(Free software) sınıfına girerler. Tüm özgür yazılımlar, aynı zamanda açık kaynaklı yazılımlardır. Ancak her açık kaynak yazılım bir özgür yazılım olmayabilir.

   Açık kaynak kod, genellikle programcının kodu geliştirerek ve değişiklikleri topluma paylaşarak ortak çabayla oluşturulur. Açık kaynak teknolojik toplum içinde şirketlerin sahipli yazılımlarına karşı oluşturulmuştur.

   Açık kaynak modeli, geliştirmenin daha merkezli olan modellerine karşın üretimde eş zamanlı, farklı gündemleri ve yaklaşımları içerir. Geliştirmenin daha merkezli olan modelleri, öncelikle kâr amacı güden yazılım şirketleri tarafından kullanılır. Açık kaynak kodlu yazılımların gelişim yöntemi ve aynı zamanda ana ilkesi eş uygulamalardan takasın ve son ürün, ana malzeme, projeler ve dokümanlarının işbirliğinin herkese açık ve ücretsiz olmasıdır. Ayrıca bu model açık kaynağa uygun projelerin geliştirilmesi, Güneş Fotovoltaik Teknolojisi ve açık kaynak ilaç keşfinde de kullanılmaktadır.

Neden açık kaynak kodlu yazılım? Avantajları ne?

   Normalde bir programı çalıştırdığınızda onun kaynak kodlarına erişemezsiniz. Yani uygulamanın size sunduğu işlevleri nasıl sunduğunu göremez, onun özelliklerinde herhangi bir değişiklik yapamazsınız.
   Bunu taşındığınız, yeni yapılmış bir ev örneğine benzetebiliriz. Evin her şeyi hazırdır, elektrik hattı, su boruları ve diğer altyapı duvarların arkasına gizlenmiştir. Örneğin elektrik hattınızda bir sorun meydana geldiğinde, hatlara erişemiyorsanız yapabileceğiniz çok fazla şey yoktur. Elektrikçinin gelip sorunu gidermesinden etmesinden başka.
Kapalı kaynak kodlu yazılımlarda da durum buna benzer. Bu tür programlarda programın geliştiricisine bağlısınızdır, herhangi bir sorun gördüğünüzde onu düzeltmeniz mümkün olmaz.

   Özgür yazılım (İngilizcesi free software), kullanıcısına çalıştırma, kopyalama, dağıtma, inceleme, değiştirme ve geliştirme özgürlükleri tanıyan yazılım türüdür. Tersi sahipli yazılımdır (İngilizcesiproprietary software).

   Özgür yazılım ile kastedilen özgürlük, yazılımın kullanım hakları ile ilgilidir, ekonomik boyutu ile değil. Özgür yazılımlar çoğunlukla ücretsiz olsalar da ücretsiz olmak zorunda değildirler. İngilizce sözlükler "free" kelimesi için yirmiye yakın anlam sıralar. Bunlardan sadece bir tanesi "bedava" iken geri kalanları özgürlük ve sınırlamaların olmaması (freedom) kavramlarına atıfta bulunur.

Tarihçesi
Barındırdığı özgürlükler
Özgürlük 0 :Her türlü amaç için yazılımı çalıştırma özgürlüğü.
Özgürlük 1 :Yazılımın nasıl çalıştığını inceleme ve kendi gereksinimleri doğrultusunda değiştirme özgürlüğü. Yazılım kaynak koduna erişim bunun için bir ön şarttır.
Özgürlük 2 :
Kopyalarını dağıtma ve toplumla paylaşma özgürlüğü.
Bir özgür yazılım herkesçe istenilen sayıda makineye kurulabilir, kopyası çıkarılabilir ve istenilen kimselere dağıtılabilir, hatta satılabilir.
Özgürlük 3 :Yazılımı tüm toplumun yarar sağlayabileceği şekilde geliştirme ve geliştirilmiş haliyle yayınlama özgürlüğü. Yazılım kaynak koduna erişim bunun için de bir ön şarttır.
Bazı özgür yazılım lisansları
Türkiye'de özgür yazılımın geçmişi
Neden açık kaynak kodlu yazılım?



Richard StallmanÖzgür Yazılım Hareketi'nin kurucusu

    1950'lerden 1970'lerin başına kadar bilgisayar kullanıcılarının özgür yazılımla ilgili yazılım hürriyetlerine sahip olmaları normaldi. Yazılım genellikle fertler arasında paylaşılır, kişilerin yazılım yaparak donanımlarını daha kullanışlı yapmalarını iyi karşılayan donanım üretilerinden dağıtılırdı. SHARE gibi kullanıcıların ve satıcıların üye olduğu kuruluşlarla yazılım değiş dokuşu kolaylaştırmak hedeflenmişti. 1970'lerin ilk yıllarında durum değişti: yazılım masrafları hızla yükselirken büyümekte olan yazılım endüstrisi, donanım üreticilerinin bilgisayar satışıyla beraber verdikleri "yazılım demetleri", kiraya verilen bilgisayarların kâr getirmeyen yazılım desteğiyle rekabet başlamıştı. Bazı müşterilerin kendi ihtiyaçlarını daha iyi karşılamasıyla "özgür" yazılım masraflarının donanım masraflarıyla bütünleşmesini istemiyordu.

   17 Ocak 1969'da yayınlanan Amerika Birleşik Devletleri IBM'ye karşı yazısında hükumet, yazılım demetlerinin rekabet engelleyici olarak sıfatlandırdı.Bazı yazılım her zaman hürken ancak ödemeyle alınabilen yazılımlar artıyordu. 1970'ler ve 1980'lerde yazılım endüstrisibilgisayar programlarını sadece kullanıcıların kodu incelemesi ve değiştirmesini önleyen çalıştırılabilirler şeklinde dağıtmaya başlamasıyla teknik tedbirler almaya başladı. 1980'de copyright kanununun kapsamı bilgisayar programlarını içine aldı.

   1983'te MIT Yapay Zekâ Laboratuvarı'ndaki çökertici topluluğunun uzun süreli üyesi Richard Stallman, bilgisayar endüstrisi ve kullanıcılarının kültürel değişiminden yıldığını açıklayarak GNU projesini îlan etti. GNU işletim sistemi için yazılım geliştirmesine Ocak 1984'te başlandı. Ekim 1985'te de Özgür Yazılım Vakfı kuruldu. Kendisi hür yazılımı tanımlayarak "copyleft" kavramını yazılım hürriyeti garantilemek için çıkardı.

   Bazı yazılımdışı endüstriler, kendi araştırma ve geliştirmeleri için özgür yazılım geliştirmeye benzer teknikler kullanmaya başladı. Mesela bilim adamları, daha açık geliştirme süreçleri ararken mikroçip gibi donanımlar da copyleft lisanslarıyla geliştirilmeye başlandı (OpenCores projesi gibi). Creative Commons ve serbest kültür hareketi, özgür yazılım hareketinden çok etkilenmişlerdir.


Özgür Yazılım Vakfı'nın ifadesiyle özgür yazılım, belli başlı dört özgürlüğü barındırır:



Bir yazılım, ancak bütün kullanıcıları bu hakların tümüne sahip oldukları zaman özgür bir yazılım olur. Bu özgürlüklere sahip olmak, kimseden izin almamayı ve izin için hiçbir bedel ödememeyi de içerir.

Genel kanının aksine özgür bir yazılım, ücretsiz dağıtılabileceği gibi ücretli de dağıtılabilir. Bu nedenle ticari yazılım olarak satılmasına engel yoktur.

Özgür yazılım, çoğu zaman açık kaynak kodlu yazılım kavramı (open source) ile karıştırılmaktadır. Bütün özgür yazılımlar açık kaynak kodludur ancak bütün açık kaynak kodlu yazılımlar özgür yazılım olmayabilir.

Özgür yazılımlar açık kaynak kodlu yapıları sayesinde, bünyesinde zararlı bir amaç barındıran (gizli verileri çalma gibi) kodlara sahip olup olmadığı, programlama bilen herkes tarafından denetlenebilir. Güvenli yapısı sayesinde Dünya'da pek çok ülkede askeri kuruluş, Linux işletim sistemi tercih edilmektedir

Bazı özgür yazılım lisansları (örneğin GNU GPL), yazılım kodlarının gelecekte de özgürlüğünü sürdürmesini garanti altına alırken bazı özgür yazılım lisansları bunu garanti altına almamaktadır.


Özgür Yazılım Vakfı tarafından özgür kabul edilen lisanslar ile özgür kabul edilmeyen lisanslar GNU'nun Licenses sayfasında listelenmektedir.

En yaygın kullanılan özgür yazılım lisanslarının başında GPL lisansı gelmektedir. Aşağıdaki listede belli bazı özgür yazılım lisansları alfabetik olarak listelenmiştir.

  • Apache Lisansı
  • Avrupa Birliği Kamu Lisansı (EUPL)
  • BSD Lisansı
  • Eclipse Kamu Lisansı (EPL)
  • GNU Genel Kamu Lisansı (GPL)
  • GNU Kısıtlı Genel Kamu Lisansı (LGPL)
  • MIT Lisansı
  • Mozilla Kamu Lisansı (MPL)
   Türkiye'de özgür yazılım topluluğu 1992 yılında oluşmaya başlamış 1993 yılında linux@bilkent.edu.tr listesi etrafında  örgütlenmeye başlamış, 1995 yılında ilki düzenlenen "Türkiye'de İnternet" Konferansı'nda ilk kez yüzyüze bir araya gelmiştir. 1995'ten 2000 yılı ortasına kadar Türkiye Linux Kullanıcıları Grubu adı ile bir birlik oluşturan Türk özgür yazılım gönüllüleri, 2000 Mayıs ayında başlatılan girişimler ile bir derneğe kavuşarak, Linux Kullanıcıları Derneği adı ile ilk genel kurullarını Kasım 2001'de gerçekleştirmiştir. LKD Mayıs 2002'de Ankara Üniversitesi'nde 1. Linux ve Özgür Yazılım Şenliğini gerçekleştirilmiştir. Şenlik 2002'den sonra her yıl yinelenmektedir.
   
   Türkiye'de bir Linux geleneği oluşunca insanlar Türkiye'ye özgü, gereksinimleri karşılayabilecek bir Linux dağıtımı yapma işine giriştiler. 1998 yılında İTÜlü ve Yeditepeli bir öbek öğrencinin "Türkçeleştirilişmiş bir işletim sistemimiz, yazılımlarımız olsun!" düşüncesi ile çıkan Turkuaz Linux tasarısı bu alanda öncülerdendir. Tasarı şu an durdurulmasına karşın ardılları olan tasarılara yol göstermiştir. 2004 Nisan'ında başlayan Truva Linux tasarısı, 2003 yılında TÜBİTAK UEKAE bünyesindeki Pardus tasarısı diğer önemli Linux dağıtımı girişimleridir. Bunlardan en önemlisi halen süren Pardus Linux dağıtımıdır.

Şu anda da Türkiye'deki Linux ve özgür yazılım topluluğu varlığını büyüyerek sürdürmektedir.

Açık kaynaklı yazılımlar listesi:






14 Şubat 2014 Cuma

GNU ve GPL Nedir?

GNU ve GPL Nedir?

GNU nedir?

GNU'nun açılımı, 'GNU is not unix'tir. yani GNU, 'GNU, unix değildir' anlamına gelmekte olan özyinelemeli (rekürsif) bir kelimedir. richard m. stallman, 1970'li yıllarda mit (massachusetts institute of technology)'nin yapay zeka laboratuvarlarında serbest yazılımı bir yaşam şekli olarak benimsemiş bir grupla beraber 1980'li yılların başına kadar yazılım geliştirici olarak çalışmıştır. bu grup ile olan birlikteliğinin sona erişinin ardından kendisini o dönemlerde ivme kazanan bazı akımlardan dolayı benimsenmeye başlanılmış yeni bir sosyal sistem içerisinde bulmuştur, stallman bir röportajında o günleri şu şekilde nitelendirmekte: “kendimi özgür olmayan (kaynak kodu kapalı olan) yazılımların hakim olduğu ve kullanıcıların yardımsız bırakıldığı, parçalanmış ve birlikte çalışmanın korsanlık olarak nitelendirildiği çirkin bir sosyal sistemin içinde buldum. bu tür bir yaşantıyı reddettim. ancak işimi özgürlüğe ve birlikte çalışmaya adadığım zaman yaptıklarımdan gurur duyabileceğime karar verdim.”

ve 1984 yılında tamamen özgür yazılımların meydana getirdiği bir işletim sistemi ve işletim sisteminin araçlarının geliştirilmesi çalışması böylece başlamış oldu, işte bu çalışmanın adı GNU idi. yazılan özgür yazılımların bir şemsiye altında toplanması için 1985 yılında yine stallman tarafından fsf kuruldu ve GNU yazılımları korumak üzere GPL (general public licence) adı verilen yazılım lisansı duyuruldu. GPL lisansı ile lisanslanan özgür yazılımların amaçları özgürlüklerini korumaktan başka bir şey değildir. özgür yazılımlar hakkında sık rastlanan bir yanlış anlama, özgür yazılımların ücretsiz olduğudur; genellikle böyle olmakla beraber, özgür yazılımlar ücretli olabilirler, fakat kaynak kodları ücretlendirmelerinden bağımsız olarak açıktır. bir yazılımın, 'özgür yazılım' olarak değerlendirilebilmesi için yazılımın kullanıcısına neleri sağlaması gerekir?

• Yazılımı kullanan kişi onu her türlü amaç için çalıştırmakta özgürdür. özgür yazılımlar kullanıcılarıkısıtlamazlar.
• Yazılımı kullanan kişi yazılımın nasıl çalıştığını incelemekte ve kendi özel ihtiyaçlarına daha iyi cevap verebilmesi için yazılım üzerinde değişiklik yapmakta özgürdür. kendisi yeterli bilgiye sahip değilse bunu bir başkasına da yaptırabilir.
• Yazılımı kullanan kişi elindeki yazılımı dağıtmakta ve toplum ile paylaşmakta özgürdür.
• Yazılımı kullanan kişi yazılımı geliştirmekte ve geliştirdiği yeni halini toplum ile paylaşmakta özgürdür.

GPL'nin bu hükümlerine bakıldığında 'yazılımı yazan' kişi ile 'yazılımı kullanan' kişi sanki birbirine karıştırılmış gibi görünüyor. insanın, -özellikle günümüz koşullarında- bir yazılımı kullanan kişinin,kullandığı yazılım üzerinde, yazılımı üreten kişi kadar hakka sahip olmasını kabul etmekte güçlük çekmesi çok doğal... özgür yazılım akımı ile beraber, GPL şemsiyesi altında geliştirilen bir yazılım özel bir çaba sarfetmeye gerek bırakmadan, başlangıcından sonuna değin toplumun ve bilimin yararına geliştirilmiş olur. çünkü bu lisans ve yaklaşım sayesinde,

• Yazılım geliştiricileri tekerleği yeniden keşfetmekle vakit harcamaz, daha önceden üretilmiş olan araçları yazılımlarına ekleyerek bunlar üzerine yeni şeyler inşa edebilir.
• Aynı işi yapan yazılımların en iyi yönleri alınarak kullanıcılara optimum çalışan, kaliteli yazılımlar hızla sunulabilir. kullanıcılar var olan yazılımlar arasından istediğini deneyerek kendi ihtiyacını rahatça seçebilir.
• Kullanıcılar özgür yazılımlara çok makul fiyatlar ile ya da -çoğunlukla- 0 maliyetle sahip olabilir, dolayısı ile yazılım ücretlerine ayırdıkları kaynaklarını donanıma ya da diğer ihtiyaçlarına ayırabilir, yaşam ve çalışma standartlarını yükseltebilirler.
• Yazılımın kaynak koduna da sahip olduklarından dolayı kullanıcılar kritik yazılımların nasıl çalıştığını anlamak için kaynak kodlarına bakabilir, isteklerine göre özelleştirebilir ve kaynak tasarrufu sağlayabilir. elbette kullanıcılar yazılım üretimi konusunda bilgili olmak zorunda değildir, ne bir programcı kiralamak kullanıcı için, ne de var olan bir yazılım üzerinde değişiklik yapmak bir programcı için zordur.

bütün bunlar göz önünde bulundurulduğunda, özgür yazılım akımı bilişim dünyasının acımasız çarkları arasında açan bir çiçek gibidir. GPL'nin zekice düşünülmüş hükümleri sayesinde bu akımın önü kendi menfaatlerinden dolayı kapalı kaynak kodu savunan, küçük bir kitleyi doyuran egoist yazılım devleri tarafından bir türlü kesilememektedir ve free software foundation'un kurulduğu 1985 yılından bu yana internet teknolojisinin de hızla yayılması ile bu akım bütün ülkelere sıçramış durumdadır. Açıkkaynak kodlu özgür yazılımlar yukarda bahsedilen özellikleri ile şu avantajları da beraberinde getirmektedir:

• Güvenilirlik: açık kaynak kodlu yazılımların belki de en büyük artısı olan güvenilir oluşları, kimi çevreler tarafından doğru olmayan bir mantıkla bir dezavantaj gibi gösterilmeye çalışılmakta ve topluma 'açık kaynak kodlu bir yazılımın tam olarak nasıl çalıştığı kaynak koduna bakılarak bilinebildiği için yazılımın barındırdığı güvenlik problemleri saldırganlar tarafından kolaylıkla tespit edilip kullanılabilmektedir' gibi bir düşünce yerleştirilmeye çalışılmaktadır. fakat açık kaynak kodlu bir yazılım, doğası gereği geliştirilmesi sürecinden kullanımı zamanına değin onbinlerce göz tarafından denetlenmektedir. var olması muhtemel bir güvenlik problemi ya da kötü niyetli bir programcı tarafından bilinçli olarak yerleştirilebilecek bir kod parçası yazılım sizin elinize ulaşmadan tespit edilmekte ve hızla düzeltilmekte ya da size ulaşması engellenmektedir. ayrıca kimse, binlerce insanınkollektif bir şekilde geliştirdiği bir yazılımın güvenilmez olduğunu idda ederken, sınırlı sayıda kişinin geliştirdiği ve kaynak kodunu kapattığı bir yazılımın güvenilirliğini kimin ve nasıl garanti edeceği sorusuna yanıt veremez.
• Sağlamlık: yine açık kaynak kodlu yazılımların doğal geliştirme süreci içerisinde çok sayıda insantarafından denenmeleri ve kaynak kodlarının gözden geçirilmesi sonucunca ortaya yüksek kalitede, stabil ve kuvvetli yazılımlar çıkmaktadır.
• Esneklik: kaynak kodu açık bir yazılım hızla ve kolaylıkla yeni bir sistem üzerinde çalışacak şekilde yeniden yapılandırılabilmekte, bir kısmı çıkarılarak kapsamı daraltılabilmekte ya da eklenen yeni fonksiyonlarla kapsamı genişletilebilmektedir.
• Uygulama desteği: çok geniş bir yelpazede ve çeşitlilikteki bir çok açık kaynak kodlu özgür yazılım her gün duyurulmaktadır. herhangi bir konudaki ihtiyaç açık kaynak kodlu yazılımlarla hızlı ve kaliteli bir şekilde çözüme kavuşturulabilmektedir.

Hepsinden ötesi, bahsedilen yazılım sizin kendi malınız olmaktadır. yukarıda da bahsedilen GPL lisansı uyarınca üretilmiş bir yazılım üzerinde, onu hazırlayan kişi kadar hakka sahip olmanız inanılması güç bir şeydir. İnsanların bu durum karşısında şu şekilde bir değerlendirme yapması çok sık rastlanan bir durumdur: 'bir yazılımın kaynak kodunun açık ya da kapalı olması, özgür olması ya da olmaması benim için neyi değiştirir?'

Aslında çok şeyi değiştirmektedir.

Bu şekilde düşünen kişilerin bir kısmı, bilgisayarlarında lisans bedelleri ödenmemiş, kopya yazlımlarkullanmaktadırlar, dolayısı ile ellerindeki yazılımların yasal kısıtlamaları ve hükümlerinden dolayı hırsız durumuna düşmekte ve yasaları çiğnemektedirler; sırf ihtiyaçlarını karşılamak istedikleri için hayatları boyunca yapmayı akıllarından bile geçirmeyecekleri suçlarlı işlemiş sayılmaktadırlar.

Bir kısmı da bilgisayarlarında kullandıkları yazılımların lisans bedellerini ödemekte, fakat kullandıkları yazılımın lisans hükümleri uyarınca lisans bedeli ödenmiş yazılımlarının bir kopyasını çok yakın arkadaşları dahi istese ona 'hayır' demek durumunda kalmaktadırlar. Demedikleri taktirde de arkadaşlarını ilk kısımdaki insanlar genellemesine itmektedirler. yani lisans bedelini ödedikleri taktirde dahi bir yazılıma sahip olamamakta, yazılımı özgürce kullanamamakta, özgür olamamaktadırlar. İşte bu durum, richard m. stallman'ın “bu yaşam şeklini reddettim” dediği yaşam şeklidir.

Peki bunca koşuşturma arasında linux'un yeri nerededir (linux, linuks şeklinde telaffuz edilir)?

linux linus torvalds adında finlandiya'lı bir bilgisyar mühendisinin 1991 yılında helsinki üniversitesi'nde bir öğrenci iken kişisel bilgisayarında kullanmak üzere geliştirmeye başladığı bir işletim sistemi çekirdeğidir (işletim sisteminin çekirdeği, işletim sisteminin beyni diye tabir edebileceğimiz kısmıdır). internet'te yaptığı duyuru sonucunda tüm dünyadan bir çok programcının da desteği ile hızla gelişmiş ve halen aynı destek ile gelişmekte olan açık kaynak kodlu, özgür bir yazılımdır. hızlı bir sürecin sonunda linus'un geliştirdiği çekirdek, GNU hareketinin bir meyvesi ve aynı zamanda taşıyıcısı haline gelmiştir. GNU için yazılmış özgür yazılımlar çok kısa süre içerisinde linux çekirdeği ile uyumlu çalışabilecek hale getirilmiş ve ortaya güçlü, esnek ve açık kaynak kodlu bir işletim sistemi çıkmıştır. GNU/linux olarak anılması gereken işletim sistemi zaman içerisinde telaffuz kolaylıklarından ötürü linux olarak anılmaya başlanmıştır. şu anda GNU yazılımlarını ve diğer özgür yazılımları bir araya getiren ve tüm bunları bir linux çekirdeği ile beraber toplu, derlenmiş ve kurulumu çok kolay bir işletim sistemi olarak piyasaya süren irili ufaklı bir çok çalışma mevcuttur. fedora, debian, suse, mandrake, slackware bunlardan çok bilinen bir kaçıdır. her biri, normal bir bilgisyar kullanıcısının biraz dikkat ederek bilgisayarına kurabileceği ve neredeyse hiç yabancılık çekmeden kullanabileceği kadar rahat bir kurulum arayüzüne sahip bir şekilde dağıtılmaktadır.

Bu dağıtımlar üniversitelerin bilgi işlem dairesi başkanlıklarından, bilgisayar mühendislikleri bölümlerinden ya da sadece dağıtım işini üstlenmiş internet sitelerinden çok cüzzi miktarlar karşılığında temin edilebilmektedirler.

Türkiye'de de dünyanın her yerinde olduğu gibi linux ile tanışmak isteyen ve yukarda vaad edilen şekilde bir bilgisayar yaşantısına adım atmak isteyen kişileri bir araya getirmek ve desteklemek vazifesini üstlenmiş ciddi ve özverili organizasyonlar mevcuttur. lkd(linux kullanıcıları derneği), tüm linux camiasının buluşma noktası olmayı hedefleyen ve bütün özgür yazılım hareketlerine kucak açmış bir dernektir. Her yıl düzenlenen ve 4 gün süren linux şenlikleri ile 3-4 paralel salonda yapılan seminer oturumları ile insanlar linux ile ilgili çeşitli konularda bilgilendirilmekte, hiç bilmeyenlerden profesyonel bilgisayar kullanıcılarına kadar herkezin faydalanabileceği etkinliklere Türkiye'nin dört yanından konuşmacılar ve izleyiciler katılmaktadır. e-posta listelerinde özgür yazılım ve linux konusunda yardım almak isteyen kişilere yardım edilmekte, düzenli ve gezici seminerler ile kitleler ücretsiz bilgilendirilmektedir. türkçeleştirme, yeni özgür yazılımların geliştirilmesi gibi çalışmalara destek verilmektedir.

Bütün bunlar sanki bir pazarlama şirketinin serzenişleri gibi görünmekte, insanın aklına 'peki bunca insan neden bu fikrin peşinden koşturuyor? Bu kişilerin menfaati nedir?' soruları takılmaktadır.

Siz kabul etmesenizde, özgür yazılımlar ve linux sizin kullanmanız için hiç bir karşılık beklemeden size sunulmuş birer hediyedir. sizin malınızdırlar, ve ona sahip çıkmak ya da çıkmamak özgürlüğü de diğer tüm özgürlükeriniz gibi sizin elinizdedir. Bu akım ve bu akımın ürettikleri, toplumların refah seviyesini yükseltmek için çalışan bilime ve gelecek nesillere bir mirastır.

Stallman'ın söylediği gibi, 'özgür yazılım kullanmayı hak ediyorsunuz'.

Dört temel özgürlük

Özgür Yazılım Vakfı (FSF) tarafından kaleme alınan GNU Genel Kamu Lisansı, dört temel özgürlüğü güvence altına almayı amaçlar. Bu dört temel özgürlük sırasıyla şunlardır:
  •            Özgürlük 0: Programı sınırsız kullanma özgürlüğü.

  • Özgürlük 1: Programın nasıl çalıştığını inceleme ve amaçlara uygun değiştirme özgürlüğü.

  • Özgürlük 2: Programın kopyalarını sınırsız dağıtma özgürlüğü.

  • Özgürlük 3: Programın değiştirilmiş halini dağıtma özgürlüğü.


GNU GPL lisans anlaşması, 1983 yılında Richard Stallman tarafından geliştirilmiş, çok akıllıca detaylarla bağlayıcılığı bulunan, teşvik edici, gerek kullanıcı gerekse üretici tarafa büyük olanaklar sağlayan bir lisans türüdür. GPL'in en çok üzerinde durduğu konu yazılımların kaynak kodu ile birlikte dağıtılmasının gerekliliğidir. Üretici firma yazılımını ikili dosya şeklinde (binary) dağıtsa bile kaynak kodunu herkes tarafından erişilebilir bir yere bırakmak zorundadır. Kullanıcı, bu kaynak kodu alıp inceleyebilir, üzerinde istediği değişikliği yapabilir, kendi projelerinde, yazılımlarında kodun tamamını ya da bir parçasını kullanabilir. Hatta başkasının kod parçasını alıp, üzerinde değişiklik yapıp satarak maddi kazanç da elde edebilir. Ama tek bir şartla, yeni üretilen program da GPL ile lisanslanmak zorundadır.

GPL'in avantajları

  • Kullanıcı yazılımının içinde ne olduğunu bilir. Bazı üretici firmaların yaptığı öne sürülen arka kapı (backdoor) yerleştirme vakaları imkânsızdır. Bu özellikle askeri kurumlar için önemli olmaktadır. GPL ile lisanslanan yazılımın kaynak kodu ortada olduğu için gerekli inceleme yapıldıktan sonra rahatlıkla kullanılabilir.

  • Yazılım çok büyük bir kitle tarafından kullanılması sonucunda hataların keşfedilmesi ve yine çok büyük bir kitle tarafından geliştirildiği için düzeltilmesi süreci bazen dakikalarla sınırlı olur.

  • Üretici firma, kullanıcı kitlesini geliştirmek için büyük bir şans elde etmiş olur.

  • Kullanıcı yazılımda beğenmediği kısımları değiştirmekte hürdür. Bunu eğer kendisi yapamıyorsa bile yazılım çok büyük bir kitle tarafından kullanıldığı için, İnternet'te biraz aradıktan sonra büyük ihtimalle aynı yazılımın kendi istediği şekilde değiştirilmiş halini rahatlıkla bulur.

  • Üretici firma, dünyaca popüler bir GPL yazılımın üreticisi olarak büyük bir prestij elde eder. Referans listesinde onbinlerce kişi tarafından kullanılan bir programı geliştirmiş bir firma olmanın onurunu taşır. Bunun sonucunda bir sonraki geliştirdiği yazılıma dışarıdan bakışlar daha profesyonelce olur ve firmanın ismi duyulduğu için de hedef kitle daha büyük olur.

  • BSD gibi lisansların aksine GPL bir yazılımdan türetilen yazılım da GPL olmak zorunda olduğu için geliştiricinin kodunun çalınması riski yoktur.

  • GPL bir yazılımın kodunun üzerinde oynayan kişi sayısı bazen binleri bulmaktadır. Bu nedenle programlar çok hızlı bir şekilde çok büyük bir kitle tarafından geliştirilir. Bu da yazılımın kalitesinin artmasında büyük bir rol oynar.

  • GPL, yazılım sektöründe bir rekabet ortamı yaratmayı sağlar. Ücretli ve kapalı kod olarak sunulan yazılımların ücretsiz ve açık kodlu olanlara nispeten çok daha kaliteli olmasının gerekliliği ortaya çıkar. Bu da yazılımların kalitesini artırır ve sektörün ütopik tam rekabet piyasasına olabildiğince yaklaşmasını sağlar. Sektörü sadece arz değil, talep de yönlendirmeye başlar.

  • Kullanıcı ürünün gelişmesi için üretici firmaya bağımlı kalmaz. Özellikle kritik uygulamalarda kullanılan bir yazılımı üreten firmanın batması veya artık yazılıma destek vermemesi durumunda mağdur kalmaz. Kaynak kodu ortada olduğu için kullanıcı istenirse kendi bünyesinde isterse destek alarak yazılımı geliştirmeye devam edebilir.

GPL'in dezavantajları


  • GPL ile lisansladığınız yazılımların başkaları tarafından değiştirilerek geliştirilen türevlerinin elde ettiği gelire yönelik maddi bir talepte bulunamazsınız. Kamuya açtığınız kodları kullanan türev yazılımların ticari süreçlerde kullanılması durumunda karşı tarafı bir çeşit rüçhan/gelir paylaşımı anlaşması imzalamaya zorlayan Mozilla Kamu Lisansı, bu gibi durumlarda önerilebilir.