21 November 2019

Algoritmalar: Doğru, yanlış ama yansız değil


Bloomberg’de yayımlanan “Bir Robot Servetinizi Kaybederse Kime Dava Açmalı?” (https://www.bloomberg.com/news/articles/2019-05-06/who-to-sue-when-a-robot-loses-your-fortune) başlıklı haberi okuyunca askerde cezalandırılan nesneler (tank, ağaç, tepe, taş vs) hakkında anlatılan hikayeleri anımsadım. İnsan olmayan bir varlığa dava açmak veya onu cezalandırmak akıldışı görünebilir. Ama son yıllardaki gelişmeleri ve uygulamaları düşününce bir tankı veya ağacı cezalandırmaktan daha farklı bir durumla karşı karşıya olduğumuz anlaşılacaktır. Algoritmik karar sistemleri gündelik hayatta çeşitli sorumlulukları yerine getiriyorlar ve hızla yaygınlaşıyorlar. Bu sistemlerde kullanılan algoritmaların insanlardan yalnız daha hızlı değil, daha doğru karar verdiğini de varsayıyoruz. Bu varsayım çoğunlukla doğru. Fakat işler her zaman yolunda gitmeyebilir. Algoritmaların kararları nedeniyle insanlar çeşitli biçimlerde mağdur olabilirler. Böyle sorunlar yaşandığında sorumluluk kimde olacak?

Yazının devamında tartışacağımız gibi insanlar, en başta da toplumun dezavantajlı kesimleri, nasıl işlediğini bilmedikleri algoritmalar karşısında çaresiz kalabiliyorlar. Bloomberg’in haberindeki mağdur ise bu defa biraz farklı: Bir İngiliz gayrimenkul yatırım ortaklığı olan Shaftesbury PLC’nin başlıca yatırımcılarından Samuel Tak Lee’nin oğlu, Samathur Li Kin-kan. Hikaye, Li ve yatırım fonu satıcısı Raffaele Costa’nın 19 Mart 2017’de Dubai’de bir öğle yemeğinde bir araya gelmesiyle başlar. Costa, yapay zekâyı kullanarak yatırımları yönetebilen bir sistemden bahseder. Avusturya merkezli 42.cx adlı şirket tarafından geliştirilen K1 adlı sistem haberleri ve sosyal medyayı gerçek zamanda değerlendirerek ABD hisse senetleri üzerine tahminler yapacak ve borsa simsarını alınıp satılacak hisse senetleri hakkında yönlendirecektir. Sistem, Li’nin ilgisini çeker ve yemekten üç gün sonra Costa’ya attığı e-postada bunun tam da kendi tarzı olduğunu yazar. Sonraki aylarda Costa, Li’ye K1’in simülasyonlarını gösterir. Li, geriye dönük testler hakkında kuşkuları olmasına karşın en sonunda ikna olur ve 2,5 milyar doları K1’e teslim eder. Parasını ikiye katlamayı planlamaktadır.

Fakat 2017’nin sonunda, K1’in alım satım işlerine başlamasıyla beraber Li’nin beklentisi boşa çıkar. Li’nin parası düzenli olarak azalmaktadır. Hatta 14 Şubat’ta, tek bir günde, stop-loss emri (borsada zararı durdurma emri) nedeniyle 20 milyon dolar kaybeder. Li’nin avukatları, eğer K1, Costa’nın Li’yi inandırdığı kadar iyi olsaydı böyle bir şeyin olamayacağını iddia ediyorlar. Li’nin avukatları Costa’nın şirketi Tyndaris’e karşı açtıkları davada Costa’yı K1’in yapabileceklerini abartmakla suçluyor ve 23 milyon dolar tazminat talep ediyor. Tyndaris ise ödenmemiş ücretler nedeniyle Li’den 3 milyon dolar talep ediyor ve Costa’nın, yapay zekâ stratejisinin para kazandıracağı hakkında garanti vermediğini söylüyor.

Li’nin avukatlarına göre Costa, K1’i geliştiren mühendislerin özelliklerini abartarak da Li’yi yanıltmış. K1’i geliştirenler arasında 1997’de Kasparov’u yenen Deep Blue’yu geliştiren ekipten kişiler olduğunu söylemiş. Tyandris, Bloomberg’in bu iddia hakkındaki sorularını yanıtlamaktan kaçınmış. K1’i geliştiren 42.cx’in CEO’su Daniel Mattes, ekiplerinde Deep Blue’yu geliştiren ekipten hiç kimse olmadığını söylüyor. Sadece 1960’larda SSCB’de Kaisa adlı satranç programını geliştiren Vladimir Arlazarov’dan genel tavsiyeler almışlar ama Arlazarov K1 üzerinde hiç çalışmamış. Ayrıca Mattes’in belirttiği gibi algoritmalar oyunlarda daha başarılı, çünkü oyunlarda benzetim yapılabilen açık kurallar borsada yok; dolayısıyla oyunlardaki deneyimle yatırımcılık arasında fazla bir ilişki de yok.

Kısacası Li, Costa’nın kendisini K1’in yetenekleri hakkında yanılttığını iddia ediyor. Costa da Li’nin kaybında sorumluluğu olmadığını ve yapay zekânın kararları hakkında garanti vermediğini belirterek kendini savunuyor. Bir bakıma, “ben yapmadım, algoritma yaptı” diyor. İlginç bir dava olacak…

Haberde üzerinde durulduğu gibi, yapay zekâ, akıllı asistanlardan sürücüsüz arabalara kadar gündelik hayatın her alanına dahil olurken işler kötüye gittiğinde sorumluluğun kimde olacağı kritik bir sorundur. Şirketlerin ürünlerini satmak için otonom sohbet robotlarını kullanacağı günler yakın. Bir sorunla karşılaştığımızda satıcıyı (sohbet robotunu) sorumlu tutabilecek miyiz? 18 Mart 2018 tarihinde, Uber’in kendi kendine gidebilen aracı sokakta karşıdan karşıya geçen Elaine Herzberg’in ölümüne neden olmuştu. Arabanın içerisinde bir sürücü de vardı, ama kamera kayıtlarına göre kaza öncesinde yola bakmıyordu. Uber kazadan sorumlu tutulmadı. Fakat sürücüsüz aracın içindeki yedek sürücü Rafaela Vasquez hakkındaki araçla adam öldürme soruşturması devam ediyor. Belki kazanın sorumlusu Vasquez; gözünü yoldan ayırmaması gerektiğini söyleyen test talimatlarına uymamış olabilir. Peki test sürüşleri tamamlanıp araçlar trafiğe çıktığında kazaların sorumlusu kim olacak? Sürücüsüz araçlar, kaza oranlarını düşürecekler. Fakat herhangi bir olumsuzlukta insanlar sorumlu aramak isteyecekler.

Algoritmik karar sistemleri toplumsal yönetim ve karar süreçlerinde kullanılıyor. Bu sistemlerin yaptıkları hatalarda sorumluluk kimde olacak? Yuval Noah Harari, Homo Deus: Yarının Kısa Bir Tarihi başlıklı kitabında kıtlık, salgın ve savaşların artık önlenemez meseleler olmaktan çıktığını, artık doğaüstü güçlere yalvarmak zorunda olmadığımızı yazıyor. Bu sorunlar tamamen ortadan kalkmış değil. Fakat Harari’nin yazdığı gibi bu sorunlarla karşılaştığımızda bunu doğaüstü varlıklara bağlamıyor, “birilerinin sorumluluğunu yerine getirmediğini düşünüyor bir soruşturma komisyonu oluşturuyor ve bir daha aynı hataları tekrar etmeyeceğimizi söylüyoruz.”. Kamu hizmetlerinde görevli yöneticilerin ya da sistemleri geliştirenlerin ve pazarlayanların “ben yapmadım, algoritma yaptı” diyerek sorumluluğu eski zamanlarda olduğu gibi bir doğaüstü varlığa (algoritmaya!) yükleme hakları olabilir mi?

Herkes hata yapabilir… Algoritmalar da!

Algoritmik karar sistemleri her geçen gün daha da yaygınlaşıyor. Bize ürün, film, şarkı, arkadaş vs öneren sistemleri artık yadırgamıyoruz. Fakat algoritmalar yalnız çeşitli önerilerle ürün satmak için değil, yaşamızı etkileyecek büyük kararlarda da kullanılıyorlar:

  • İş başvurularını sıralama
  • Sosyal hizmetleri tahsis etme
  • Terfi ettirilecek veya işten çıkartılacak çalışanları seçme
  • Açık pozisyonlar, konutlar ve ürünler için verilen reklamları kimin göreceğine karar verme
  • Bir kişinin suç işleme riskini veya hapis cezasının süresini tahmin etme
  • Sigorta ve yardımları tahsis etme
  • Kredi belirleme
  • Arama motorlarında haber ve bilgileri sıralama

Bu sistemlerin çalışma ilkeleri hakkında ne biliyoruz? Her zaman algoritmaların sayısal kesinliğine güvenebilir miyiz? Google’ın aramalardaki isabetli arama sonuçları çoğu zaman kolaylaştırıyor. Ama Google, ya bazı haberleri özellikle öne çıkarıyorsa? İnsanların çoğu zaman ilk sayfadaki sonuçlarla yetindiği düşünülürse Google sunduğu enformasyonla bilgimizi de biçimlendirmiyor mu?

Artık elimiz ayağımız olan navigasyon uygulamalarına ne kadar güvenebiliriz? CHP Zonguldak Milletvekili Deniz Yavuzyılmaz’ın “sürücülerin yolculuk güzergahlarını belirlemesinde yardımcı olan navigasyon uygulamalarının vatandaşları hiçbir uyarı yapmadan ücretli yollara yönlendirmesiyle” ilgili önergesi insanı işkillendiriyor (https://www.birgun.net/haber-detay/navigasyon-uygulamalari-tbmm-gundeminde.html).

Bir yol tarifi alacaksam en azından iki kişiye sormaya tercih ederim. İlk sorduğum kişi yolu yanlış tarif etmiş ya da ben yanlış anlamış olabilirim. Ama bir çok insan gibi ben de navigasyon uygulamalarına (yayayken de) insanlardan daha çok güvenirim. Çoğunlukla önerdiği rotayı izlerim. Fakat hem Yazvuzyılmaz’ın önergesi hem de 2009’da Robert Jones’un başına gelenler navigasyon uygulamalarının gösterdiği rotayı gözü kapalı kabul etmememiz gerektiğini gösteriyor. Jones, navigasyon cihazının gösterdiği kestirme yolu takip eder. Yol gittikçe daralıp dikleşse de kuşkulanmaz; navigasyon cihazı, patikanın yol olduğu konusunda ısrarlıdır. Jones da ona güvenir ve ilerlemeye devam eder. Uçurumdan aşağı yuvarlanmaktan kıl payı kurtulur (Fry, 2019)!

Navigasyon cihazları çoğu zaman en doğru rotayı tarif etse de Jones, navigasyon cihazına körü körüne itaat etmekle hata etmiştir. Gündelik hayatta çoğumuz algoritmik sistemler karşısında benzer tepkiler veririz ve algoritmanın otoritesini sorgulamayız. Bilgisayarlar insanlardan daha hızlı ve doğru hesap yaparlar. Fakat kontrolü ne zaman elimize almamız gerekir?

Stanislav Petrov, nükleer erken uyarı sisteminden sorumlu bir Sovyet askeridir. 1983’te görev başındayken sistem, düşman füzesi algıladığına dair uyarı verir. Fakat sistem, sadece beş füze saptamıştır ama bu ABD’den beklenmeyecek derecede zayıf bir başlangıçtır. Petrov, uyarıyı rapor ederse, ardından SSCB’nin bir misilleme saldırısı gelecek ve dünya nükleer savaşa sürüklenecektir. Beklemeyi tercih eder. 23 dakika sonra algoritmanın hata yaptığı anlaşılır! Günümüzdeki erken uyarı sistemleri, 36 yıl önceki Sovyet teknolojisinden çok daha ileri olabilir. Fakat bu ileri sistemlerin insanlar gibi karar alma sorumluluğunun ağırlığını hissedebilmeleri zordur. Petrov, hatalı bir kararın felaket olacağının farkındadır. Uyarı sisteminin başında ya Petrov değil de uyarıları anında Kremlin’e iletebilen bir algoritma olsaydı (age) ?

O zaman insanların makinelerden daha iyi karar vericiler olduğunu söyleyebilir miyiz? Acele etmeyelim… 2015 yılında, Büyük Britanya’da bir eğlence trenindeki arızayı gideren mühendisler test için boş bir vagon gönderirler. Mühendisler gönderdikleri vagonun geri gelmediğini, rayların ortasında kaldığını fark etmezler. Her şeyin yolunda olduğunu düşünen görevliler müşterilerle dolu ilk vagonu gönderirler. Sistemi tasarlayanlar böyle bir hatanın olabileceğini öngörmüşlerdir. Müşteri dolu vagon durdurulur ve kontrol odası bir çarpışma olasılığına karşı uyarılır. Mühendisler ise treni onardıklarını ve uyarı sisteminin hata yaptığını düşünürler. Uyarıyı devre dışı bırakırlar ve sistemi tekrar çalıştırırlar; vagonların çarpışması sonucu çok sayıda insan yaralanır (age).

Algoritmalardan kaynaklı sorunlar da vardır, algoritmaların sağladığı yararlar da. Eğer kararların doğruluğu karşılaştırılırsa algoritmik karar vericilerin çok daha başarılı ve hatasız olduğu da söylenebilir. Ama algoritmik karar vericilerin kararlarından olumsuz etkilenen insanlar varsa bu olumsuzlukların kaynaklarını ve yapılabilecekleri de tartışmak zorundayız. Bu bağlamda, algoritmik sorumluluk konusu önem kazanıyor. Yazının başında Li’nin başına gelenlerden Costa’yı sorumlu tuttuğunu, Costa’nın ise sorumluluğu algoritmaya yüklediğini görmüştük. Algoritmik sorumluluk böyle durumlara karşı şirketlerin geliştirdikleri algoritmaların sonuçlarından sorumlu olmasını ifade ediyor. Şirketin olabilecek sorunlara karşı gerekli önlemleri alması ve bir sorun olması halinde sisteme gerekli müdahaleyi yapması gerekiyor. Sorumlu sistemlerin hatalara karşı bir düzeltme mekanizmaları vardır. Algoritmalar, hesaplamaları insanlardan çok daha hızlı ve doğru yaparlar; fakat girdilere, sistemin tasarımına ve çıktılara karar veren insanlardır. Bir diğer deyişle, hatayı yapan algoritmalar değil, teknolojinin tasarımcıları ve onu piyasaya süren şirkettir. Yani insandır!

Dolayısıyla “insanlar makinelere karşı” gibi bir durum aslında oldukça yanıltıcı. İnsan, insana karşı… Peki neden algoritmik sistemler özerk varlıklarmış gibi görülüyor?

Algoritma Nedir?

Algoritma, bilgisayarın belirli bir görevi yerine getirmesi için izlemesi gereken talimatlar dizisidir. Bir kurumun yöneticisi olduğunuzu ve personel alımı yapmak istediğinizi varsayalım. Yayımladığınız iş ilanında bir sınav yapacağınızı ve ilk ona giren adayları işe alacağınızı duyurdunuz. Bir programcıdan da ilk onu listeleyebilmek için bir yazılım geliştirmesini istediniz. Fakat yazılım, iki adayın puanı eşit olmasına rağmen birini 10., diğerini de 11. olarak belirledi. 11. olan aday sınav sonuçları açıklandığında 10. adayla puanının aynı olduğunu görerek sonuca itiraz etti. Algoritma adayların puanları eşit olduğunda nasıl bir yol izliyor? Sorumluluk ya yanlış bir algoritma uygulayan programcıdadır ya da sınav yönetmeliğini eksik hazırlayan ve duyuran kurum yönetimindedir. Ancak her iki durumda da sorunun nedenini bulmak ve mağduriyeti ortadan kaldırmak kolay olacaktır.

Şimdi başka bir senaryo düşünelim. Yine bir kurumun yöneticisi olduğunuzu ve çok fazla başvuru olduğu için adaylarla görüşmeden önce başvuruları bir otomasyon sisteminin desteğiyle değerlendirmek ve bazı adayları baştan elemek istediğinizi varsayalım. Burada bir algoritma var ama sistem bir kara kutu. Algoritmanın başvuruları kabul ederken ya da reddederken nasıl bir yol izlediği bilinmiyor. Yazılımı geliştirenler özellikle bir kural tanımlamamış olmasına rağmen aynı niteliklere sahip kadın ve erkek aday varsa, erkek aday daha üst sırada yer alıyor. İşte son yıllarda tartıştığımız, şikayet ettiğimiz algoritmalar bu tipte, kara kutu biçiminde olanlar.

Bu bağlamda algoritmaları kural tabanlı algoritmalar ve yapay öğrenme algoritmaları olarak ikiye ayırabiliriz. Kural tabanlı algoritmalar, doğrudan ve net yönergeler içerirler. İlk örnekte, programcının uyguladığı algoritmaya göre bir sıralama yapılır. Verinin miktarı veya dağılımı algoritmanın çalışmasını değiştirmez. Yazılımı açıp çalışma mantığını anlayabiliriz. Fakat Fry’ın (2019) altını çizdiği gibi kural tabanlı algoritmalar yalnızca insanın kural yazabileceği sorunlar karşısında işe yarar. Resimlerdeki nesneleri tanımada veya bir dilden diğerine çeviri yapmada yetersiz kalır.

Büyük veriyle beraber daha önemli hale gelen yapay öğrenme algoritmaları ise canlıların öğrenme biçimlerini taklit eder. Canlıların, deneyimlerinden öğrenmesi gibi yapay öğrenme algoritmaları da verinin içerdiği deneyimden öğrenir. Yapay öğrenme algoritmalarını dörde ayırabiliriz: Denetimli öğrenme, denetimsiz öğrenme, yarı denetimli öğrenme ve pekiştirmeli öğrenme.

Denetimli öğrenmede, girdi değişkenleri (x1, x2, x3, …, xn) ve çıktı değişkeni (y) vardır. Veri analiz edilir ve f(x)=y’yi sağlayan en uygun fonksiyon modellenir. Böylece model, yeni girdiler için y’nin değerini tahmin edebilir. Tecrübeli bir emlakçı evin özelliklerini değerlendirdiğinde evin kaç TL’ye satılabileceğini kestirebilir. Eğer elimizde daha önce satılmış evlerin fiyatları ve evlerin fiyatını belirleyebilen parametreleri içeren geniş bir veri kümesi varsa en uygun fonksiyonu modelleyip yeni evlerin fiyatlarını da bu modelleme yardımıyla tahmin etme şansına sahip olabiliriz. Ya da elimizde insanların resimleri ve yaşları olan bir veri kümesi olduğunu düşünelim. Algoritma, resimlerine bakarak insanların yaşını tahmin etmeyi öğrenebilir. Ayrıca denetimli öğrenme, sınıflandırma amacıyla da kullanılabilir. Örneğin algoritma, hasta kayıtları üzerinde çalışarak iyi veya kötü huylu olan tümörleri belirlemeyi öğrenebilir; yeni tümörlerle karşılaştığında tümörün iyi mi kötü mü olduğuna karar verebilir.

Denetimsiz öğrenmede ise girdi değişkenleri vardır ama bu değişkenlerden elde edilen belirli bir çıktı (y değeri) yoktur. Burada algoritma verideki benzerlik, farklılık ve örüntüleri araştırır. Örneğin, tüketicileri, alışveriş geçmişlerinden yararlanarak daha önce öngörülmemiş bir biçimde kümelere ayırabilir. Bir alışveriş sitesinde alınan bir ürünün yanında kullanıcılara yeni ürünler tavsiye edilebilir. Ya da banka hesaplarındaki hareketler incelenerek sıradışı işlemler yakalanabilir.

Yarı denetimli öğrenmede ise çok miktarda girdi olmasına karşın (gerçek hayatta sıkça olduğu gibi) yalnızca bazı verilerin y değeri vardır. Etiketlenmemiş (yani y değeri bilinmeyen) veriler, az miktarda etiketli (y değeri bilinen) veriyle birlikte kullanıldığında, öğrenme doğruluğunda bir gelişme sağlanabilmektedir. Girdi değişkenlerindeki yapıyı keşfetmek ve öğrenmek için denetimsiz öğrenme teknikleri kullanılabilir. Etiketlenmemiş verileri en iyi tahmin için denetimli öğrenme tekniklerini kullanabilir. Daha sonra bu tahminlerde elde edilecek verilerin sistemi geri beslemesiyle (elimizdeki etiketli verilerin miktarı artacağı için) sistem iyileştirilebilir.

Pekiştirmeli öğrenme ise davranışçılıktan esinlenmiştir ve en yüksek ödül miktarına erişebilmek için hangi eylemlerin yapılması gerektiğine odaklanır. Sistem doğru kararlarda ödüllendirilir, yanlış kararlarda cezalandırılır. Pekiştirmeli öğrenme, denetimli öğrenmeden farklı olarak doğru girdi ve çıktı eşleştirmesiyle başlamaz. Bilinmeyen uzayda keşif ve mevcut bilgiden yararlanma arasında bir denge kurmaya çalışır (https://tr.0wikipedia.org/wiki/Pekiştirmeli_öğrenme).

Yapay öğrenme algoritmaları veri yardımıyla yüzleri tanımayı, resimleri ayırt etmeyi, hangi filmi izlemek isteyebileceğimizi öğrenir. Beyazlardan oluşan bir veri kümesiyle eğitilen bir algoritma beyazların yüzlerini tanımada, bunun için matematiksel modeller kurmada ustalaşır. Siyahları da tanıyabilmesi için siyahların verilerine gerek duyar. Beyazlardaki kanser hücrelerini tanımada başarılı bir modelin siyahlardaki tahminleri hatalı olabilir. Bugün şirketlerin büyük bir açlıkla veri toplamasının, insanlar kişisel verilerini alabilmek için çeşitli (çoğu bedava olan) uygulamalar geliştirmelerinin arkasında 1984’teki gibi bir dünya arzulamaları değil, ekonomik çıkarları vardır. Verinin çeşitliliği ve zenginliği yeni olanaklar yaratmaktadır.

Bu algoritmalar gündelik hayatta başlıca dört görevi yerine getirir. Birincisi, sıralı liste verme. Google arama sonuçlarını sıralar, Netflix izlemekten hoşlanacağımız filmleri sıralar, navigasyon cihazı olası rotalar arasında en uygun olanı seçer. İkincisi, sınıflandırma. Şirketler reklamlarını artık rastgele yapmamakta, algoritmaların belirlediği gruplara özel reklamlar yapmaktadır. Üçüncüsü, ilişkilendirme. Alışveriş sitelerinde önceki müşterilerin verileri ve sizin alışkanlıklarınız birleştirilerek ilginizi çekebilecek ürünler önerilir. Kural tabanlı algoritmalarda olduğu gibi yazılıma “bunu satın alan, şunu alabilir” gibi kurallar doğrudan kodlanmaz. Algoritma, veriden öğrenir. Bu nedenle, beyzbol sopası alan birine kar maskesi de önermek gibi durumlar ortaya çıkabilmektedir. Dördüncü, filtrelemedir. Ses asistanları sesimizi daha iyi anlayabilmek için geri plandaki sesleri ayırırlar. Sosyal medya siteleri de aynı işlemi haber akışımızda yer alacak haberler için yapar (Fry, 2019).

Kural tabanlı algoritmalarda programcı hata yapabilir; ama güç, algoritmayı tasarlayan ve onu kodlayanların elindedir. Kod, tasarlandığı biçimde adım adım ilerler. Yapay öğrenme algoritmalarında ise algoritmayı tasarlayan yine insandır ama algoritmanın nasıl çalışacağı ve çıktısının ne olacağı veriye de bağlıdır. İki etken, insan ve veri, bir araya geldiğinde çeşitli karmaşıklıklar ortaya çıkmaktadır. Bu karmaşıklıkların başında da algoritmadaki yanlılık (bias) sorunsalı vardır.

Algoritmalarda Yanlılık

Bir algoritmanın çıktısının adaletsizliğe neden olmasına yanlılık adı veriliyor. Algoritmanın eğitildiği veri kümesindeki yanlılık, algoritmanın çıktılarını da etkilediğinden yanlılık sorunu çoğunlukla veriyle ilişkilendiriliyor.

Algoritmanın eğitildiği veri gerçekliğin zayıf bir temsiliyse veya halihazırdaki önyargıları yansıtıyorsa algoritma, yanlı çıktılar verir. Örneğin 2010 yılında, Microsoft’un Xbox oyun sisteminde kullanılacak Kinect teknolojisi piyasaya çıkmadan kısa bir süre önce bir kadın çalışan bu teknolojiyi evde denemek ister. Kinect, bir kumanda cihazı olmadan hareket algılama teknolojisi yardımıyla çalışmaktadır. Fakat sistem evde beklenildiği gibi çalışmaz. Hareket algılama teknolojisi kadının kocası için sorunsuz çalışırken kadın ve çocukların hareketlerini algılamada pek başarılı değildir. Çünkü sistem 18-35 yaş arasındaki erkekler üzerinde denenmiştir (Tugend, 2019).

Algoritmanın önyargıları pekiştirmesi de sık rastlanılan bir durumdur. Bir Microsoft müşterisi, krediler için risk puanlaması yapan bir finansal hizmetler algoritmasını test etmektedir. Fakat algoritmayı eğitirken kullanılan verilerde erkeklerin daha önce onaylanmış kredileri ağırlıklı olduğundan algoritma, erkeklerin daha risksiz müşteriler olduğuna karar vermeye meyillidir (age).

Verinin yanlılığa etkisi hakkındaki bir diğer ünlü örnek de Amazon’un iş başvurusu yapan adayların özgeçmişini değerlendirdiği otomasyon sistemidir. 2015 yılında şirket, iş başvurularının cinsiyetçi bir şekilde değerlendirildiğini fark eder. Çünkü sistem, eğitim sürecinde ağırlıklı olarak erkek adayların özgeçmişleriyle eğitilmiş ve bunun sonucunda erkekleri daha tercih edilebilir adaylar olarak belirlemiştir. Bu nedenle, içinde kadın kelimesi geçen (“kadın satranç takımı kaptanı” gibi) özgeçmişler cezalandırılmakta, aşağı sıralara itilmektedir. Sorunu fark eden Amazon, sistemi düzeltmeye (yanlılığı gidermeye) çalışır. Bazı iyileştirmeler yapsa da sonunda bu sistemi bırakmak zorunda kalır (Dastin, 2018).

Verinin hazırlanması aşamasında seçilen öznitelikler de yanlılığa neden olabilir. Kredi başvurularına olumlu ya da olumsuz yanıt vermesi istenen bir algoritma, veri kümesindeki kişilerin yaş, gelir, geri ödediği kredi sayısı gibi öznitelikleri seçilerek eğitilebilir. Bir işe alma sistemi ise cinsiyet, eğitim düzeyi veya tecrübe gibi öznitelikleri kullanabilir. Doğru öznitelikler seçilmişse (bu da ustalık gerektirir) modelin kestirimleri daha doğru olacaktır. Fakat Nao’nun (2019) altını çizdiği gibi seçilen özniteliklerin modelin doğruluğuna etkisini ölçmek kolayken aynı kolaylık yanlılığa etkisini belirlemede geçerli değildir.

Sistemlerin eğitiminde halihazırdaki toplumsal ilişkileri yansıtan veriler kullanıldığında ya da yanlılığa neden olabilecek öznitelikler seçildiğinde cinsiyetçi ve ırkçı önyargılar yeniden üretilir. Sorunun farkında olmak çözüme giden yolda bir adımdır. Fakat suçu tamamen verinin içerdiği yanlılığa ve öznitelik seçimindeki hatalara yüklemek, yanlılığı teknik bir soruna indirgemek de pek doğru değil.

Algoritmayı tasarlayan kişi ya da kişilerin değerleri (yanlılığı) de algoritmanın çıktılarında etkilidir. Problemin çerçevesinin çizilmesi, sistemin hedeflerinin belirlenmesi tarafsız bir eylem değildir. Bir kredi kartı şirketinin müşterilerin kredi itibarını tahmin eden bir sistem geliştirirken verdiği kararlar sistemin gelişimine yön verir. Çünkü en başta kredi itibarının ne olduğu sorusunu yanıtlanması ve bu yanıtın sayısallaştırılması gerekir. Şirketin hedefi nedir? Kârını mı yoksa geri ödenebilen kredi miktarını mı en üst düzeye çıkaracaktır? Şirketin istediği kârını artırmaksa, algoritma da buna en uygun fonksiyonu modelleyecektir.

Algoritmalar kimin yararına çalıştırılacak? Burada artık salt tekniğin ötesine geçmeye başlarız. Fry (2019) yazdığı “tedavi önerebilen teşhis makinesi” üzerinde düşünelim. Bu tip teknolojiler yaygınlaşacak ve doktorlardan çok daha isabetli kararlar verebilecek. Fakat Fry (2019) önemli bir soru soruyor ve bir seçim yapmak zorunda kalacağımızı vurguluyor: Teşhis makinesi, bireye mi, topluma mı hizmet edecek?

Algoritma, bireye hizmetin öncelikli olduğunu düşünürse ağır, ama bir süre sonra geçebilecek bir öksürük şikayetiyle doktora gittiğinizde sıkıntınızı birkaç gün hafifletmek için antibiyotik yazmaya karar verecek, risk almamak için daha fazla tahlil yaptırmanızı isteyecek. Ama topluma hizmeti öncelikli gören bir algoritma antibiyotik toleransına karşı daha duyarlı davranacak, ölümcül bir durum yoksa geçici sıkıntınızı önemsemeyerek ilaç vermek istemeyecektir. Ayrıca kaynakları boşa harcamamak için tahlil sayısını da azaltmaya çalışacaktır.

Elbette hayat siyah beyaz değil. Algoritmayı tasarlayanlar bireysel ve toplumsal çıkarlar arasında bir denge bulmaya çalışacaktır. Ancak bu denge arayışı teknik değil, politik bir çalışma olacaktır. Buna ek olarak, neoliberal çağın ruhuna uygun olarak, denkleme sağlık hizmetlerinin piyasalaşmasını kattığımızda korkunç bir algoritmayla karşı karşıya kalabiliriz.

Yanlılığın Çözümü Neden Zor?

Yanlılık bilgisayar bilimcilerin farkında olduğu ve üzerinde çalıştığı önemli konulardan biri. Fakat çözümü kolay değil. Hao (2019) yanlılık sorununun çözümünü zorlaştıran engelleri dört başlık altında ele alıyor.

Bilinmeyen bilinmeyenler. Daha model oluşturulurken verilerin ve tercihlerin yanlılığa neden olup olmayacağı belirgin değildir. Yanlılık, ileri safhalarda tespit edildiğinde ise geriye dönerek yanlılığın nedenini bulmak ve sorunu gidermek zor olmaktadır. Örneğin, önceki bölümde gördüğümüz gibi Amazon’un iş başvurusu değerlendirme sistemi kadın kelimesini içeren özgeçmişleri aşağı sıralara gönderiyordu. Amazon’un mühendisleri sorunu fark ettiklerinde sistemi yeniden programlayarak sistemin açık biçimde cinsiyet bildiren kelimeleri (women’s gibi) göz ardı etmesini sağladıklarında da sorun çözülmemiş. Çünkü sistem bu sefer de üstü kapalı olarak daha çok erkeklerle ilişkilendirilen executed, captured gibi kelimelerden yararlanarak cinsiyetçiliği yeniden üretmiş.

Eksik Süreçler. Bilgisayar bilimciler modelleri geliştirirken önce ellerindeki veriyi rastgele biçimde iki bölüme ayırırlar. Birinci bölümde yer alan veri, algoritmayı eğitmek için kullanılır. Eğitim işlemi tamamlandıktan sonra modelin performansı ikinci bölümdeki veri üzerinde test edilir. Bu süreçte, yanlılığın tespit edilmesi üzerinde durulmadığından ve hem modeli eğitmek için kullanılan veri hem de performansını test için kullanılan veri aynı yanlılıkları içerdiğinden önyargılı sonuçları tespit etmekte başarısız olunur.

Sosyal Bağlam Eksikliği. Caplan vd.’nin (2018) belirttiği gibi algoritmaları sıfırdan tasarlamak pahalı ve zordur. Algoritmaları tasarlarken nitelikli işgücü kullanmak, eğitim verisi bulmak, algoritmanın özelliklerini belirlemek, test etmek, iyileştirmek ve modeli uygulamak için para gerekir. Bu maddi gereklilikler, bilgisayar bilimcilerin problemleri çözmeye çalışırken farklı bağlamlarda farklı görevleri yerine getirebilecek sistemler tasarlama yaklaşımı ile birleşince belirli bir bağlama uygun olarak geliştirilen bir algoritmayı farklı bir bağlamda olduğu gibi veya değiştirerek kullanma gibi bir eğilim ortaya çıkmaktadır. Fakat Hoa’nın (2019) belirttiği gibi bu yaklaşım toplumsal sorunların çözümü için uygulandığında yeni sorunlara neden olur. Utah’ta tasarlanmış bir sistem farklı toplulukların farklı adalet anlayışları nedeniyle Kentucky’de doğrudan uygulanamaz. Aynı şekilde adil yargılama için kullanılan bir sistem istihdam alanında kullanılmamalıdır. Çünkü belirli bir bağlama göre oluşturulmuş standartlar ve algoritmanın ilgilendiği etik konular yeni uygulamada sorunlara neden olabilir.

Adaletin Tanımındaki Eksiklikler. Adalet konusu, felsefe, sosyal bilimler ve hukukta yıllardır tartışılmaktadır ve şimdi de bilgisayar biliminin gündemindedir. Ama bilgisayar biliminden adaleti matematiksel terimlerle açıklaması da beklenmektedir. Aşağıdaki tabloya bakalım:

Başlıca sorunlardan biri yanlış pozitiflerle yanlış negatifler arasındaki dengeyi bulabilmektir. Yanlış pozitifte, gerçekte negatif olan bir olgunun pozitif olduğunu tahmin etmişsinizdir (Birinin suçlu olduğunu tahmin ettiniz, ama gerçekte suçsuzdu). Yanlış negatifte ise gerçekte pozitif olan bir olgunun negatif olduğunu tahmin etmişsinizdir (Suçlu olan birine suçlu değil demek). Yani insanları haksız yere suçlama ihtimali de var, suçluları fark edemeyerek toplum güvenliğini tehlikeye atma ihtimali de. Algoritma, toplumun iyiliği için arada sırada suçsuz insanları mağdur etmeli midir (yanlış pozitif)? Yine bir denge kurmaya çalışsak bile insanların adalet hakkındaki düşüncelerinin de zaman içinde değiştiğini unutmamak gerekiyor.

Şeffaflık ve Sorumluluk

Kız çocuğu olan bir hakim, kadınlar lehine karar vermeye daha meyilli oluyor; tuttuğu takım yenilen hakimin kefalet talebini reddetme ihtimali daha yüksek; hakimler öğle yemeğinden hemen önce kefalet talebine uzak, yemekten sonra bu talebi kabule daha yatkın. Hakimler, arka arkaya benzer kararlar vermekten kaçınıyor. Dört kefalet talebine olumlu yanıt veren bir hakimin beşinci kefalet talebine olumlu yanıt verme olasılığı azalıyor (Fry, 2019).

Bu tip durumları düşününce algoritmik karar sistemlerinin daha adil kararlar için önemli bir potansiyele sahip olduğu görülüyor. Fakat Domingos’un (2017) uyardığı gibi “insanlar bilgisayarların çok akıllı hale gelip dünyanın kontrolünü eline geçirmesinden endişelense de asıl problem, çok aptal olmaları ve halihazırda dünyayı kontrol etmeleridir.” Sorunu, hakimlerin mi yoksa bilgisayarların mı daha doğru karar vericiler olduğu ekseninde tartışmak yanıltıcı olabilir. Önce hukuktan ne beklediğimizi sorgulamalıyız.

Hukuk, erişilebilir ve olabildiğince anlaşılır, açık ve tahmin edilebilir olmalı. Algoritmik karar sistemlerinin ise çoğunlukla bu beklentiyi karşılamaktan uzak olduğunu ve içerikleri ticari sır olarak saklanan birer kara kutu olarak çalıştıklarını görüyoruz. Normal bir yazılımın kaynak kodunu inceleyerek nasıl çalıştığını öğrenmek mümkünken aynı yöntem yapay öğrenme algoritmalarını kullanan sistemlerde yetersiz kalıyor. Çünkü algoritma üzerinde çalıştığı verilerden öğreniyor. Ayrıca kesinlik ve yorumlanabilirlik iki zıt uçta yer alabiliyor. Doğrudan kodlanmış bir algoritmayı anlamak kolayken, sinir ağlarında daha kesin sonuçlar için yorumlanabilirlikten feragat etmek zorunda kalıyoruz. Birçok durumda kesin sonuçlar tercih edilir, ama hukuk gibi insan yaşamını etkileyen konularda çubuğu yorumlanabilirliğe bükmek gerekebilir (Blacklaws, 2018).

Geçen yıl yürürlüğe giren GDPR (General Data Protection Regulation – Genel Veri Koruma Tüzüğü), şirketleri şeffaf ve sorumlu davranmaya zorlayabilecek önemli bir düzenleme. GDPR’nin uygulamadaki başarısı ve daha da geliştirilmesi, algoritmik karar sistemlerinin potansiyelini toplum yararına hayata geçirebilir. Kamuoyu, algoritmalar hakkında bilinçlendikçe GDPR gibi düzenlemelerden güç alarak şirketleri gerekli önlemleri almaya ve yeni çözümler geliştirmeye zorlayabilir. Fakat Selbst vd.’nin (2019) yazdığı gibi teknolojik çözümcülük tuzağına da düşmemek gerekiyor. Şirketler ellerinde çekiç olduğu için her şeyi çivi olarak görme eğilimindeler. Ama özellikle siyasi olarak tartışmalı sorunları teknolojiyle çözme girişimleri karşısında dikkatli olmalı.

Kaynaklar

Blacklaws, C. (2018). Algorithms: transparency and accountability. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 376(2128), 20170351.

Caplan, R., Donovan, J., Hanson, L., & Matthews, J. (2018). Algorithmic accountability: A primer. Data & Society.

Dastin, J. (2018). Amazon scraps secret AI recruiting tool that showed bias against women, https://www.reuters.com/article/us-amazon-com-jobs-automation-insight/amazon-scraps-secret-ai-recruiting-tool-that-showed-bias-against-women-idUSKCN1MK08G, son erişim 15/07/2019

Domingos, P. (2017). Master Algoritma: Yapay Öğrenme Hayatımızı Nasıl Değiştirecek?(çev. Tufan Göbekçin). Paloma Yayınevi, İstanbul.

Fry, H. (2019). Merhaba Dünya: Makine Çağında İnsan Olmak. (Çev. İ. G. Çıgay), Hep Kitap.

Hao, K. (2019). This is how AI bias really happens—and why it’s so hard to fix, https://www.technologyreview.com/s/612876/this-is-how-ai-bias-really-happensand-why-its-so-hard-to-fix/, son erişim 15/07/2019

Selbst, A. D., Boyd, D., Friedler, S. A., Venkatasubramanian, S., & Vertesi, J. (2019). Fairness and abstraction in sociotechnical systems. In Proceedings of the Conference on Fairness, Accountability, and Transparency (pp. 59-68). ACM.

Tugend, A. (2019) Exposing the Bias Embedded in Tech, https://www.nytimes.com/2019/06/17/business/artificial-intelligence-bias-tech.html, son erişim 15/07/2019



18 August 2019

22 January 2019

Python'da Kullanıcı Tanımlı Hatalar


Python projelerinde kullanıcılar hata tanımlayabilir ve aynı sistem tarafından tanımlı hatalar gibi try-except içinde kullanabilir.

    Ben pebble-remote projesini geliştirirken bu hata yakalama kısmında şöyle bir sorunla karşılaşmıştım. Kullanıcı tanımlı hata sınıflarım vardı ve bu sınıfların tanımlandığı dosyanın dışında bir yerde bu tanımlanan hataları yakalamak istiyordum. Hatanın tanımlandığı python dosyasını da import ettiğim halde bu hataları yakalayamıyordum.

   Daha iyi bir yöntemi de olabilir elbet ama benim deneyerek bulduğum çözüm hata sınıfının tam yolunu yazmak oldu.

Kullanmaya çalıştığım python modülünün yapısı aşağıda:

libpebble/pebble
├── __init__.py
├── LightBluePebble.py
├── pebble.py
└── stm32_crc.py

LightBluePebble.py dosyası içinde bir hata aşağıdaki gibi tanımlanmış:


LightBluePebbleError(Exception):
def __init__(self, id, message):
self._id = id
self._message = message
def __str__(self):
return "%s ID:(%s) on LightBlue API" % (self._message, self._id)

Bu hatayı yakalamak istediğim dosya içinde  içinde modülü aşağıda şekilde import ettim:


import pebble as libpebble

Bu haliyle aşağıdaki kod hatalıydı:


try:
...
except LightBluePebbleError as e
...

Doğrusu:


LightBluePebbleError = libpebble.LightBluePebble.LightBluePebbleError

try:
...
except LightBluePebbleError as e
...


10 January 2019

Stubby ile DNS-over-TLS nasıl yapılandırılır?


8.8.8.8 için DNS over TLS‘in duyurulmasının ardından, stubby kullanarak kullanıcı tarafında nasıl yapılandırılacağını inceliyoruz.

Öncelikle stubby‘yi Ubuntu 18 yazılım deposundan kuralım;

sudo apt install stubby

Stubby kendi içinde gelen ön tanımlı ayarlar ile doğrudan çalışmaya başlayacak. Google DNS 8.8.8.8’i eklemek için aşağıdaki satırları ayar dosyasına ekleyelim;

/etc/stubby/stubby.yml
# Google
- address_data: 8.8.8.8
  tls_auth_name: "dns.google"
- address_data: 8.8.4.4
  tls_auth_name: "dns.google"

Stubby‘nin 53 portunu dinlediğinden emin olduktan sonra ağ ayarlarımızdan DNS tanımını 127.0.0.1 olarak değiştirerek kriptolu DNS kullanmaya başlayabiliriz.

sudo netstat -lnptu | grep stubby


29 October 2018

Linux için F5 Ssl Vpn Client i Kurulumu ve Kullanımı


Windows için Windows Store da, android için Google Play de client i bulunan F5 Ssl VPN linux için herhangi bir repo ya katılmış gözükmüyor. Eğer siz de benim gibi linux kullanıcısı iseniz, kuruluşunuz tarafından size verilen vpn geçidi adresine firefox ile eriştiğinizde karşınıza çıkan sayfaya kullanıcı adı ve şifreniz ile giriş yapabilirsiniz.

Giriş yaptığınızda karşınıza şöyle bir sayfa çıkacak
Bu sayfada işaretli olan yerden manual olarak yüklemeyi seçip indirdiğiniz tgz uzantılı dosyayı açtığınzda
karşınıza şu dizin gelecek. Burada sağ tıklayıp terminalde açtıktan sonra;

sudo ./Install.sh 
komutu ile kurulumu başlatabilirsiniz. sadece bir kere kurayım mı diye soracak size "yes" yazıp entera basıp geçtikten sonra vpn clientiniz hazır. Kullanmak için sadece komut satırında (terminalde)

sudo f5fpc -s -t "https://sslvpnadresiniz.com"

yazarak başlatmanız

sudo f5fpc --stop 

yazarak durdurmanız mümkün olacaktır.

Detaylı bilgi için f5fpc --info yazmanız yeterli....

Kolaylıklar dilerim.



Zemberek 0.16.0 Text Normalizasyonu ve gRPC sunucusu


Zemberek NLP 0.16.0 yayınlandı.  Bu sürümdeki yeni özelliklerden bazıları:

Metin Normalizasyonu
Bu özellik ile sosyal medya, forum ve mesajlaşma yazlımlarında kullanılan cümlelerdeki hatalar düzeltilmeye çalışılır. Bu işlem, metne daha sonra uygulanacak işlemlerin başarımını arttırabilir. Örnek:

Yrn okua gidicem
yarın okula gideceğim

Tmm, yarin havuza giricem ve aksama kadar yaticam :)
tamam , yarın havuza gireceğim ve akşama kadar yatacağım :)

ah aynen ya annemde fark ettı siz evinizden cıkmayın diyo
ah aynen ya annemde fark etti siz evinizden çıkmayın diyor
Bu ilk denememiz olduğu için sıklıkla hata yaptığı durumlar olacaktır. Detaylar için dokümantasyona bakınız.

gRPC sunucusu
gRPC, açık kodlu, yüksek hızlı bir uzaktan fonksiyon çağrı mekanizmasıdır. Zemberek fonksiyonlarının bir kısmına başka programlama dillerinden hızlı erişim sağlamak için kullanılabilir. Bu ilk sürümde grpc sunucusu ve kısıtlı fonksiyonlara python ile erişim kütüphanesi yayınlandı. Dokümantasyon.

Yeni morfolojik analiz modları:
Normalizasyon türü işlemler için faydalı olabilecek iki yeni analiz modu eklendi. Bunlardan ilki "informal" analiz. Bu şekilde özellikle konuşma dilinde kullanılan "yapıcam, edicem, geliyo, gidek" türü kelimelerin analiz edilip formal şekillerine dönüştürülebilmesi için mekanizmalar hazırlandı. Bu mekanizmanın kapsamını ilerki sürümlerde arttırmayı düşünüyoruz.

Diğer mod ise türkçeye özgü harfleri ihmal eden analiz mekanizması. Bu şekilde "kisi" kelimesi "kişi, kışı" çözümleri bulunabiliyor.

Yeni analiz modları için dokümantasyonu inceleyebilirsiniz.

Bu sürümde önceki sürümlerdeki API'yi bozan değişiklikler de oldu ve bazı hatalar giderildi. Eğer projeyi kullanıyorsanız güncelleme yapmadan değişiklik listesini incelemenizi öneririz. Bu sürümde yardımı olan herkese, özellikle morfoloji hatalarını bildiren Müge ve lm modelindeki problemi gideren bojie'ye teşekkürler.



16 October 2017

KRACK: WPA2 Protokolünü Hedef Alan Bir Saldırı


Kablosuz internet cihazlarımızla (bilgisayar, telefon, vb) evlerde, iş yerlerinde vs bağlandığımız kablosuz ağların çoğunu koruyan WPA2 şifreleme algoritmasını etkisiz hale getiren bir atak geliştirilmiş. KRACK adı verilen bu atak kablosuz ağların parolalarını kırmıyor, yani evlerimizdeki internete kaçak ortağımız olmuyor ancak daha kötüsü cihaz ve erişim noktası arasındaki şifrelemeyi etkisiz hale getirerek bizler ve internet arasında giden gelen bilgileri saldırgan kişilerin okuyabilir hale gelmesine yol açıyor.

Biz ne yapabiliriz bu atak karşısında? Bağlandığımız erişim noktasının şifrelemesine güvenemeyeceğimize göre ziyaret ettiğimiz web sayfalarına mümkün olduğunca https üzerinden erişmeye çalışalım, ne kadar az şifrelenmemiş web trafiği yaratırsak o kadar iyi. Ayrıca kullandığımız bilgisayarların, telefonların, modemlerin vb her fırsatta yazılım güncellemelerini takip edelim. Örneğin bir çok Linux tabanlı işletim sisteminde WPA2 şifrelemeli ağlara bağlanmamızı sağlayan wpasupplicant yazılımına gerekli yamalar geldi bile. Windows’lar için de gerekli yamalar yayınlanmış. Şu an için yapacak başka da bir şey görünmüyor.

Atak hakkında detaylı bilgiye https://www.krackattacks.com/ adresinden, atakla ilgili yayınlanan bilimsel makaleye de https://papers.mathyvanhoef.com/ccs2017.pdf adresinden erişebilirsiniz.



05 July 2017

Yansı sunucusu arızası


TÜBİTAK ULAKBİM tarafından donanım ve ağ bağlantısı sağlanan ftp.linux.org.tr yansı sunucumuzda donanım arızasından ötürü sorun yaşanmaktadır. Sorunun en kısa sürede giderilmesi için çalışmalarımız sürüyor.

Güncelleme: 2017-07-18 08:37 itibarıyla tüm dağıtımların yeniden yansılanması tamamlanmıştır.



22 March 2017

Kullandığım Linux işletim sistemi 32bit mi? 64bit mi?


Kullandığınız bir Linux işletim sistemini siz kurmamış olabilirsiniz veya birden fazla bilgisayar ve farklı işletim sistemleri ile çalışıyor olabilirsiniz. Bu nedenle bazen kullandığımız Linux işletim sisteminin sürümünün 32 bit mi yoksa 64 bit sürümü olduğunu öğrenme ihtiyacı duyabilirsiniz. Bunu terminal ekranından aşağıdaki kod ile hızlıca öğrenebilirsiniz.

Linux işletim sisteminin 32bit mi 64 bit mi olduğunu öğrenmek için;

uname -a

kodunu terminal ekranına yazdığımızda karşımıza çıkan ibarelerde i686 i386 geçiyor ise 32bit, x86_64 ibaresi geçiyor ise 64bit olduğunu anlayabiliriz.

i686 i386 32bit
x86_64 64bit

Bu işlemi terminal penceresinden 4 farklı şekilde daha yapabilirsiniz.

dpkg –print-architecture

getconf LONG_BIT

arch

file /sbin/init



31 May 2016

Bilgisayar Mühendisliği


Ekşisözlük'teki bilgisayar mühendisliği tanımlarına bakınca, "bilgisayar mühendisi mimar, programcı ameledir", "utp kablo takmayı bilmezler", "temeli hardware'dir", "programlamayla alakası yoktur", "bilgisayar bilimlerinden farklı bir şeydir", "asıl işi işlemci tasarlamak" gibi saçmalıklar arasında kayboluyorsunuz.

Bu da şaşırtıcı değil çünkü bazı hocalar ve mezunlar bile bu yanlış fikirleri yaymaya devam ediyor.

Bilgisayar Mühendisleri Odası'nın şu kuruluş raporuna bakın:

Meslek Alanında Yaşanan Tahribat (sayfa 9): ...sektör kamu ile akademiden ziyade serbest piyasa koşulları içinde büyümüş... kamusal düzenleme olmaması (yüzünden) ülkemiz salt tüketici konumda kalmış... bilgisayar mühendisleri teknoloji ve bilim dünyasında çığır açan çalışmalara imza atmak yerine kod yazan kişiler olarak kalmışlardır.

Bu metni yazan ve okuyan hiç kimsenin aklına, "silikon vadisinde çığırları açanların kamu düzenlemesi mi vardı?", "serbest piyasa hakimiyetindeki Amerika, bilişim tüketicisi konumunda mı?" ya da "Knuth, Tarjan, Sedgewick gibi teorik araştırmacılar bile her gün kod yazıyorken bizim bilgisayar mühendislerinin ayağına bu niye bağ oluyor" gibi çok basit sorular gelmemiş anlaşılan!

Bu bilgi kirliliğine engel olmak için bazı kavramları temelden açıklamak gerekiyor.

Bilgisayar Mühendisliği

Bir çok ülkede Computer Science (Bilgisayar Bilimi) olarak geçen bölümdür. Bir uygulamalı matematik alanıdır. Temel problemleri: neleri hesaplayabiliriz (karmaşıklık, quantum), nasıl hesaplayabiliriz (algoritmalar, veri yapıları, yapay zeka, diller ve derleyiciler) ve neyle hesaplayabiliriz (bilgisayar mimarisi, ağlar, sistemler) olan bir bilim dalıdır.

Türkiye'de bir mühendislik bölümü olarak açılmasının nedeninin devlet kadrolarında mühendis olmayanların teknik kadro sayılmasının zorluğu ve yüksek maaş alamamaları olduğunu düşünüyorum.

Mühendislik iki anlamda kullanılabiliyor: Bilimsel bilginin bir şeyler geliştirmek için kullanılması ile bir profesyonel meslek dalı. Birinci anlamın bir sakıncası yok. Örneğin bir problemin çözülmesi için bir program geliştirmek bir mühendislik çalışması olarak görülebilir.

İkinci anlamda ise sıkıntı büyük. Profesyonel mühendislik, tıpkı doktorluk ya da tesisatçılık gibi bir meslektir. Denetime bağlıdır, mesleği yapanlar bir oda ya da kuruma kayıtlı olmak ve belli yeterlik şartlarını yerine getirmek zorundadır. Bunun amacı da, örneğin evinize patlama riski olan bir doğalgaz borusu bağlanmasını ya da iki inşaat mühendisinin aynı bina için farklı statik hesapları vermesini önlemektir.

Böyle bir durum bilgisayar mühendisliği için iki nedenden anlamsız. Birincisi bu bir profesyonel meslek değil, bir bilim dalı ve bu bilgiye herhangi biri sahip olabileceği gibi kendi başına her türlü amaçla da kullanabilir. İkincisi ise yaratıcılığa ve çeşitliliğe açık bu alanda, şu iş bu şekilde yapılır gibi meslek kurallarını üretecek bilgiye sahip değiliz. Evet, bazı tasarım kalıpları (design patterns), ve yazılım geliştirme teknikleri (test tabanlı geliştirme, sürüm kontrolü, vb) icat ettik ama hâlâ genel problemi çözebilmiş değiliz. Bu iş bir bilim olduğu kadar aynı zamanda bir sanat da. Şirketlerin diplomaya sertifikaya değil kendi mühendisleriyle yapılacak mülakata bakmasının altında da bu yatıyor.

Bilgisayar Bilimcisi Program Yazmaz mı?

Bu saçma fikrin savunulmasının ardında diplomayı aldıktan sonra yan gelip yatarak para kazanma beklentisi var herhalde.

Araştırmacılar için hipotezlerini test etmenin, modellerini incelemenin önemli bir yolu program yazmak. Bazen teorileri ispatlamanın bir yolu bile olabiliyor.

Endüstride ise program yazmayacağım diyen adamı görüşmeye bile çağırmazlar. Google, Microsoft, Apple gibi şirketlerin herhangi bir pozisyonuna girmek için iş görüşmesinde bile program yazmanız gerekiyor.

Bir kişi analiz yapacak, diğeri tasarım yapacak, kalanlar da tasarımdaki fonksiyonları yazacak modeli 60'larda kaldı. Yazılım geliştirme, yazılımların artan karmaşıklığı ile birlikte çok daha dinamikleşti. Tasarım, gerçekleme, test ve hata ayıklama ayrı süreçler değil artık. Takımlar, hiyerarşi yerine birlikte çalışan uzmanlardan oluşuyor.

Elini kirletmeyen biriyle hiç kimse çalışmaz. Okulda ödev olarak yazdığı programlar dışında bir deneyimi olmayan adamın zaten tasarım bilgisi de olamaz. Dahası, bu işlerden bir kaç yıl kopmuş birinin bile tasarım becerisi hızla düşmeye başlar.

Okullu mu Alaylı mı?

Bir başka saçma tartışma. Genelde bu tartışma teorik bilgi mi yoksa pratik bilgi mi gibi yanlış bir düzleme de çekiliyor. O yüzden ikisine de bakalım.

Örneğin elindeki dosyalardan bazı bilgileri tarayıp istatistiksel bir sonuç çıkarmak isteyen bir kişiye Python ile basit betikler yazmaya yetecek kadar bilgisayar bilimleri bilgisi yeterli olabilir. Benzer şekilde bir felsefeci hiç programlama öğrenmeden yalnızca karmaşıklık teorisini çalışarak kendi alanında ihtiyaç duyacağı bilgilere kavuşabilir.

Karşılaşılan herhangi bir problemi çözebilecek genel bir program yazma yeteneği ya da bilgisayar bilimleri alanında yeni bilgiler keşfedebilecek bir araştırma yeteneği için ise üniversite eğitimi programında yer alan hemen her konuyu öğrenmek şart.

Bilgisayarlar bir çok katmandan ibaret. Algoritmalar, kitaplıklar, diller, işletim sistemi, işlemci, transistörler, elektronlar. Bu katmanların hangi seviyesinde çalışırsanız çalışın altınızda kalan kısımlara bağımlısınız. Dolayısıyla işinizi daha iyi yapabilmeniz altta neler döndüğünü bilmenize bağlı.

Teorik ve pratik bilgiden biri daha üstün diyemezsiniz. Daha iyi bir algoritmayla kazandığınız teorik hızı, o algoritmanın işlemci önbelleği kullanımı daha kötü olduğu ve veri setiniz yeterince büyük olmadığı için geri kaybedebilirsiniz örneğin.

Bu bilgileri nereden ve nasıl öğrendiğiniz değil, öğrenmiş olmanız önemli. Dahası dünyanın en iyi üniversitelerinde bile okusanız, işlenen konular ve yaptığınız ödevler sizi bu alanda uzman yapmaya yetmeyecek.

Orko der ki...

Eskiden İstanbul'da her kahvede, satrançta o kahvedeki herkesi yenmiş ama başka birileriyle oynamadığı için Kasparov'u yenerim ben diye böbürlenen tipler vardı.

Ne iş yapıyorsanız yapın, o alanda dünyanın en iyileri kimse onları bulun ve onları tanımaya ve geçmeye çalışın. Bilgisayar alanında bir şeyler keşfetmiş her araştırmacının, günlük yaşamda kullandığımız ürünleri yapan her geliştirici ve girişimcinin, Internet üzerinde blog'ları, sunumları, ders videoları, makale ve kitapları var.

Hayatında büyük ölçekli bir ar-ge projesinde yer almamış, eski ders kitaplarından okuduğu arkaik tanımları öğreten hocaları, yaptığı e-ticaret sitesi ya da muhasebe programıyla kendini girişimci sananları, yabancı dilden yarım yamalak çevirilerle kitap yazanları, forumlarda iki üç soru cevapladığı için büyük üstat havalarına giren tipleri ciddiye almayın.

Yoksa yukarda alıntıladığım kişiler gibi kendi küçük mağaramızda dışardaki dünyanın gölgeleriyle oyalanır dururuz.



20 May 2016

Veri Bilimi Bülteni — 40


Her cuma yayın­ladığım ‘Veri Bil­imi Bül­teni’ ile son 1 haf­tada veri ve veri bil­imi konusuyla ilgili okuduk­larım­dan dikka­timi çeken­leri pay­laşıy­o­rum. Bu bül­ten her yayın­landığında hab­er­dar olmak istiy­or­sanız “Haf­talık Veri Bil­imi Bül­teni” linkedin grubuna üye ola­bilirsiniz. Küçük bir not: Önümüzdeki haftadan itibaren bülteni tamamen ingilizce olarak çıkarmayı (zaten içerikler ingilizce, ben bazen yorumlarımı türkçe Devamını Oku […]

09 May 2016

Vodem’in (Huawei 4231) Linux’ta Ethernet Olarak Kullanımı


Elime Vodafone’un bir modemi (Vodem) geçti. Bilgisayarıma taktığımda Linux bir ethernet olarak görmedi ve doğrudan çalışmadı. Daha önce Turkcell’in yeni nesil VINN’larında bu hiç başıma gelmediğinden, bir miktar uğraşmam gerekti.

Huawei’nin K4203 isimli bir modeliymiş (lsusb sağolsun). Kendisi öntanımlı olarak MBIM isimli, Linux 3.8’de desteği gelen bir protokolle bağlanıyormuş (Google sağolsun). Bir sonraki nesil bir cihaz kısaca. Ama ethernet aygıtı olarak da çalıştırmak da mümkün. Bunun için usb_modeswitch ile cihaza komut gönderilmesi gerekiyor.

lsusb çıktısında aygıtın ID’sini 12F1:1F1C olarak görüyoruz:

# lsusb
# lsusb | grep Huawei
Bus 002 Device 012: ID 12f1:1f1c Huawei Technologies Co., Ltd.

usb_modeswitch ile şu komutu gönderince kendisi bir ethernet aygıtına dönüşüyor:

# usb_modeswitch -v 12d1 -p 1f1c -W -I -M 55534243123456780000000000000011062000000101000100000000000000
Taking all parameters from the command line

* usb_modeswitch: handle USB devices with multiple modes
* Version 1.2.5 (C) Josua Dietze 2012
* Based on libusb0 (0.1.12 and above)

! PLEASE REPORT NEW CONFIGURATIONS !

DefaultVendor= 0x12d1
DefaultProduct= 0x1f1c
TargetVendor= not set
TargetProduct= not set
TargetClass= not set
TargetProductList=""

DetachStorageOnly=0
HuaweiMode=0
SierraMode=0
SonyMode=0
QisdaMode=0
GCTMode=0
KobilMode=0
SequansMode=0
MobileActionMode=0
CiscoMode=0
MessageEndpoint= not set
MessageContent="55534243123456780000000000000011062000000101000100000000000000"
NeedResponse=0
ResponseEndpoint= not set

InquireDevice disabled
Success check disabled
System integration mode disabled

Looking for default devices ...
searching devices, found USB ID 12d1:1f1c
found matching vendor ID
found matching product ID
adding device
searching devices, found USB ID 04f2:b230
Found device in default mode, class or configuration (1)
Accessing device 012 on bus 002 ...
Getting the current device configuration ...
OK, got current device configuration (1)
Using interface number 0
Using endpoints 0x01 (out) and 0x81 (in)

USB description data (for identification)
-------------------------
Manufacturer: Vodafone(Huawei)
Product: HUAWEI Mobile
Serial No.: FFFFFFFFFFFFFFFF
-------------------------
Looking for active driver ...
OK, driver found; name unknown, limitation of libusb1
OK, driver "unkown" detached
Setting up communication with interface 0
Using endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
OK, message successfully sent
Resetting response endpoint 0x81
Resetting message endpoint 0x01
-> Run lsusb to note any changes. Bye.

Artık lsusb ile baktığımızda USB ID’sinin de değiştiğini görüyoruz:

# lsusb | grep Huawei
Bus 002 Device 013: ID 12d1:1590 Huawei Technologies Co., Ltd. 

Şimdi bir ağ aygıtı olarak da onu görebilmeliyiz ve eğer ağ yöneticimiz otomatik IP almaya ayarlıysa IP’sini bile almış olmalı:

# ip a
8: enp0s29u1u3: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 86:c9:ec:4d:51:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.9.100/24 brd 192.168.9.255 scope global enp0s29u1u3
valid_lft forever preferred_lft forever

Bu yaptığımız ayarlar, ne yazık ki kalıcı değil. Modemin üzerine böyle bir bilgi yazamıyoruz. Onun yerine Linux’un aygıt yöneticisi olan udev’e bu modemin her takıldığını farkettiğinde bu komutu çalıştırmasını söylememiz gerekiyor.

Bunun için udev’in kuralları okuyabileceği bir dosya oluşturuyoruz:

echo 'ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f1c", RUN+="/usr/sbin/usb_modeswitch -v 12d1 -p 1f1c -W -I -M 55534243123456780000000000000011062000000101000100000000000000"'> /etc/udev/rules.d/45-usb_modeswitch.rules

udev’e kuralları tekrar okumasını söylüyoruz:

# udevadm control --reload-rules

Artık “Vodem”i taktığımızda, otomatik olarak ethernet kartı olarak görünmeli ve DHCP’ten IP alabilmeli.

Not: Aygıta gönderilmesi gereken “55534243123456780000000000000011062000000101000100000000000000” gibi bir mesajı kafadan yazmadım :). İnternet’ten araştırdığımda rastladım. Sadece bu cihaz değil, başka Huawei cihazlarında da işe yarıyor gibi okudum. Teknik kaynağını bilen varsa, yorumlara eklerse sevinirim.



23 March 2016

Bir “Portal” üzerine…


Türkiye’de özgür yazılım katkıcılığı yapmak zor iş… Hatta katkıcılığı bırakın topluluk üyesi olmak bile pek kolay değil…

2007 benim için bu alanda bir milat, kişisel aydınlanma, özgür yazılımın alnımda çıkardığı 3. göz… Bu tarihi referans alırsam 2007 öncesi -topluluk/camia ne derseniz artık- aitlik süreci çok zordu. Bakıyorum da 2007 sonrasından ta ki hatırlamak istemediğim bir tarihteki Özgürlükİçin.org çöküşüne kadar gerçekten güzel zamanlar geçirmişiz… Bu çöküşten sonra ise, topluluk ve aidiyet dışında özgür yazılım dünyasıyla olan bağlarımız da zayıflamaya başladı… En büyük zorluk ise bir portal, bir ana gemi olmayışı.

Efsanevi Özgürlükİçin sitesi hayalet gemi gibi bant genişliklerinde seyretmekte... Efsanevi Özgürlükİçin sitesi hayalet gemi gibi bant genişliklerinde seyretmekte…

Bu zorluğu kısaca masaya yatırırsak -aslında buna da çok zamanım yok- madde madde gidelim:

  • Özgür yazılım dünyasından haberler / sürüm duyuruları
  • Ortak bir paylaşım/yardımlaşma alanı – forum
  • Blog kardeşliği – gezegen
  • İncelemeler – özellikle oyun ve heyecan verici şeyler

Bu ve bunun gibi onca şeyi bir araya getiren harika bir şeye sahipmişiz; özgürlükiçin.org hatta o zman o kadar zenginmişiz ki bir de pardus-linux.org‘a sahipmişiz… ve cahilmişiz… bunların artık geride kaldığını kabul etmek gerekiyor…

Özgür yazılımda böyle “değerler” (bu kelimeyi kullanmayı da pek sevmiyoırum) ne kadar önemliymiş, onu düşünüyorum bir kaç gündür… Bunların eksikliği gerçekten özgür yazılım dünyasını takip etmekte insanı çok zorluyor… Hadi ben İngilizce biliyorum takip edebiliyorum… Ya ait olmak? Paylaşmak? Yardımlaşmak? Birlikte bir şeyler yapmak isteyip de o marşa basıp o enerjiyi boşaltabilmek? Yapabilmek? Bunlar yok…

Atlamadan bir de teknokedi.com vardı, o da bu açığı kapatmak için kendi öz amacı olmasa da alan yaratmak için katkı vermişti. Sevgili Ali Işıngör abimizin iyi niyetiydi…

Şu anda bu alan içice dağınık halde… Andoid, tabletler  ve mobil teknoloji birçok kişinin başını döndürdü ve masaüstü arka plana itildi, fakat şimdi GNU/Linux masaüstünün güçlenerek geldiğini görüyorum. Steam’in GNU/Linux’a gelmesi ve süpersonik oyunları Linux’a taşıması, Nvidia – Ati sürücülerindeki yenilikler + Vulkan vs, ve nihayetinde de Microsoft’un başlayan Linux aşkı(!) (hem Office’in potansiyel Linux sürümü beklentisi hem de Office 365)… Bunlar harika şeyler aslında… Masaüstünde Linux kullanımını kısıtlayan birçok sıkıcı bahane ortadan kalkıyor -konuyu uzatmamak adına özgür yazılım felsefesiyle kapalı yazılım tercihini kullanıcıya bırakalım… Yakında kendi adam akıllı dağıtımıyla pazara çıkacak masaüstü/dizüstü bilgisayarlar görmeyi umuyorum. (Dejavu değil…)

Konuya dönersek, şu anda bildiğim birkaç site arasında GNU/Linux dünyasına özel bir amiral gemi görebileceğim bir portal yok. Bildiğim siteler ise adeta kahramanca bir bireysel mücadele ile ayakta tutulmaya çalışılıyor, içerik sunmak için büyük emek ve zaman harcanıyor… Bunlardan bazıları:

  • getgnu.org – Fortran takma ismiyle adeta bir süperkahraman edasıyla paylaşılabilir bütün haberleri neredeyse tüm özgür yazılımla ilişkili forumlara ileten süper kişi. nasıl yaptığını hala çözebilmiş değilim.
  • linuxnotlari.co – Sevgili Mustafa Gökay’ın epeyce emek verdiği Linux Haber Platformu. OMG ubuntu tadında
  • acikgunluk.net – Sevgili Özgür Ilgın’ın günlüğü, özgür yazılım artı hobileri (özel ilgi alanı nostaljik ve avatür türk sineması)

* Başka bildiğiniz aktif sayılabilecek site varsa yorumlara yazarsanız sevinirim.

Yeni bir site?

Hayır, yeni değil, birleştirici, geniş ve yeni içeriği sunan bir site… Kolektif ve eğlenceli, hatta daha önce olmadığı kadar eğlenceli olmalı… Özgür yazılım caps galerisi dahi olsa olur…

Neden?

Çünkü ihtiyaç var

Peki gönüllü mü olacak, nasıl ayakta duracak?

Ticari bir proje olmalı. Para kazanmalı, en azından masraflarını çıkarmalı.

Özgür yazılım projeleri ve ticari amaç???

Böyle bir tabu var, ticari amaç güdülebilir. Özgür yazılım ürünleri dahi parayla satılabilir ki bu gibi işlerde “reklamsızlık” sanki bir bekaret kemeri gibi her projeye iliştiriliyor. Çok anlam veremiyorum…

Ticari amaç olmalı, diğer türlü hiçbir şekilde ayakta duramadı. Bağış kültürü bizim ülkemizde yok, şahsi fedakarlık bir yere kadar… Bir de bu işleri üstlenen kişiler sürekli rica minnet ile istekte bulunmak gerekiyor; damdan düştüm bilirim, yok bize sunucu, yok bize alan adı lazım diye aramaktansa parayı basıp almak en sağlıklısı.

Kim yapacak? Nasıl bir model?

Şu an bu işi hobi olarak yapan arkadaşlar ve böyle bir projeye girmek isteyen kişiler bir araya gelebilir, gelir paylaşımlı kolektif bir model üzerinde anlaşabilir. Dileğim de budur. Şayet onlar olmazsa, İngilizce bilen birkaç üniversite öğrencisi arkadaş böyle bir projeye girerse hem hobi, hem harçlık hem de ileriye yönelik belki de kendi işlerini kurabilirler.

Gelir yeterli olur mu?

Varsayalım Google Adsense ile yola çıktılar, Türkçe içeriğin reklam başı getirisi tabi ki İngilizce içerikten daha düşük olacaktır, ama akmasa da damlar, ileriye doğru hacim arttıkça tatmin edici bir gelir gelebilir.

Özellikle Steam sayesinde oyun inceleme ve tanıtım içeriklerinin ileride büyük potansiyeli olacağına inanıyorum.

Zorlukları?

Tahmin ettiğim bazı zorlukları var, bunun yanı sıra yukarıda bahsettiğim arkadaşların yaşayıp deneyimlediği zorluklar da vardır. Sonuçta protonların çarpıştırmayacakları için kolayca üstesinden gelebileceklerini düşünüyorum. Linus Torvalds’ın “Just for fun – Yanlızca Eğlenmek İçin…” sözüne yaslanıp eğlenceli bir yola girilebilir…

***

Yukarıdaki kendi kendime röportajım daha kısa bir yazı yazmak içindi, kendimi havaya sokmak için değildi. Epeydir bir şey karalamamıştım, lafı iyice uzatmak istemedim 😉

Dilerim bu yazım bir açık davet olur, en azından bir tartışma başlar ve şu üzerimizdeki ölü toprağını silkeleyebiliriz.

***

Bonus: “Var mı peki bu haberleri takip edebileceğimiz yabancı bir site?” diyenler özgür Ilgın’ın 10 sitelik listesine bakabilirler: En çok takip ettiğim 10 yabancı GNU/Linux haber ve blog

***

Son olarak, ben bu yukarıda yazdıklarımı düşünürken LKD‘den şöyle bir ileti de geldi. Katkı verebilceklerin dikkatine:

Merhaba,

Dünyada özgür yazılım ve ilgili alanlar (kişisel verilerin gizliliği, ifade özgürlüğü, telif hakları vs.) hakkında önemli gelişmeler yaşanmakta. Ancak bu gelişmeler hakkında yayımlanmış güncel haber ve yazılar yabancı dil (başta İngilizce) bilmeyen ilgililere ulaşamamakta. Bu nedenle, güncel haber ve yazıları Türkçeye çevirmek amacıyla bir çeviri grubu kuruyoruz. Çeviri grubu çalışmalarına LKD üyesi olsun ya da olmasın özgür yazılıma gönül vermiş herkes katılabilir.

Çevirisi yapılacak haber ve yazılar, LKD tarafından hazırlanacak bir sitede düzenli olarak yayımlanacak. Ayrıca aylık olarak da bülten haline getirilerek duyurusu yapılacak.

Çeviri grubuna katılmak için yk@linux.org.tr adresine, kısaca kendinizi tanıtan ve çalışma grubuna katılmak istediğinizi belirten bir e-posta atmanız yeterli olacaktır.

— 

ibrahim izlem GÖZÜKELEŞ

https://plus.google.com/109568522902358862122/posts/SC6dNnTsZAJ

~DAVET~

Özgür Yazılım Günleri 2016: LibreOffice Geliştirme ve Yaygınlaştırma ToplantısıÖzgür Yazılım Günleri 2016: LibreOffice Geliştirme ve Yaygınlaştırma Toplantısı –

(twitter bağlantısını yapıştırınca yukarıdaki kendiliğinden çıktı, vay be!)

Fırsatınız varsa katılın, detaylı bilgi için: http://ozguryazilimgunleri.org.tr/2016/etkinlik-programi/

Mutlu günler.

Sonrası Bir “Portal” üzerine… blog.bluzz.net | Günlüğüm ilk ortaya çıktı.



17 February 2016

PostgreSQL'de Türkçe sıralama destekli veritabanı yaratmak


Bu soru bana çok soruluyor, arşiv olsun diye yazayım. Öncelikle bu komut işletim sisteminin İngilizce ve UTF-8 kurulduğunu varsayıyor.

Komut şu:

CREATE DATABASE tr ENCODING='UTF-8' LC_COLLATE = 'tr_TR.UTF-8' LC_CTYPE='tr_TR.UTF-8' TEMPLATE template0;

Burada önemli şeylerden birisi CTYPE. Onu C yapsaydık upper/lower fonksiyonları düzgün çalışmazdı.

Bir de şablon olarak template0 kullanmalıyız -- bunun nedeni template1'in dil kodlamasının İngilizce olması (üstteki varsayım nedeniyle).

En basit hali ile konu bu kadar.



04 February 2016

One of The Largest Events in Europe: FOSDEM



This year, I've been attended Fosdem for the first time. Fosdem is one of the largest events of free software and open source world that happens every january, gathering thousands of the developers (+5000) in Brussels. It is great opportunity to get in touch with the developers of world's leading organisations.

Fosdem has really strong infrastructure to satisfy needs of the attenders.
I've attended the event through Episkey Limited Company's travel fund which is part of Cottange Labs. I've seen the converisation on the mailing list and said if there is any other company that supplies travel fund please let me know because Google have not published scholarship for Fosdem and I could not find another company. Emanuil Tolev has volunteered since 2011 for Fosdem. He replied me and said me and my coworkers would like to sponsor for a person. Then we started a private thread and solved sponsorship requirements. I am thankful for travel grant to Emanuil and Episkey Limited developers.

First day of the event, I've met with Michel, he works as Linux Kernel developer at Intel. We took coffe and talk little. Talking with the kernel developers makes me happy and I really feel very excited. After the meeting, I've discovered the event place, it was at Brussels University, ULB Campus, Solbosh. Fosdem is biggest event that I've attended untill now.

In general, I've joined Main Track sessions. Rspamd is one of my favorites. Vsevolod Stakhov is developer of Rspamd, he told project stages quite clear.

Libreboot and Frosted Embedded Posix OS are my favorites as well. I love to learn about low level software that's why I contribute Linux Kernel. I am former Linux Kernel at Outreachy and would like to keep contribution.

There was an Embedded Systems DevRoom, it was in Building U. I should say, location of the building is hard to find little because there was no sign about Fosdem front of the building. We could not see at least.

In the evening, I've met with my Turkish friends. We have a community photo:


Second day, I've met with Emanuil to talk face to face. He said, I really am glad to sponsor you. That's great to hear.

I've bought tshirts to donate the organisations. It is really great, I am happy to be part of free software and to move it forward.


There was a talk for in memory of Ian Murdock. I would have loved to attend it but I had to leave early because had a flight in the evening. Talks are stored here so far. This is great opportunity to watch the presentation later.

I am very happy about my first Fosdem experience because I improved my network recognizing great folks.

I've seen on the event brochure, it says 8000 developers attended! and you can see diversity at the event. Hope to improve diversity and see underrepresented groups in computer science.

Fosdem is a free event, you can attend without registration. We should donate individualistically or institutionally, if we woud like to see the event in future years.

08 January 2016

Stow ile yapılandırma paketleri


GNU/Stow bir süredir bildiğim fakat bir türlü deneme fırsatı bulamadığım çok basit bir paket veya sembolik link yöneticisi. Her ne kadar /usr/local içerisindeki linkleri yönetmek için düşünülmüş olsa da, esnek yapısı nedeniyle kullanım alanlarından biri de ev dizininde bulunan yapılandırma dosyalarını (yani nokta dosyaları ya da dotfiles) yönetmek.

Örneğin ~/dotfiles içerisinde x ve zsh adında iki dizininiz var. Bu dizinler stow için aslında birer paket ve diyelim bu paketlerin yapısı şu şekilde:

~/dotfiles
├── x
│   ├── .i3
│   │   └── config
│   ├── .Xdefaults
│   ├── .xsession
│   └── ...
└── zsh
    ├── .zlogin -> .zprezto/runcoms/zlogin
    ├── .zlogout -> .zprezto/runcoms/zlogout
    ├── .zprezto
    │   └── ...
    ├── .zpreztorc -> .zprezto/runcoms/zpreztorc
    ├── .zprofile -> .zprezto/runcoms/zprofile
    ├── .zshenv -> .zprezto/runcoms/zshenv
    └── .zshrc -> .zprezto/runcoms/zshrc

Eğer kullandığınız ve herhangi bir x ortamı bulunmayan bir sunucuda, sadece zsh ayarlarınızı kullanmak isterseniz stow zsh dediğinizde, stow sizin için sadece zsh dizini altında bulunan dosyalar ve dizinlerin ev dizininde yer alan gerekli linklerini oluşturacaktır. Bu şekilde yapılandırma dosyalarınızı paketlere bölerek, istediğiniz yapılandırmayı istediğiniz makinada rahatça kullanmanızı sağlıyor.

Bir başka örnek kullandığım yapılandırma dosyalarım verilebilir. gitin sağladığı dağıtık model ile her zaman tüm makineler arası senkronize olan bu dosyalar, stow ile de sadece gerekli makinede gerekli uygulamaları yapılandırmak için kullanılabiliyor.



03 September 2015

Bir Linux Yaz Kampı’nın Daha Ardından: Perde Arkası


Bilindiği gibi Linux Kullanıcıları Derneği (LKD), İnternet Teknolojileri Derneği (INETD) ile işbirliği içinde her sene yaz aylarında, herkesin katılımına açık olan 15 günlük Linux yaz kampı düzenlemekte. Bu yaz kampına katılım için katılımcılardan herhangi bir ücret alınmıyor. Sadece katılımcıların kendi yol/konaklama/yemek masraflarını karşılamaları gerekiyor. KYK ve üniversite yurtlarında uygun fiyatlı konaklama imkanı sunuluyor. Bu sene, yani 2015 yılında bu kampın 6.sı düzenleniyor. Son 4 yıldır ise Linux Yaz Kampı, Bolu Abant İzzet Baysal Üniversitesi’nde üniversitenin de desteği ile düzenleniyor. Geçtiğimiz 5-6 yıldır her sene artan başvuru sayıları bu organizasyonun başarısının bir göstergesi. Ben son birkaç yıldır aktif olarak bu organizasyona destek olamasam da e-posta grubunu elimden geldiğince takip ediyorum. Bu yazıya başlarken bu kadar popüler olan bir organizasyonun perde arkasında neler olduğu ve gönüllü dernek üyelerinin bu etkinliği gerçekleştirebilmek adına nelerle özenle ilgilendiği konusunda herkesin fikri olsun istedim. Şimdi detaylar…

Öncelikle başvurular alınmaya başlamadan önce yapılması gerekenleri sayarak başlayacağım. Kamp tarihinin belirlenmesi (Ramazan Ayı ve Bayramı ile çakışmamasına özen gösteriliyor.), üniversite ve yurt müdürlükleri ile iletişime geçilip belirlenen tarihlerde dersliklerin ve yurtların müsait olduğunun netleştirilmesi, gönüllü eğitmenler ile iletişime geçilip belirlenen tarihlerde kampa katılıp katılamayacakları ve hangi dersleri/sınıfları açabileceklerinin belirlenmesi, web sitesinin güncellenip kayıt almaya hazır hale getirilmesi, sponsor dosyasının hazırlanıp çeşitli firmalara sponsorluk teklifinde bulunulmak üzere gönderilmesi, kampta dağıtılacak promosyon malzemelerinin ve katılımcılara yol gösterecek afişlerin belirlenmesi, hazırlanması. Özetle, daha ortada görünen hiçbir şey yokken hummalı bir çalışma başlıyor.

Başvurular başladığında tüm kayıtlar veritabanında depolanıyor. Başvuranlar arasında üniversite öğrencilerinden, çok çeşitli kurum ve şirketlerde çalışanlara kadar farklı yaş ve hatta meslek gruplarından kişiler oluyor. 2015 yılındaki toplam başvuru sayısı 775. Sınıflar ve eğitmenlerin üst limiti belirlediği toplam kontenjan ise 300 kişi civarı. Dernek olarak stratejik görevlerdeki kişilerin eğitiminin daha önemli olduğunu düşündüğümüz için başvurularda öncelik görevlendirme alan kamu ve üniversite bilgi işlem personellerine veriliyor. Ancak daha önce de belirttiğim gibi kampa katılım herkese açık ve başvurular kapandıktan sonra kontenjan elverdiğince homojen bir seçim yapılıyor. Bu seçimler yapılırken daha önce INETD ya da LKD’nin benzer etkinliklerinde çeşitli sebeplerle kara listeye alınmış kişilerin de elenmesi gerekiyor. Seçim sürecinde yeterince hızlı olunamazsa gecikmeler yaşanabiliyor. Bu sene de gönüllü arkadaşlarımızın yoğunluğu sebebiyle sonuçları açıklamakta biraz geciktik.

Başvuranlar arasından elimizden geldiğince adil ve homojen bir seçim yaptıktan sonra kampa katılmaya hak kazananların bir listesi yayınlanıyor. Bu kişiler ile iletişime geçilerek kesin kayıtları yapılıyor ve bundan sonra yapmaları gerekenler açıklanıyor. Bunun yanı sıra bir yedek liste, bir de reddedilenler listesi oluyor. Tabii ki tüm bu kişilerle de iletişime geçilip durumdan haberdar ediliyor. Bu sırada üniversite ve KYK yurtları ile iletişim sürdürülerek kaç kadın kaç erkek katılımcı olduğu bilgisi veriliyor ki hem yaz okulu ya da staj sebebiyle yurtta kalmak isteyen öğrencilerin kontenjanlarını işgal etmeyelim, hem de Linux Yaz Kampı katılımcıları açıkta kalmasın. Bir yandan da eğitmenlerin geliş – gidiş tarihleri ve konaklama imkanları netleştiriliyor.

Eğitimlere kabul edilen kişilerden aynı sınıfta ders göreceklerin bilgi düzeylerinin birbirine yakın olmasına gayret ediliyor. Yoksa sınıftaki hiç kimse memnun kalmıyor, ders ya çok hızlı geliyor ya da çok sıkıcı. Bunun önüne geçmek için birkaç sene önce eğitimlere başlamadan bir seviye belirleme sınavı yapılmasına karar verilmişti. Bir yandan eğitmenler ve organizatörler bu sınavları hazırlamak için çalışıyorlar. Geçtiğimiz senelerde eğitimlerin başlamasına çok az bir süre kalmasına rağmen onaylanmış katılımcılardan kampın nerede yapılacağı, eğitim için ücret ödenip ödenmeyeceği, dersler başladıktan birkaç gün sonra kampa gelip gelemeyecekleri gibi, kamp web sitesinde üzerine basa basa belirttiğimiz soruları içeren e-postalar yağıyordu. Birçok kişiye garip ya da saçma gelmiş olabilir ancak bu sorunun üstesinden gelmek için kampa katılmak isteyenlere bu soruların yanıtlarını içeren ufak bir test yaptık. Açıkçası işe yaramış görünüyor. 2015 yılında kampın başlamasından hemen öncesine kadar alınan ve gönderilen e-posta sayısı 2500’ü geçmişti. Buraya kadar işlerin karışık olduğunu düşünüyorsanız gelin bir de bu noktadan sonra neler olduğuna bakalım.

Yaz kampının başlamasına 2 gün yani tam 48 saat kalmasına rağmen, çeşitli sebeplerle kampa katılamayacağını belirten katılımcılardan e-postalar yağıyor. Son anda çıkan acil işler, devam etmekte olan stajlar, kimi zaman da belirtilmeyen sebeplerle iptal e-postaları yağmaya devam ediyor. Elbette, insanlık hali, gerçekten ters giden ve önceden öngörülemeyen şeyler, seyahat engeli oluşturabilecek çeşitli sağlık sorunları olabilir. Ancak son anda yağmaya başlayan iptal e-postalarının hepsine bu gözle bakabilmemiz ve anlayışla kabul etmemiz mümkün değil. O yüzden kamp web sitesinin Sık Sorulan Sorular bölümünde belirttiğimiz gibi kampa kesin kayıt yapıldıktan sonra başvurusunu iptal edenler LKD ve INETD’nin kara listesine alınıyor. Kara listeye alınanlar gelecekte bu iki derneğin düzenlediği herhangi bir kontenjanlı etkinliğe kabul edilmiyor. Kişileri kara listeye alırken iptal e-postasını gönderen kişinin iyi niyetine ve samimiyetine güvenerek, önceden tahmin edilemeyen önemli sorunlar yaşadığını belirten katılımcıları hariç tutuyoruz. Bunu anlamak çoğu zaman birkaç kez karşılıklı yazışmayı gerektiriyor. Bu konuda da herkese eşit davranmaya özen gösteriyoruz. Elbette iptal eden katılımcıların yerlerinin doldurulması gerekiyor. Bu noktada yedek listeler devreye giriyor ancak kampın başlamasına 1-2 gün kala yedek listedeki insanlara haber vermek pek hoş olmadığı gibi, pek verimli de olmuyor. Yine son ana kadar katılımcılardan gelen çok çeşitli sorular ve örneğin konaklama şeklinin değiştirilmesi gibi çözülmesi gereken sorunlar oluyor. Tüm bunların sonucunda son ana kadar yurt listelerinin ve katılımcı sayılarının güncellenmesi gerekiyor. Bütün bu sürecin üzerine kayıt yaptırıp haber vermeden kampa gelmeyenler ya da kampa gelip sonra kaçanlar da oluyor. Eh biz de anaokulu öğretmeni değiliz tabii kocaman insanları kulağından tutup getirelim ya da köşede tek ayak üstünde durma cezası verelim. Elimizden geldiğince adil ve herkese faydalı olacak bir organizasyon yapmaya çalışıyoruz ama elimizde olmayan şeyler de oluyor. Örneğin bu sene yukarıdan gelen bir emirle kampın son haftası KYK kadın yurtlarını boşaltmak zorunda kaldık. Şehirle üniversitenin ulaşımı ise belediyedeki koşullar değiştiğinden istediğimiz gibi sağlanamadı.

Sonuç olarak, bu kampın organizasyonunda perde arkasında yaşananları olabildiğince kısa şekilde anlatmaya çalıştım. Yazıyı daha da uzatıp okunabilirliğini azaltmamak adına bahsedemediğim şeyler de var, onlar da başka bir yazıya kalsın. Elbette bizler de insan olduğumuzdan hatalarımız da oluyordur. Ancak yukarıda anlattığım bütün hazırlık sürecinin ve kamp sırasındaki eğitim sürecinin tamamının gönüllülük esasına dayandığını bir kez daha belirtmem gerekir. Bu süreçlere katkı veren herkes kendi profesyonel işlerinde çalışmaktadır. Organizasyonla ilgilenen ya da kampa eğitmen olarak katılan herkes bu kamp için zaman yaratmakta, işlerinden izin alarak (kimi zaman alabildikleri kadar ya da uzaktan çalışarak), herhangi bir ücret almadan, kampa katılmakta ve katkıda bulunmaktadırlar. Kampın eğitmenlerin yol-konaklama ücretleri, sınıflarda kullanılacak olan elektrik kabloları, projeksiyon cihazları, perdeler gibi giderleri ise LKD, INETD, Bolu Abant İzzet Baysal Üniversitesi ve bulabilirsek sponsorlar tarafından karşılanmaktadır.

Tüm bu süreç sosyal bir deney olsaydı herhalde pek çok insanın kendilerine ücretsiz olarak sunulan imkanları ciddiye almayışlarının güzel bir kanıtı olurdu. Oysa insanlar böyle bir etkinlik için para ödeselerdi son dakika iptalleri ya da şartları okumadan kayıt formunu dolduranlar yine bu kadar çok olur muydu? Ama bu kez de derneğin misyonuna ters olan bir etkinlik olurdu. LKD’nin tüm etkinlikleri herkese açık ve ücretsizdir. Çünkü özgür yazılım herkesçe erişilebilir olmalı, özgür yazılım ve Linux’u olabildiğince fazla kişiye anlatabilmeliyiz. Parası olanlara değil, gerçekten istekli olanlara ulaşabilmeliyiz. İşte yukarıdaki bu uzun yazı sadece bu amaç doğrultusunda verilmiş emeklerin çok kısa bir özetidir. Bu organizasyonda emeği geçen herkese teşekkürler, iyi ki varsınız.



27 February 2015

Gemalto – İstihbaratcılar İzin Almadan İstediklerini Dinleyebilecek


ABD istihbarat örgütü NSA ve ingiliz gizli istihbaratının (GCHQ) ortaklaşa yaptığı operasyonda, Dünyanın en büyük sim kart üreticisi Gemalto hacklendi. Gemalto senede 2 milyar sim kartı üreten ve dünya çapında […]

24 January 2015

Amazon Web Services


Amazon Web Services hakkında internette zilyon tane makale bulabilirsiniz. Ben ilk başlarda araştırırken çok fazla türkçe döküman görmedim. Gerçi türkçe döküman hiç aramadım, yoksa kesin birileri yazmıştır. Amazon Web Services, biz kısaca AWS diyelim. AWS benim için atıl kapasiteye giden...

The post Amazon Web Services appeared first on Bahri Meriç CANLI Kişisel Web Sitesi.



31 December 2014

Socks Vekil Sunucu (Proxy) ile Git Kullanımı


Öncelikle yazımdaki araya sıkışıp kalan İngilizce kısımlar için anlayış göstereceğinizi umarak başlamak istiyorum.  Bu yazımda, socks vekil sunucu kullanarak uzaktaki bir git sunucusuna (ssh protokolünü kullanarak) bağlanmak için izlediğim birkaç küçük adımı paylaşmak istiyorum.

Gelelim asıl konumuza. Vekil sunucu olarak “ssh-tunneling” [2] yardımıyla kendi yerel makinamı kullanmaktayım ve hedef git sunucu olarak github.com’u ele almak istiyorum. İnternette `git clone user@git.example.com:repo.git` şeklinde gördüğümüz ifadeler sadece ssh protokolünün kısa yazımıdır ve `ssh://user@git.example.com:repo.git` ifadesi ile aynı anlama gelmektedir [1].

Örnek olarak aldığımız github.com adresi için ~/.ssh/config dosyasına birkaç ekleme yapmamız gerekiyor. Kendi kullanıcı dizininizde bu dosya mevcut değilse oluşturup düzenlemeye devam edebilirsiniz. ~/.ssh/config dosyasına aşağıdakine benzer şekilde eklemelerinizi yapabilirsiniz.

Host github.com
    User                    git
    ProxyCommand            nc -x localhost:1080 %h %p

İlk olarak burada kullandığımız `nc` (netcat) aracı sisteminizde yoksa bunu kurmanız gerekmekte. Kendi sistemim Debian olduğundan dolayı aşağıdaki komutla bu paketi kuruyorum.

apt-get install netcat-openbsd

Daha sonra, Host ile belirttiğimiz alana git sunucumuzun adresini giriyoruz (github.com yerine kendi sunucumuz olabilir). User alanı ise git sunucusu üzerinde size açılan kullanıcı adı olacaktır. ProxyCommand bağlantı sırasında vekil sunucumuzu kullanmamızı yarayacak temel alanımızdır. `-x` parametresi ile vekil sunucu adresimizi ve port numarasını belirttikten sonra `%h` ile hedef adresimizi (git sunucumuzu) ve `%p` hedef portumuzu belirtmiş oluyoruz.

Ayrıca

Port 444

alanı ile öntanımlı 22 yerine başka bir port kullanmamız (444 gibi) mümkün. Parola yerine ortak anahtar kullanarak giriş yapmak istiyorsak aşağıdaki eklemeyi (github.key yerine tabi ki kendi ortak anahtar dosyamızı belirterek) yaparak bu sorunu da halletmemiz mümkün.

IdentityFile ~/.ssh/github.key

Tüm bu adımlardan sonra uzaktaki git sunucumuza vekil sunucumuz üzerinden bağlanmaya hazırız. Yazının başında belirttiğim gibi bu adımlar ssh ile yapılan bağantıları kapsamaktadır. HTTP(S) için [3] adresindeki bilgilere göz atmanızı öneririm. Yazımın işinize yaraması dileğiyle.

[1] http://git-scm.com/book/tr/v1/Uzak-Serverda-Git-Protokoller

[2] http://www.revsys.com/writings/quicktips/ssh-tunnel.html

[3] http://cms-sw.github.io/tutorial-proxy.html



18 November 2014

Haydi sifreleyelim girisimi (let's encrypt initiative)


EFF bugun internetin gelecegini degistirme potansiyeli olan let's encrypt adini verdikleri projeyi duyurdu. Mozilla, Cisco, Akamai gibi devlerin yani sira IdenTrust ve Michigan Universitesi arastirmacilarinin da katkilariyla olusturduklari yeni bir sertifika otoritesi olan let's encrypt, web'in http'den https'ye gecisi onunde kalan son engelleri de kaldirmayi amacliyor. Bu yazida https'nin http'ye gore artilarini siralamaktansa let's encrypt otoritesini, girisimin kurmayi planladigi sistemi ve su anda gelistirmekte olduklari ACME protokolunu anlatacagim.

Internet guvenligi arastirma grubu, ISRG, ismiyle yeni olusturulan ve kar amaci gutmeyen bir organizasyon tarafindan isletilecek let's encrypt sertifika otoritesinin hangi problemi cozmeye calistigini aciklayarak baslamak yerinde olacaktir diye dusunuyorum. SSL/TLS'in genis capta uygulanabilmesinin onundeki en buyuk engellerden en onemlileri kurulum karmasikligi, burokrasi ve sertifikalarin yuksek ucretleri olarak goruluyor. 2015 yazindan itibaren ucretsiz olarak sertifika dagitmaya baslayacak olan yeni otoritemiz su siralar tek bir komut calistirilarak, hazirda sunulmakta olan sitelerin alan adi dogrulamasini yaptiktan sonra https'ye gecirilmesi islemini yapacak bir istemci yazilimi ve bu yazilimin insa edilerken temel alindigi protokol uzerinde calisiyor. Let's encrypt bu surecte gozetecegi ana prensipleri ise soyle siraliyor;

Bedelsiz: Alan adi sahipleri kontrol ettikleri alanlar icin hicbir ucret odemeden sertifika sahibi olabilecekler

Otomatik: Sertifika alim sureci ve yenilenmesi ve sunucuda konfigure edilmesi gibi islemler tamamen otomatiklestirilerek minimum operator mudahalesi gerektirecek

Guvenli: Let's encrypt modern guvenlik tekniklerinin ve alandaki en iyi uygulamalarin implemente edilebilecegi bir platform olacak

Seffaf: Verilen ya da gecersiz kilinan tum sertifikalar incelemek isteyen herkese acik olacak

Acik: Gelistirilen protokol herkese acik bir standart olacak, gelistirilen yazilimlar ise elverdigince acik kaynak olarak sunulacak

Katilimci: Tek bir organizasyonun kontrolunde olmaktansa her acik standartta oldugu uzere topluluktan katilimcilarin fayda saglayacagi tumlesik bir girisim olmayi amaclayacak

Gelelim nasil calistigina. Altyapi ve istemci yazilimi tamamlandiginda kendi ifadeleriyle

sudo apt-get install lets-encrypt  
sudo lets-encrypt ornek.com  

komutlarini calistirmak tum ayarlari ve sertifika surecini halletmek icin yeterli olacak. Peki arkaplanda neler oluyor? Aslinda bunun icin istemci yazilimin ne yaptigina bakmadan once ACME protokolune bakmakta fayda var. Taslak halindeki RFC'ye gore genel hatlariyla protokol soyle.

Istemci yazilimi operatore hangi alan adlari icin sertifika istedigini soracak. Bu islemin ardindan sertifika otoritelerinin bir listesi gelecek. Eger secilen otorite ucretsiz sertifika saglayan bir otorite degilse odeme bilgisi bu asamada istenecek. Daha sonra yazilim operatore kisa bir sure icinde sertifikanin verilecegini bildirecek. Arkaplanda sunucu, sertifika otoritesi ile ACME kullanarak operatorun belirttigi alan adlari icin sertifika isteginde bulunacak. Sertifika otoritesinin verilen sertifikanin tipine gore belirledigi gereksinimler yerine getirildiginde verilen sertifika otomatik olarak indirilecek ve web sunucu sertifikayi kullanacak sekilde yapilandirilacak. Tercihen operatore e-posta, sms vb. gibi bir yontemle haber verilecek. Normal web hizmeti surecinde web sunucu sertifika otoritesi ile gerektigi taktirde konusarak OCSP (cevrimici sertifika durum protokolu) cevaplari, sertifika listeleri gibi bilgileri almaya devam ederek sorunsuz bir web sunma isinin yururlugunu saglamaya devam edecek.

Burada araya girip bir iki konuya acikliga kavusturayim. Yukarida web sunucu olarak bahsedilse de e-posta, xmpp vs. gibi sertifika kullanabileceginiz her hizmette ACME protokolunu ve bu protokol uzerinden calisan istemciyi kullanabileceksiniz. Su asamada organizasyon dogrulamasi(organization validation) ya da kapsamli dogrulama(extended validation) surecleri nasil isleyecek cok net olmasa da alan adi dogrulama icin(domain validation) bir sorun yok gibi gozukuyor. Protokole doneyim.

Standardimizda uc adet anahtar/anahtar cifti tanimi bulunuyor.

Ozne acik anahtari (subject public key): Sertifikaya konu olan alanlar icin dahil edilecek acik anahtar

Yetkilendirilmis anahtar cifti (authorized key pair): Sertifika otoritesinin herhangi bir kimligin yonettigi/yonetebilecegi sertifikalar icin iletisimde kullanacagi anahtar cifti. Bu cift birden fazla kimlik icin kullanilabiliyor.

Sifirlama anahtari (recovery token): Diger anahtarlarin ya da anahtar ciftlerinin kaybedilmesi durumunda sertifika otoritesine kimlik kanitlamak icin kullanilabilecek gizli anahtar

Butun iletisim https uzerinden json ile saglaniyor. Kimlikler ACME'de anahtar ciftleri ile ifade ediliyor. Bir alan adi icin istek yapilmadan once gecerli bir anahtar ciftinin ozel anahtarinin o alan adini kontrol eden tarafindan sahipliginin gosterilmesi gerekiyor. Bu kisim bildigimiz acik anahtarli sifrelemenin aynisi oldugundan uzerinde cok durmaya gerek yok. Alan adinin ya bir DNS kaydi ile ya da sunulan bir dosya ile bir ozel anahtar tarafindan kontrol edildigi kanitlaniyor. Sertifika otoritesi bu kanitlama basarili olursa basarili mesaji ve sifirlama anahtari donuyor istemciye.

Kimlik kanitlama isleminin ardindan istemci, belirtilen alan icin bir sertifika imzalama istegi olusturuyor(CSR) ve bu istegi ozel anahtari ile imzalayip sunucuya gonderiyor. Sunucu gelen istegin daha once dogruladigi anahtar ciftine ait olduguna emin olduktan sonra sertifikayi olusturuyor ve istemciye gonderiyor. Bu cevapta sertifika yenilemenin tekrar bir dogrulama gerektirmedigi durumlarda, istemci tarafindan yenileme icin kullanilabilecek adres de gonderilebiliyor. Sertifikanin iptali icin istemci basitce, ozel anahtariyla imzaladigi iptal istemini sunucuya gonderiyor ve sunucu bu istegi aldiginda sertifikayi iptal ediyor. Istemci ya da sunucu yazacaklar icin taslak standardin burada atladigim teknik detaylarina yukarida paylastigim protokol adresinden ulasmak mumkun.

Sistem 100 metre yukaridan bakildiginda aciklamaya calistigim sekilde isliyor. Ucretsiz sertifikalarin edinilebilmesine olanak taniyacagi ve TLS implementasyonu onundeki teknik engelleri kaldirma potansiyeli oldugu icin interneti degistirebilecek bir proje olarak goruyor ve heyecanlaniyorum. Umarim Postfix, Nginx, ejabberd gibi projeler de ACME'yi ve dolayisiyla let's encrypt sertifika otoritesini otomatik olarak kullanabilmek ve yapilandirabilmek icin gereken adimlari en kisa surede atarlar. Bu sayede gorece daha guvenli bir internet deneyimi icin gereken en temel adimlardan birini atmis oluruz.



03 November 2014

Teknolojinin Kadınları Etkinliği Sunumum


Geçtiğimiz günlerde Kadın Yazılımcı topluluğu ile birlikte İstanbul Hackerspace'de Ada Lovelace Day ve Grace Hopper Celebration'ı Türkiye'de de kutlamak için bir etkinlik düzenledik, bu etkinlik için ben de bir sunum hazırladım.

Etkinlik ile ilgili Cansu Uludağ'ın değerlendirme yazısı hayli kapsamlı olmuş, okumanızı tavsiye ederim. Hem vesileyle benim bu blog yazısında (zaman sıkıntısından) bahsedemediğim diğer arkadaşlarımın şahane sunumlarını da okumuş olursunuz.

Bu blog yazısında, yoğunluktan ertelediğim bir işi yapmaya hazırlanıyorum. Etkinlikte yaptığım, hazırladığım sunumu paylaşıyorum. 

 Dünyada yazılım, bilişim ve teknoloji alanında kadınları teşvik etme amacıyla düzenlenen etkinlikler, programlar ve bu konuda kadınlara fon ayıran vakıflar hakkında bilgi verdiğim sunumuma buradan ulaşabilirsiniz.

Çoğunlukla kadınların yer aldığı özgür yazılım, açık kaynak projeleri, organizasyonlarının yer aldığı (içerisinde yer almamla bildiğim, takip ettiklerim nedeniyle) bu sunumu peyderpey de olsa güncellemek yapılacaklar listeme girdi bile! :)
                    



02 November 2014

PisiLinux 1.1 Yayınlandı


Pardus projesinin 2012 Ocak ayında sonlandırılmasından sonra yaşanan belirsizliğin ardından projenin teknik altyapı değişikliğiyle yoluna devam etmesine karar verildi. Normal şartlarda tamamladığım bu cümlenin ardından bir bağlantıya atıfta bulunurdum ama inanın İnternet’in derinliklerinde Pardus ile ilgili bu konudaki  bağlantıları aramak bile istemiyorum. Çünkü ben ve benim gibi pek çok kişi o süreçte çok üzüldü , kırıldı ve Pardus adını bile duymak istemedi ki hâlâ böyle hissedenlerin olduğunu biliyorum.

2012 Yılı bu belirsizlikle geçerken bazı Pardus severler başka dağıtımlara, bazıları da “yeni” Pardus’a geçiş yaptı geriye kalan kitle ise işimi göremeyecek duruma gelen kadar Pardus’ kullanmaya devam edeceğim derken çok az sayıdaki Pardus sever ise bir iddia ile ortaya çıktı “paketleri güncel tutacağız” Paketleri güncel tutma çalışmaları 2013 başlarında  Pardus’a özgü PİSİ , COMAR, YALI, KAPTAN gibi  teknolojileri kullanacak yeni bir Dağıtım oluşturmaya evrildi.

Tıpkı Pardus’un yıllar önce Gentoo’yu kuluçka dağıtım olarak kullanması gibi Özgün Pardus’un ardılı olan  bu yeni dağıtım da Pardus 2011.2 sürümünü kuluçka dağıtım olarak kullandı ve tıpkı ana rahmindeki bir cenin gibi bir süre sonra kalp atışları duyulmaya başlandı.

PisiLinux

PisiLinux

Yeni Dağıtımın Adı PisiLinux

Bir GNU/Linux dağıtımını diğerlerinden ayıran en önemli özelliği kuşkusuz kullandığı paket yönetim sistemidir.  Özgün Pardus’un en önemli özelliği de elbette diğer dağıtımlardan farklı olarak kendi paket yönetim sistemi olan PİSİ idi bundan dolayı yeni dağıtımın adı Pisi Linux oldu.

Çalışmalar sınırlı sayıda paketçinin çabalarıyla github üzerinde  sürdürüldü.  Paketler gözden geçirildi sürümleri güncel’e çıkarıldı, Pardus hata sistemine girilen yeni paket istekleri baz alınarak yeni paketler eklendi, Yalı içeriği güncellendi, Pisi’ye ihtiyaçlar gözönüne alınarak eklemeler yapıldı. Zahmetli ve uzun bir çalışmanın ardından geçtiğimiz Ağustos ayında ilk kararlı sürümü olan PisiLinux 1.0 yayınlandı.

29 Ekim 2014 günü yani Cumhuriyetimiz’in 91. Yıldönümünde ise güncellenen paketler 300 Mb geçtiği için ilk ara sürüm Pisilinux 1.1  sessiz sedasız yayınlandı. PisiLinux!u meydana getiren bu fedakâr ekip tıpkı iki yıldır yaptıkları gibi çalışmalarına sessiz sedasız devam ediyor…

Geçen iki yılda;

1- Kaderine terk edilen Pisi paketleri güncellediler.

2- Yeni paketleri depoya aldılar.

3- Yeni bir dağıtımı meydana getirdiler.

4- Pisi’ye yeni özellikler eklediler.

5- PisiLinux Topluluğunun temellerini attılar. Bu amaçla proje sayfası, Web Sitesi,  Forum, Hata Takip Sistemi,Yardım Kanalları‘nı hayata geçirdiler.

Bu tip blog yazıları genelde “etkin” destek çağrısı amacıyla yazılır ki ben de daha önce böyle birkaç yazı yazmıştım. Ancak bu sefer öyle değil.

Bu sefer sadece bir son kullanıcı olarak size PisiLinux’u sadece deneme amaçlı da olsa kurun kullanın demek için yazıyorum. PisiLinux 1.1 sürümünü indirin ve  önyargılarınızı bir kenara bırakarak kullanın. Bir bakın eğer işlerinizi yapamayacağınızı düşünürseniz de  kaldırın.  Bu seviyeye gelmiş olan Pisilinux artık sizden sadece kullanılmayı ve hak ettiği değeri görmeyi bekliyor.

Daha önce defalarca Linux dağıtımları kurdunuz kaldırdınız bir kez daha yapabilirsiniz haydi!

Sürüm Çıkış Târihi İndirme Bağlantısı
Pisi Linux 1.1 KDE  29.10.2014
Pisi Linux 1.0 KDE  14.08.2014
Pisi Linux 1.0 LXDE 14.08.2014
Pisi Linux 1.0 XFCE 14.08.2014
Pisi Linux 1.0 Minimal 14.08.2014


26 September 2014

Fedora 20 Adım Adım Laravel Kurulumu


Hepinizin malumu Laravel şu an en popüler php frameworklerinden biri. İnternette Ubuntu için oldukça fazla anlatım mevcut olmasına rağmen Fedora'da oldukça kısıtlı ve eksik. Böyle olunca lamp kurulumundan başlayarak adım adım anlatalım dedik. Hadi başlayalım.

1.LAMP KURULUMU

   1.1 Apache Kurulumu

      Paket Yöneticisi Güncellenir

      #sudo yum update

      Apache web sunucusu kurulur

      #sudo yum install httpd

      Web sunucusu çalıştırılıp kontrol edilir

      #sudo service httpd start

      Tarayıcı'ya http://localhost yazılırsa şöyle bir şey çıkması lazım


     1.2 Mysql Kurulumu

       Mysql Kurulur ve başlatılır

       #sudo yum install mysql mysql-server       #sudo service mysqld start       


       Mysql Güvenli Kurulum betiği çalıştırılır

      #sudo /usr/bin/mysql_secure_installation
     
      Aşağıdaki gibi sorulara cevap verilir.


/usr/bin/mysql_secure_installation: line 379: find_mysql_client: komut yok

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): Burada enter'a basıyoruz
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

     1.3 PHP Kurulumu

       Php ve gerekli modülleri yüklenir

       #sudo yum install php php-mysql php-mcrypt 
         (mcrypt paketi kurulmazsa laravel kurulumunda hata verebilir)    

     1.4 Sistem Açılış Ayarları

       Aşağıdaki komutları yazarak http ve mysql servislerinin sistem açıldığında otomatik açılmasını sağlıyoruz
        #sudo chkconfig httpd on
        #sudo chkconfig mariadb on



     1.5 Php Testi

       Nano Editörü yüklenir

       #sudo yum install nano
       #sudo nano /var/www/html/info.php

       Açılan editöre aşağıdaki kod kopyalanır

     
             <?php 
             phpinfo(); 
            ?>

        Kaydedilip çıkılır. Apache yeniden başlatılır

         #sudo service httpd restart

        Tarayıcı'ya http://localhost/info.php yazılırsa şöyle bir şey çıkması lazım



