Lakin Open source ile closed source yazılımlar kıyaslanırken artik nerdeyse atasözü olacak öyle saçma noktalar dayanak olarak gösteriliyor ki Open source hakkındaki bu batıl inançları burada tek tek tanıtmak artik şart oldu. En popülerinden başlayalım:
"Open source herkese acık olduğu için bir hata bulunca gerekirse hataları siz de düzeltebilirsiniz"
Alooo nereye düzeltiyorsun? Noluyor? Gören de yazılım hatalarını düzeltmek yazım hatalarını düzeltmekle ayni şey zannedecek.
1) yazılımı ne kadar biliyorsun da düzeltiyorsun? Fix ettiğin hatanın yazılımın başka yerlerinde başka sorunlar çıkarmayacağından nasıl bu kadar emin oluyorsun? Hatta kuzum o hatanın gerçek sebebini biliyor musun ki fix ettiğini sanıyorsun? Belki doğruyu bozuyorsun?
2) o yazılımın ileriki sürümlerine nasıl güncelleyeceksin her surum güncellemesinde düzelttiğin hatanın yeni sürümde nasıl düzeltileceğini analiz edip ona göre baştan düzeltmeleri yapıp öyle mi güncelleyeceksin? Bunun için harcayacağın vaktin karşılaşabileceğin sorunların farkında mısın?
Alo uyanın. Yok, öyle "hata çıkarsa siz de düzeltebilirsiniz". Arabanızda hata çıkarsa siz mi düzeltiyorsunuz allah‘ınızı severseniz. Yani şu iddiayı "Open source"un avantajı olarak söyleyen hicrimse yazılım geliştirmekten gıdım anlamıyordur bu iddiayı bu şekilde karşınızdakinin bu işten ne kadar anladığını ölçmek için kullanabilirsiniz bu açıdan. Böyle bir şey diyorsa yazılımdan anladığı şey hello world'dur.
"Open source yazılımlardaki hatalar daha çabuk düzeltilir fixler ışık hızıyla çıkar"
aslında bu batıl inanç değil doğrudur. Batıl inanç kısmı "bu güzel bir şeydir" dendiğinde ortaya çıkar. Open source fixleri hızlı çıkar çünkü en başta Open source'u fix eden insan "ne de olsa Open source yani hataları ben düzeltebilirim! Heyo!" sanrısında olabilir. Bu yüzden ışık hızıyla süper bir fix yaptığını düşünebilir. Bu değil de fixi yapan insan gerçekten projeye hakim biri olduğunda da bu fixin ışık hızıyla çıkması Open source geliştiricilerinin "müşteri memnuniyeti" kaygısına sahip olmamasıdır. Yani fix çıktı ve fixteki hata yüzünden web server’ınızın diski mi uçtu? Sağlık olsun Open source bir disk recovery programi var bizim arkadaşın.
Yani ticari kaygısı olmayan Open source geliştirme ekipleri müşterilerine yaşatabilecekleri sıkıntılar konusunda ekstra dikkat göstermelerini gerektiren motivasyona sahip değillerdir. Dolayısıyla bir fix çıkarırken onu bin bir farklı testten geçirmek yerine "kod iyi görünüyor" deyip release ediverirler. Sorun çıkarsa onu da düzeltirler. Tekrar sorun çıkarsa onu da düzeltirler. Yani bir işi ilk seferde tam doğru yapma konusunda minimal endişe noktaları vardır.
Yani o ışık hızı bizim bilmediğimiz bir büyüden değil pişkinlikten gelmektedir. O yazılımın kullanıcıları için "en iyi" çözüm değildir. En iyi çözüm o fixi çıkarmadan önce kullanıcının o fix yüzünden işinin gücünün aksamayacağından emin olmaktır. Üzerinde oturup kafa patlatmak gerekir öyle "o satırı düzelttim ben abi" gibi yazıcı oğlu mantığıyla olmuyor.
"ben bir yığın Open source projesine fix yaptım hepsi de kabul edildi ve şu anda kullanılıyorlar"
şimdi bu "arabanızı sizin kendi kendinize tamir edebileceğinizi soyluyorlar buna kanmayın" iddiasına "ben tamir ettim gayet de güzel oldu" diyerek karşılık vermeye benziyor. Burada "arabalar tamir edilemez" demiyoruz ki söylenen "araba tamir etmenin" yaygın kullanıcı kitlesine "bir avantaj”mış gibi gösterilmesinin yanlış olduğudur bunun da sebepleri gayet güzel açıklanmıştır. Tekrar özetlemek gerekirse:
- Kullanıcı programcı değilse tamir edemez
- Kullanıcı programcı olsa bile hatanın kaynağını bilmeden tamir edemez
- Programcı hatanın kaynağını bilse dahi tamir ettiğini zannederek yazılımın bütünü içinde başka kısımları bozabilir başka hatalara sebep olabilir.
Dolayısıyla kullanıcının programcı olmak dışında yazılımın tasarımını ve implementasyon tercihindeki gerekçeleri de bilmesi gerekirken bunu "siz de fix edersiniz" diye sanki basit bir süreçmiş ve her kullanıcının elinin altındaki bir avantajmış gibi göstermek tamamen yanıltıcıdır. Kesinlikle kullanıcıya "Open source'un bir avantajı" olarak sunulamaz. Sunan sahtekârlık yapıyordur.
Open source'ta kodu paşa gönlünüze göre değiştirebilirsiniz"
e tamam değiştirdin. Sonra yeni surumu çıktı. Napıyorsun makinene cvs kurup kodları merge etmekle yeni release'deki değişikliklerle kendilerinkini eklemekle mi uğraşıyorsun? Bunun gerçekten bir avantaj mi olup olmadığı üstünde düşünmek lazım. Yani kodu "paşa gönlünüze" göre değiştirdiğiniz zaman otomatikman sırtınıza bu değişiklikleri sonraki release'lere adapte etme ve beraberinde yeni değişikliklerin mimari etkilerini gözden geçirme yükü bindirmiş oluyorsunuz. Bunun verimli bir yaklaşım olduğunu söylemek doğru değil.
Karşı tez: Open source developping with cvs
http://cvsbook.red-bean.com/osdevwithcvs_3e.pdf
diger yandan doğru yaklaşım yazılımdaki esnekliği kodu editlemeyi gerektirecek şekilde sağlamak mı yoksa ayni esnekliği kodu değiştirmeden sağlayacak şekilde baştan yazılımı doğru düzgün tasarlamak mı? Yani "kodu istediğimiz gibi editleyebiliyoruz" bence yazılım mühendisliği acısından bir ideal çözüm değil düzgün tasarlanmamış bir yazılımda son çaredir ancak.
"microsoft da hatalı fix çıkarıyor demek ki microsoft’un kalite olarak Open source'culardan farkı yok"
şimdi Open source hakkındaki yanlış inançları söylerken bunu doğrulayıcı örnek olarak hiç microsoft vermediğim gibi "closed source"ta hatalı fix çıkarılmaz da demedim. Dediğim ortada "müşteri memnuniyeti kaygısı”yla "fix kalitesi" arasında reddedilemez bir doğru orantı olduğudur. Dolayısıyla "microsoft da hatalı fix çıkarıyor" demenin bir değeri yoktur. Eğer ki iki ayni kulvarda ürün (mesela internet explorer ve firefox) çıkarılan fix nitelikleri, büyüklükleri, sayıları ile kıyaslanırsa elde edilecek fix kalitesi değerleri "ınternet explorer”da kat kat daha yüksek olacaktır. Vakti olan bu analizi de oturup yapabilir ama ben ısrarla bunun sağduyuyla da varılabilecek bir çıkarım olduğunu söylüyorum.
Ayrıca hiçbir yerde "Open source geliştiricileri amatör heveslilerdir" denmemiştir (nasıl diyebilirim elimde bu konuda veri yok ki, kimde var?)
"Open source yazılımlar ücretsizdir"
alakası yok. Sadece yazılımı kaynak koduyla bir alıyorsunuz. Adam kaynak kodunu da satıyor yani.
Bu arada bazı ücretsiz yazılımların açık kaynak olması ayrı bir durumdur.
"Open source'ta bazı projelerde regression testing yapılır ama regression testing nedir bazı cahiller bilmez ben bilirim"
bravo.
1) bazı projelerde regression testing yapılıyor olması bunun Open source reklâmı yaparken kullanılacak ölçüde Open source projelerin geneline yerleşmiş yaygın bir kültür olduğu anlamına gelmemektedir. Hangi projelerde? Çoğunda mı? Yoksa sadece ticari olanlarda mı (redhat, mysql)?
2) regression testing'i Open source geliştiren ekip dışında ayrı bir ekip geliştirmediğine göre bu testleri geliştirme aşamalarındaki kalite sıkıntıları da geliştiricilerle ayni faktörlerden nasibini alacaktır.
3) eğer ki "Open source projelerde çıkarılan fix'ler release edilmeden önce çoğunlukla regression testing'den geçirilir" gibi bir anlayış yaygınsa o halde bu regression test nasıl bir kalitedeki fixler "ışık hızıyla" çıkıyor? Başkalarını cahillikle suçlamadan once regression test'in kapsamı ve proje büyüklüğüyle orantılı gerekli çalışma zamanlarını incelediniz mi?
"yama çıkarma sayısı/hızı yama kalitesinin olcusudur"--?
"Open source'u siz fix etmezsiniz başka yazılımcı tutarsınız onlar fix eder"
Evet! İşte bu yüzden Open source tanıtılırken, yazılımlar Open source varyasyonlarıyla kıyaslanırken bunun böyle belirtilmesi gerekir. Yani potansiyel bir kullanıcı veya yatırımcıya arkasında ticari destek olmayan bir Open source çözümü tercih ettiğinde yazılımı bu konuda uzman bir yazılım ekibi tutup onları eğitmek suretiyle güncelleyebileceğini belirtmek gereklidir. Eğer bunu yapmaya üşeniliyorsa o zaman "siz de fix edebilirsiniz" gibi aslı astarı olmayan bir etiketi Open source'a yapıştırmamak gerekir.
"Her Open source projesi farklıdır o yüzden bir genelleme yapılamaz"
evet! İşte tam olarak söylenmek istenen zaten "ışık hızıyla fix çıkar", "fixleri siz bile yapabilirsiniz" gibi anlayışların "Open source" kavramının parçası olmadığıdır. Bunlar "Open source"u yanlış tanıttığı gibi kullanıcıları da yanlış yola sürükleyebilecek yanıltabilecek unsurlardır.
Free Software: Özgür Yazılım
Özgür yazılım akimi, adından da anlaşılacağı gibi, yazılım üretme ve kullanma özgürlüklerini korumaya yönelik bir çabanın sonucu oluşmuştur. İnsanlar, yazılım ürünlerini toplumsal yararı gözeten biçimlerde kullanma özgürlüğüne sahip olmalıdırlar. Yazılım, ekmek veya benzin gibi somut nesnelerden farklı olarak kolayca kopyalanıp değiştirilebilir. Bu, güzel paylaşım olanakları yaratır. Biz, tüm yazılım kullanıcılarının bu olanakları kullanma özgürlüğüne sahip olmasını istiyoruz.
Özgür yazılım, ücretsiz (bedava) yazılım demek değildir. Şirketler ya da bireysel kullanıcılar, örneğin destek almak amacıyla, para harcamayı isteyebilirler. Özgür yazılım para ile de satılabilir. Temel şart, bir yazılımı dağıtma ve geliştirme özgürlüğünün kimsenin tekeline bırakılmamasıdır.
"özgür yazılım'' özgürlükleri korumaya yönelik bir akimin adidir. İngilizcemdeki "free" sözcüğünün çift anlamlı olmasından dolayı bazı yanlış anlamalar olmaktadır. Özgür yazılım ücretsiz (bedava) olmak zorunda değildir. "free software'' denince "free beer'' (bedava bira) değil "free speech'' (ifade özgürlüğü) aklınıza gelmelidir.
Özgür yazılımın temelinde kullanıcının bir yazılımı çalıştırma, kopyalama, dağıtma, inceleme, değiştirme ve geliştirme özgürlükleri yatar. Daha kesin ve açık bir ifadeyle, kullanıcılara su haklar tanınmıştır:
- Her turlu amaç için programı çalıştırma özgürlüğü (özgürlük 0).
- Programın nasıl çalıştığını inceleme ve kendi gereksinimleri doğrultusunda değiştirme özgürlüğü (özgürlük 1). Program kaynak koduna erişim bunun için bir ön şarttır.
- Peniden dağıtma ve toplumla paylaşma özgürlüğü (özgürlük 3).
- Programı geliştirme ve gelişmiş haliyle topluma dağıtma özgürlüğü (özgürlük 4). Böylece yazılım bütün toplum yararına geliştirilmiş olur. Program kaynak koduna erişim bunun için de bir ön şarttır.
Bir program, bütün kullanıcıları bu hakların tümüne sahip oldukları zaman özgür bir yazılım olur. Yani, kopyalama, değiştirme, aynen ya da değiştirerek parayla satma, herkese ve her yerde dağıtma ve bedava verme özgürlüklerine sahip olmalısınız. Bu özgürlüklere sahip olmak, kimseden izin almamayı ve izin için hiçbir bedel ödememeyi de içerir.
Ayrıca, programda her turlu değişikliği yapmaya ve bu haliyle isinizde veya eğlence için kullanmaya da hakkiniz vardır. Hatta bu değişikliklerin varlığını kimseye bildirmek zorunda da değilsiniz. Değişiklikleri yayınlamanız veya dağıtmanız halinde de hiç kimseye hiçbir şey bildirmeniz gerekli değildir.
Geliştirme ve dağıtma özgürlüklerinin anlamlı olması için, programın kaynak koduna erişebilmeniz gerekir. Bu nedenle, kaynak kodunun acik ve kolay erişilebilir olması özgür yazılım için gerekli bir şarttır.
GNU yazılımlarını edinmek için para ödemiş veya ödememiş olabilirsiniz. Yazılımları nasıl edindiğinize bağlı olmaksızın, kopyalama ve değiştirme özgürlüklerine sahipsiniz.
Bu ilkelerin sözde kalmaması için, siz sözleşmenizi bozmadıkça, belirtilen özgürlüklerin sizden geri alınamaması gereklidir. Eğer yazılımı geliştirenler özgürlüklerinizi hiç bir uygun neden öne sürmeden geri alma hakkına sahip olurlarsa, o yazılım özgür bir yazılım değildir.
Ancak, özgür yazılımın dağıtımında bazı kurallar konması da olanaklıdır. bu kuralların yukarıda belirtilen temel özgürlüklerle çelişmemesi gerekir. Örneğin "copyleft'' kavramı (basitçe söyleyecek olursak) su kuralı koyar: programı herhangi bir bicimde dağıtırken, kullanıcıların temel özgürlükleri kısıtlanamaz. Açıkça görüldüğü gibi, bu kural temel özgürlüklerle çelişmemekte, tam tersine onları korumaktadır.
Değiştirilmiş bir programın paketlenmesi konusunda da bazı kurallar konabilir. Ancak bu kurallar, sizin kendi değişikliğinizi ve dağıtımınızı engelleyecek biçimlere bürünemez. Ayrıca "programı bu şekilde dağıtırsanız, su şekilde dağıtılmasını da sağlamalısınız'' türünde kurallar da uygun olabilir. Ayni temel ilkeler bu durumda da geçerlidir. (dikkat edilmesi gereken bir nokta da programınızı hiç dağıtmamak konusundaki özgürlüğünüzdür.)
GNU projesi olarak biz "copyleft'' kurallarını kullanıyoruz. Buradaki amaç herkesin özgürlüklerini yasal çerçevede korumaktır. Bizim deneyimimize Göre, programları bu yöntemle korumak en uygun yoldur. Ama programınız copyleft ile korunmayan özgür bir yazılım ise bile, onu kullanmak isteyebiliriz.
Bazen devletlerin koyduğu dışsatım kuralları ve ticaret ambargoları yazılımınızı uluslararası alanda dağıtmanızı engelleyebilir. Ne yazık ki, yazılım geliştirenler bu kural ve yasaları delme özgürlüğüne sahip değildirler. Ancak bir programın kullanılış bicimi ile ilgili yasal düzenlemelere karsı gelmek hakları ve görevleridir. Böylece, söz konusu devletlerin yasama alanı dışında kalan kullanıcıların hakları, olanaklar çerçevesinde, korunmuş olur.
Özgür yazılımdan söz ederken, "bedava'' veya "amatör'' gibi sözcükleri kullanmak kimi zaman yanlış anlamalara yol açmaktadır. Özgür yazılımın temelinde para değil özgürlük yattığını bir kez daha vurgulamak istiyoruz. Ayrıca yazılım "korsanlığı'' gibi bazı kavramların GNU felsefesiyle hiçbir ilgisi yoktur.
Özgür yazılım kavramı aklıma yazılım hizmet midir ürün müdür sorusunu getiriyor. Özgür yazılımdan para kazanan şirketlerin genel kabul görmüş iş modelinin (özgür yazılımın tanımından dolayı), yazılımın satışı sonrası verilen destek ve hizmet olduğuna inanıyorum. yani özgür yazılım ile haşır neşir olan şirketler kendi aralarında, son kullanıcıya sundukları yazılımın kalitesi ile değil, satış sonrası sundukları desteğin kalitesi ile rekabet ediyor olmalılar.
Peki, bu model her alan için geçerli mi? masaüstünde sadece basit bir ürün olarak kullanmak istediğim sıkıştırma programı, mp3 çalma programı gibi programlarda neden özgür yazılımı tercih edeyim? Kişisel tecrübelerim, en azından bu alanda paramla alabileceğim özgür olmayan yazılımların genelde iddia edildiğinin tersine özgür yazılım dünyasının bana sunduğundan çok daha kaliteli olduğunu gösterdi. Yani özgür yazılımı tercih etmenin bir sebebi bize çoğu zaman bedava seçenekler sunuyor olması olabilir ama açıkçası başka bir sebep görmekte zorluk çekiyorum. Bu durumu da dediğim gibi, özgür yazılımda yazılımın kalitesinin değil, satış sonrası alınan desteğin önemli olmasına bağlıyorum. winzip gibi bir programda nasıl bir satış sonrası destek bekleyebilirim ki? Beklemem de. O halde winzip yerine kullanılabilecek özgür yazılım ürünleri profesyonel, para kazanmayı amaçlayan şirketler tarafından değil, amatör boş vaktini buna ayıran gönüllü yazılımcılar tarafından geliştirilmektedir diyebilirim. Kimse kusura bakmasın ama sadece amatör olarak geliştirilen bir programın kalitesi ile winzip gibi onu üreten şirketin varlığının doğrudan yazılımın kalitesine bağlı olduğu bir programın kalitesi arasında bir fark görmeyi beklerim.
Prensip olarak özgür yazılımla bir alıp veremediğim yok. Sadece bilimsel merak açısından kendiliğinden organize olan bu tür oluşumlar çok da ilgimi çekiyor ve hatta yüksek lisans tezimi de bu alana paralel yürütüyorum. Ama özgür yazılım sadece masaüstünde işini görmeyi bekleyen benim gibi bir son kullanıcı açısından çok da cazip seçenekler üretemiyor. ben işimi bir programda halletmek istiyorum yahu. Bir program kurup da sonra her farklı iş için onun üstüne farklı farklı insanlar tarafından geliştirilmiş plug-inler yükleyip onlar arasındaki uyumsuzlukları gidermek ve sistemin çalışma mantığını kavramak için vakit harcamak istemiyorum. Sadece basit ürünler kullanmak istiyorum. Hizmet almak istemiyorum çoğu zaman. O yüzden özgür yazılım şovenizmi diyebileceğim tutuma çok karşıyım.
Özgür yazılım illa da para ile ilgili değildir. Özgür yazılım oyun teorisinin en bariz sonuçlarını yadsımamızı sağlamaz. Bugün dünyaya hakim olan ekonomik sistem kapitalizmdir. Şirketler para kazanmak için değer üretirler, siz paranızı harcayıp onu satın alırsınız, bu ister bir hizmet ister bir mal olsun. Sadece özgür yazılıma geçmek ekonomik olarak mutlaka işimizi daha ucuza halledeceğimiz anlamına gelmez. Sadece her gün yaptığımız onlarca ticari seçimden birisidir. Tüm üniversite kampüsümüze linux tabanlı sistemler kurup, open office kullanmak, matlab yerine scilab kullanmak toplamda daha ekonomik bir tercih olabileceği gibi, olmayabilir de. Çünkü özgür yazılım illa da bedava yazılım değildir. Alacağınız (almak zorunda kalacağınız) hizmetin bir bedeli vardır.
Kaynak: Kutsal Bilgi Kaynağı
Genel Programlama Kategorisindeki Diğer Sayfalar
» Design pattern and software engineering» Türkçe C Programlama Dersi
» Delphi 5 Programlama Dersi
» Pascal Ders Notları
» Algoritma (Algorithm)
» Visaul Basic Notları-2
Henüz yorum yapılmamış