2.LARAVEL KURULUMU

  Terminalde şu komutu yazıyoruz

   #sudo curl -sS https://getcomposer.org/installer | php
  

  Composer.phar dosyasını çalıştırılabilir dosyalar klasörüne atıyoruz.

   #mv composer.phar /usr/local/bin/composer

  Html Klasörümüze gidiyoruz

   #cd /var/www/html
   #composer create-project laravel/laravel proje-isminiz
   #cd proje-isminiz
   #composer install
   #cd ..
   #sudo chmod -R 777 proje-isminiz
   
   Tarayıcı'ya http://localhost/deneme/public/ yazdığınızda aşağıdaki ekran gelmesi lazım. Gelmiyorsa SElinux engelliyordur. Kaldırmak için
    #nano /etc/selinux/config 
    Bu dosya içerisinde yer alan SELINUX=enforcing yazan satırı SELINUX=disabled veya permassive olarak değiştiriyoruz  ve dosyamızı kaydediyoruz.


   


14 July 2014

LaborComm 2014’te Düzenlediğimiz Paneldeki Sunuşum


Uluslararası İşçi ve İletişim Konferansı (LaborComm) [1], 2010 yılından bu yana Ankara Üniversitesi İletişim Fakültesi’nin [2] yürütücülüğünde düzenlenen ve bence oldukça önemli tartışmaların yürütüldüğü, dolu dolu geçen bir konferans. Bu yıl 5. kez düzenlendi. İlk kez geçen yıl dinleyici olarak katılabilmiştim LaborComm’a ve birçok oturumda epey bilgi edinmiş, tartışmalardan faydalanmıştım.

LaborComm 2014’ün teması, geçtiğimiz birkaç yılda dünyada ve Türkiye’de ortaya çıkan direniş hareketlerinin etrafında şekilleniyordu. Çağrı metninden [3] alıntılayacak olursam:

“Geçtiğimiz birkaç yıl tüm dünyada ve Türkiye’de toplumsal hareketlerin yükseldiği ve bu çerçevede iletişim ve iletişim ağlarının önem kazandığı bir dönem oldu. Egemenler interneti artık sadece yeni birikim stratejilerinin ayrılmaz bir parçası olarak değil, aynı zamanda kendi egemenliklerine yönelen büyük bir tehdit olarak da görmeye başladılar. Bu çerçevede internet üzerindeki izleme faaliyetlerinin giderek tırmandığı açığa çıkarken, internetin sınırlandırılmasına yönelik düzenlemeler de giderek daha fazla gündeme geliyor. Ancak diğer yandan internet üzerindeki görece özgür alanların sınırları genişliyor ve buralardaki iletişim ve örgütlenme kent meydanlarında somutlaşıyor. LaborComm 2014, bu alanda yaşanan deneyimlerin bilgisini üretmeyi ve ileriye dönük olarak emeğin ve iletişimin özgürleşim olanaklarını değerlendirmeyi amaçlamaktadır. Bunun yanı sıra düzenlenme amacına uygun olarak iletişim ve emeğin kesiştiği tüm alanlara ilişkin çalışmaları beklemektedir.”

Tahmin edilebileceği gibi, Gezi Direnişi ile ilgili epeyce bildiri vardı, programdan da görülebilir. Biz de, hem Gezi Direnişi’ni, hem de özgür yazılımı, özgür İnternet’i ve özgür iletişimi önemseyen 4 bilişim emekçisi (İzlem Gözükeleş, Taylan Özgür Yıldırım, Oktay Dursun ve ben) olarak bu yıl konferansta bir panel düzenlemeyi önerdik. Konferans yürütücüleri fikre olumlu yaklaştılar ve böylelikle konferansın kapanış oturumunu kapmış olduk. Oturum başkanımızın da şu an iletişim alanında akademik çalışmalarını yürüten ama özünde bizler gibi bilgisayar mühendisi olan Doç. Dr. Funda Başaran Özdemir olmasıyla biraz daha rahatladık 🙂

Panelimizin başlığını “Direniş Kendi İletişim Kanallarını Oluştururken; Özgürlük, Yazılım, İnternet ve Emekçiler” olarak belirledik, her birimiz konunun farklı birer boyutunu ele almaya çalıştığımız birer sunuş yaptık. Sunuşların ardından salondan gelen soru ve katkılarla da tartışmayı genişlettik. Hem bizlerin izlenimi, hem de panel sonrası dinleyicilerden gelen geri bildirimlere dayanarak söyleyebilirim ki güzel bir panel oldu.

Konferansın bildiri kitapçığı şu anda hazırlanma aşamasında. Önümüzdeki birkaç hafta içinde yayımlanmış olacak sanırım, konferans web sitesinden e-kitap olarak da indirilebilecek. Bizim paneldeki sunuşlarımız konferansın diğer oturumlarındaki gibi akademik bildiri niteliğinde değildi, ama yine de panelde konuşulanların da bildiri kitapçığında yer almasının güzel olacağını söylediler bize. Ben de toparlayabildiğim kadarıyla yaptığım sunuşu genel hatlarıyla kısa bir metinde aktarmaya çalıştım. Aşağıda o metni bulabilirsiniz.

Panelde ilk sunuşu ben yapmıştım ve özgür yazılımı neden bu kadar önemsediğimizi kısıtlı zamanda hızlı biçimde anlatmaya çalışmıştım. Yaptığım sunuşun içeriğinin büyük bir kısmı, bir süredir farklı etkinliklerde yaptığım “Her Yer Linux Her Yer Özgür Yazılım” sunumumla[4] çakışmakla birlikte, o sunumda yer verip burada anlatmadığım ve burada olup onda olmayan bazı kısımlar da var.

Özgür Yazılımı Neden Bu Kadar Çok Önemsiyoruz?

Richard Stallman’ın bundan yaklaşık 30 yıl önce başlattığı özgür yazılım hareketi, artık başladığı noktanın çok ilerisinde. İnternet’in sağladığı yayılma olanağının da katkısıyla bugün dünyanın her yerinde çeşitli özgür yazılımları geliştiren, yaygınlaştıran, yerelleştiren, paylaşan ve kullanan insanlar, şirketler ve hatta devletler bulunuyor. İnternet’e bağlı herhangi bir cihazı kullanan bir kişi, kendi kullandığı yazılımlar özel mülk yazılım olsa bile bağlandığı web sitesi özgür yazılımlar aracılığıyla hazırlandığı ve sunulduğu için dolaylı yoldan da olsa özgür yazılımları kullanmış oluyor. Teknik yeterlilikleri ve üstünlükleriyle özgür yazılımlar bilişim alanında kolaylıkla vazgeçilemeyecek bir yer edinmiş durumdalar.

Öte yandan, özgür yazılımı bu kadar çok önemsememizin ve her fırsatta öne çıkarmamızın sebebi sadece sunduğu teknik olanaklardan kaynaklanmıyor. Tarihçesi, ortaya çıkış gerekçeleri ve gelişim süreci ele alındığında özgür yazılım meselesi, teknik bir tartışma olmanın çok ötesinde, politik bir mesele olarak karşımızda duruyor. Özgür yazılım hareketini başlatan ve günümüzdeki en önemli temsilcilerinden biri olan Richard Stallman, çeşitli söyleşilerinde bu durumu şöyle dile getiriyor:

“Özgür yazılım, sadece teknik bir mesele değildir. Aynı zamanda etik, sosyal ve politik bir meseledir. Sadece bilişim alanında çalışanları değil, toplumun her kesimini ilgilendirir. Düşünce özgürlüğü, ifade özgürlüğü, kişisel bilgilerin gizliliği gibi konularla doğrudan ilgilidir. ”

Richard Stallman’ın çizdiği bu çerçeve, aslında epey geniş bir alanı tarifliyor olsa da, politik bir mesele olarak özgür yazılımı bireysel ve toplumsal özgürlükler bağlamında tartışmanın tek başına yeterli olmadığını düşünüyoruz. Elbette özgür yazılımların yazılım alanında üretici ve tüketiciler olarak bizlere sağladığı özgürlükler çok büyük önem taşıyor, özellikle de çokuluslu yazılım ve donanım tekelleri ile devletlerin bu özgürlüklerimize saldırılarını yoğunlaştırdıkları bir dönemde olduğumuzu göz önünde bulundurduğumuzda var gücümüzle savunmamız gereken bir mevkide bulunuyorlar. Fakat özgür yazılımı politik bir mesele olarak tartışırken, çok daha temelde olan ve aslında bu özgürlüklerin de kaynağını oluşturan, özgür yazılımların hem üretim hem de tüketim süreçlerini de doğrudan etkileyen bir noktayı ele almak istiyoruz: Kamusal mülkiyet. Eğer özgür yazılımlarla özel mülk yazılımları birbirinden net bir şekilde ayırt edebiliyorsak bunu sağlayan şey teknik özellikler değil, üretilen yazılımın ve kaynak kodunun mülkiyetinin kime ait olduğudur. Özgür yazılım hareketi, hem üretilen bir ürün olarak yazılımın, hem de o yazılımın üretilmesini sağlayan üretim aracı olarak kaynak kodlarının mülkiyetini topluma vermesiyle bir devrim yapmıştır. Yazılımın ve kaynak kodunun mülkiyetinin toplumsallaştırılması; yazılım geliştirme pratiklerinden paylaşım yöntemlerine, yazılımların çoğaltılma (kopyalanma) özgürlüğünden istenilen amaç doğrultusunda özelleştirilebilme ve kullanılabilme özgürlüğüne kadar tüm üretim ve tüketim süreçlerinin piyasa ekonomisi koşullarından bambaşka koşullarda şekillendirilebilmesine olanak sağlamıştır. Böylelikle hem bireysel ve toplumsal özgürlüklerimiz korunabilmiş, hem de özgür yazılımlar özel mülk yazılımlar karşısında birçok teknik üstünlüğe sahip olabilmişler ve yaygınlıklarını artırabilmişlerdir.

Politik bir mesele olarak özgür yazılımı ele alırken dikkate aldığımız önemli noktalardan bir başkasını da özgür yazılım hareketinin ortaya çıkış süreci bize anlatıyor. Bu nokta, özgür yazılım hareketinin, yazılımın metalaşmasına karşı geliştirilmiş bir hareket olmasıdır. 1970’li yıllara kadar, Richard Stallman’ın da aralarında bulunduğu yazılım geliştiriciler (hacker’lar) geliştirdikleri tüm yazılımları birbirleriyle paylaşmakta, böylelikle hem birbirlerinden öğrenmekte hem de çözülmüş bir sorunu tekrar çözmekle uğraşmak (“tekerleği yeniden keşfetmek”) zorunda kalmamaktadırlar. Yazılımların ticari olarak alınıp satılması yaygın değildir, bilişim alanında sadece donanım bir masraf kalemi olmaktadır. Ancak 1970’li yıllardan itibaren bu durum değişmeye başlar, yazılımın da parayla alınıp satılabileceği fikri yaygınlaşır ve birçok yazılım firması kurulur. Bunun yanı sıra, bu firmalar ürettikleri yazılımların kaynak kodlarını “ticari sır” oldukları gerekçesiyle paylaşmamaktadırlar. Bütün bunlara duyulan tepki, özgür yazılım hareketinin başlatılmasında tetikleyici olmuştur.

Özgür yazılım hareketinin uygulamaya koyduğu önemli özelliklerden birisi, hem kamusal mülkiyetle hem de hareketin metalaşma karşıtı niteliğiyle bağlantılı olan, “üretimde özgürlük, tüketimde eşitlik” ilkesidir. Özgür yazılımların mülkiyeti topluma ait olduğu için toplumun her bireyi özgür yazılımlar üzerinde aynı haklara sahiptir ve onları dilediği şekilde kullanma (tüketme) özgürlüğü vardır. Dolayısıyla tüketimde eşitlik sağlanmıştır. Öte yandan, yazılımı kullanma karşılığında bireylerden herhangi bir karşılık beklenmez. Üretim sürecine katılıp katılmama konusunda her birey kendisi karar verebilir ve üretime katılmayan bireyler, tüketim haklarını kaybetmezler; üretime katılan bireylerle hâlâ eşit tüketim hakkına sahip olurlar. Üretime katılmak isteyen bireyler ise bu özgürlüklerini istedikleri zaman kullanabilirler çünkü üretim aracı olan kaynak kodlarının mülkiyeti topluma aittir, onlar da bu kaynak kodlarını kullanarak istedikleri şekilde yazılım geliştirebilirler.

Özgür yazılım üzerine bugüne kadar yapılan sosyal araştırmaların bir kısmı, üretime katılan yani özgür yazılımları geliştiren ve diğer yollarla (çeviri, test, hata bildirimi vs.) bunlara katkı sağlayan bireylerin neden bu sürece katıldıkları sorusuna odaklanmıştır. Piyasa ekonomisi şartlarının geçerli olmadığı bir ortamda, bireyleri çalışmaya ve üretime yönlendiren sebepler birçok kez sorgulanmıştır. Bu araştırmalar sonucunda ortaya konan birkaç sonuca kısaca değinelim. Bunlardan biri, özgür yazılım toplulukları arasında bir “hediye ekonomisi” oluşmasıdır. Bir başka sonuç, bazı bireylerin “kendilerini kanıtlama” güdüsüyle üretim sürecine katıldıklarıdır; özgür yazılımlar kamusal alanda (İnternet) geliştirildiği için bu bireyler burada bireysel teknik becerilerini sergilemekte ve piyasa ekonomisinin geçerli olduğu yazılım geliştirme süreçlerinde (özel mülk yazılım üreten şirketlerde) iş bulma şanslarını artırmaktadırlar. Bir grup yazılım geliştirici ise, öğrenme ve merak güdülerini tatmin etmek amacıyla üretim sürecinde yer almaktadırlar; zihinsel emeğin ortaya konduğu yazılım geliştirme pratiğinde sıklıkla çeşitli “bulmaca”larla karşılaşılmakta, bireyler bu bulmacaları çözmekten zevk almaktadırlar. Tüm bunların yanı sıra, bazı bireyler de toplumsal çıkarları gözeterek özgür yazılımların geliştirilmesine katkı sağlamaktadırlar. Elbette saydığımız bu gruplar birbirlerinden homojen olarak ayrışmamakta, üretime katılan bir birey bu gerekçelerden birkaç tanesini sahiplenebilmektedir.

Özgür yazılımların geliştirilmesi aşamalarında kullanılmakta olan ve zamanla çeşitli gelişmeler göstermiş olan üretim pratikleri, ağırlıklı olarak meselenin teknik yönü ile ilgiliymiş gibi görünse de, esasen özgür yazılımın politik yanıyla doğrudan ilişkilidir. Özgür yazılımların tamamına yakını İnternet üzerinde, kamuya açık platformlarda geliştirilmektedir. Sadece geliştirilen yazılım ve yazılımın kaynak kodları değil, aynı zamanda tartışma ve karar alma süreçleri de kamusal erişime açık olarak yürütülmektedir. Bir özgür yazılımın geliştirilmesine katkı veren, yani üretim sürecine katılan bireyler, e-posta listesi ya da forum benzeri iletişim ortamlarında yazılım geliştirme süreci ile ilgili fikir alışverişinde bulunurlar ve bu iletişim ortamlarının arşivleri kamusal erişime açık olarak İnternet ortamında saklanır. Böylelikle üretim sürecine katılmayan bireyler de yürütülen tartışmaları izleyebilir, zaman zaman da çeşitli şekillerde kendi görüşlerini ifade edebilirler. Tüm bu özellikleriyle özgür yazılım geliştirme sürecinin oldukça verimli işleyen bir kolektif üretim süreci olduğu söylenebilir.

Özgür yazılımın, burada kısa kısa ele almaya çalıştığımız bu özellikleri, bu hareketin 30 yılı aşkın süredir adım adım ilerleyen ve büyük başarılar kazanan bir hareket olmasını sağlamıştır. Etkileri sadece bilişim alanıyla sınırlı kalmamış, özgür yazılımın başarısından etkilenen başka birçok alanda benzeri özellikleri taşıyan örnekler ortaya çıkmıştır. En basit ve akla gelen ilk örneği, özgür yazılım geliştirme sürecine benzer bir üretim süreciyle kolektif bilgi birikiminin oluşturulduğu Wikipedia projesidir. Benzer şekilde sinema, müzik, edebiyat gibi alanlarda çeşitli yansımaları olmasının yanı sıra, bilişim sistemlerinde kullanılan çeşitli donanımların kolektif biçimde üretilmesini ve bu alandaki tekellerin ortadan kaldırılmasını amaçlayan hareketler de ortaya çıkmaya başlamıştır.

Altını çizmeye çalıştığımız şekilde, özgür yazılım meselesi bir “politik mesele” olmayıp sadece bir “teknik mesele” olsaydı, tahminimizce şimdiye kadar çoktan sonlanmış bir durumda olurdu ve hepimiz özel mülk yazılımlara muhtaç olurduk. Bilişim ve iletişim teknolojileri hayatımızın her alanına nüfuz ederken, birer bilişim ve iletişim tüketicisi ve üreticisi olarak bugün sahip olduğumuz bazı bireysel ve toplumsal özgürlüklerimizi de çoktan kaybetmiş, ya da tıpkı Gezi Direnişi’nde olduğu gibi bunları savunmaya çalışıyor olabilirdik. Panelimizin ana konusuyla özgür yazılımın birbiriyle ne kadar içli dışlı olduğunu anlamak için, özgür yazılımı anlatırken sıklıkla kullandığımız bazı anahtar sözcüklere bitirirken değinmekte fayda var: “Özgürlük”, “Paylaşmak”, “Dayanışma”, “Kamusallılk”, “Kolektif üretim”, “Eşit tüketim”. Gezi Direnişi’ne baktığımızda, aynı anahtar sözcüklerin orada da meselenin kalbinde olduğunu görebiliyoruz.

adilga

[1] http://laborcomm.org/

[2] http://ilef.ankara.edu.tr/

[3] http://laborcomm.org/cagri-metni-2014/

[4] İlgilenenler LKD Seminer Çalışma Grubu sitesindeki Seminer Notları sayfasında bulabilirler:

http://seminer.linux.org.tr/seminer-notlari/