Salı, Aralık 31, 2013

2014

İşte bir yıl daha sona eriyor. Her ne kadar dünyanın her yerinde sevimsiz olaylar olmuş, zaman zaman umutlar kırılmış olsa da yola hiç bozmadan devam etmek gerek. Kimilerinin dediği gibi gerçekten de oyunlar oynanıyor, kötü şeyler planlanıyor olsa da yarınların güzel olacağına inanan insanlar olduğu sürece kötü planlar başarılı olamaz.

2014 bir hedefi olan ve bunun için çalışan herkesin hedefine ulaştığı yıl olsun. Hepimizin minik başarıları birleşsin ve dünya daha güzel bir yer olsun.

Perşembe, Aralık 12, 2013

Ustalaşmak

Bir 11.12.13 yazısı yazayım dedim ama sanırım ben yazıyı bitirene kadar saat 12'yi geçecek. Neyse niyet önemli. Belki bu yılın son yazısı olur bu da.

Habire abuk subuk şeylerle uğraşan bir çocuktum. Hatırladığım en eski arkadaşım da benim gibi garip işlerle uğraşırdı. Ders aralarında elimizdeki elektronik devre şemalarını inceler, kapı zili, hırsız alarmı gibi hobi deneylerini nasıl geliştirebileceğimizi konuşurduk. Enteresan tüm devreler ve tabii bilgisayarlar en trend konularımızdı. Elbette ders dışı konulara orta birde merak salmanın İngilizce derslerini kaçırmak ve dolayısıyla da Pakistanlı öğretmenlerin girdiği matematik, fen derslerinden hiç bir şey anlamamak gibi bir benefiti oldu. Her tembel öğrenci gibi Sosyal bölümüne gidince elektronik bölümünde okuma hayalleri de suya düştü. Halbuki zeki sayılırdım ama sanırım dışarı böyle bir intiba verememişim :)

Orta birde bile zihnen çemberin dışında olmak madden ve manen acı vermiş olsa da sevdiğim işlerin peşini bırakmayıp çok erken yaşta programcılık öğrenmem en büyük şansım oldu. Aslında biraz zor öğrenirim ama kolay peşini bırakmam. Günlerce hiç uyumadan bilgisayar başında oturmuşluğum vardır. Tabii millet bu kadar azimle uzay mekiği bile yapardı ama ben sadece kendimi aşmanın mücadelesini veriyordum. Çünkü eğlenebilmenin benim için daha iyi bir yolu yoktu.

Neredeyse bir aydır daha önce hiç yaşamadığım şeyler tecrübe ediyorum. Hiç duymadığım şeyler öğreniyor, hiç görmediğim şeyler görüyorum. Bunlar belki çoğu kişi için sıradan şeylerdir. Ama benim için farklı bir anlamı daha var. Enteresan bir şey fark ettim. Bir konuda ustalaşmak için bunu yüzlerce, binlerce kere tekrar etmek gerekiyormuş. Üç beş dakikalık işler için bile günler günler çalışmak şartmış. Sıradan olmayı kabullenmemek gerekirmiş.

Lise bittikten sonra bir resim ustasına çıraklık etmeye başlamıştım. Her gün ödev verirdi. Şu vidayı 250 kere çiz. Şu tırnak makasını 100 kere çiz.... Bitmeyen ve hiç bitmeyen bir zulümdü benim için :) Ben bir gün boyunca uğraşıp perfect vida çizmeyi seviyordum ya da öyle olması gerektiğini düşünüyordum.

Diğer taraftan yine o yıllarda bine yakın ufak tefek program yazdım. Yüzlerce küçük program. Her programcı bilgisayar başında sabahlar ama genellikle müthiş şeyler yapmaya çalışırlar. Ben farklı olarak basit ama bir işe yarayan küçük programlar yaptım. Neden yaptığımı bilmiyorum. Sanırım resim hocamın bunda etkisi var.

Bugüne döndüğümüzde hayranlıkla takip ettiğim insanların başarı sırrının bu basit yönteme dayandığını görmek benim açımdan şaşırtıcıydı. Tabii insanlar "yapmayı sevdiğiniz işlerle uğraşın" derken boşa konuşmuyorlar. Çünkü sevmediğiniz bir iş üzerinde bu kadar çok çalışarak ve tekrar yaparak ustalaşmak mümkün değil. Resim konusunda devam edemedim ama programcılığa devam ettim. Tabii halen önümde çok uzun bir yol var ama doğru yöne gittiğimden eminim. En güzeli günümüzde çok yaygın olan olan "her şeyi bilir" psikolojik rahatsızlığına hiç kapılmadan sürekli öğrenci kalmak ve tekrar etmeye, denemeye devam etmek en güzeli. Bu sayede gelinmesi imkansız görünen noktalar bile bir adım yakınınıza kadar gelebilir.

Tabii her yazımda olduğu gibi deyinmeden geçmeyim. Açık kaynak geliştirme programcılık öğrenmenin en güzel yolu.

Pazar, Kasım 10, 2013

Günlük Tutmak

Bazen eski yazdığım şeyleri okuyorum. Hemen her seferinde şaşırıyorum nasıl bu kadar saçmalamışım diye. Hani insan çocuğunun büyüdüğünü farketmez ya aynen kendindeki değişimi de farketmiyor. Hep böyle düşündürdüm, hep böyle yapardım sanıyoruz. Okudukça görüyorum meğer öyle değilmiş. Tabii eski şeyler insanı hafiften utandırsa da aslında hoşuma gidiyor çünkü geçen vaktin boş geçmediğini görebiliyorum. Okuduğunuz bazı şeylere katılmıyorsunuz ama yazan sizsiniz. Garip bir his. Keşke daha çok şey yazabilseymişim. Şimdi okumak isteyeceğim neler neler düşünmüştüm kim bilir. Insanın belli bir noktadan istediği bir noktaya gelmesi hiç kolay bir iş değil. Yaptığınız her hata bir sonraki adımı daha düzgün atmanızı sağlıyor ve bunu sürekli yaşıyorsunuz. Kendi yazılarınızı okuyarak bu süreci tekrar tekrar yaşamak deneyimlerinizi pekiştirmesi açısından da güzel. Bu nedenlerle herkes günlük tutmalı bence. Tabii insanın ilk olarak şu utanma denen problemi çözmesi gerek. Sanırım açık kaynak çalışmak bu konuda da bayağı bir gelişme sağlıyor. Tabii karizmatik olmak çok zor iş çünkü bir kere cool oldun mu hep öyle olmak gerek. Ama her normal insan gibi arada fail de olabiliyorsan o kadar problem etmiyor insan. 

Cumartesi, Ekim 05, 2013

Yurt dışına açılma

Bugün E-Tohum Ankara toplantısına gittim. E-Tohum aynı e-tohum. Bence artık insanları bilinçlendirme, girişimciliğe dikkat çekme misyonunu tamamlamış. Söylenecek her şey söylenmiş yani. Bu toplantılar artık birşeyler öğrenmek yerine yeni insanlarla tanışmak ve kendimizi sektörün önde gelenlerine tanıtmak için güzel bir ortam. Olması gerektiği gibi e-tohum'un bu misyonu halen faal bir biçimde devam ediyor. Genellikle en popüler olanların başı sürekli kalabalık. İnsanlar her fırsatta birine kanca atıp birşeyler anlatmaya çalışıyor. Evet girişimciliğin böyle bir yönü var. Biraz kalabalığı yarıp, kendinizi gösterip, 30-40 saniye içinde dikkat çekmek durumundasınız. Kuzu gibi bir kenarda bekleyip, çayınızı yudumladığınız zaman bu sizin açınızdan bir fırsata dönüşmüyor doğal olarak. Diğer şehirlerde durum nasıl bilmiyorum bu toplantıda kalabalığın büyük çoğunluğu pasif kaldı malesef.

Tabii toplantının doğası gereği sıkıcı konuşmaların olduğu panellere katılıyorsunuz. Sıkıcı çünkü "woow" dedittirecek bir aksiyon yok. Kravatlı olanlar teşvik, toplum yararı, katma değer, vb konularından bahsediyor. Geriye kalanlar da girişimcileri motive edecek bir şeyler anlatmaya çalışıyorlar. Anlamadığım bir şekilde demotive edici -sıkıntılı- konular en az motive konuşmaları kadar ön plana çıkıyor. Belki biraz şikayet ederek rahatlıyoruz ama bunların e-tohum'un amacına hiç bir katkısı yok. Yeni bir fikir, bir gelişme, farklı her hangi birşey yok. Aynı isimler (artı Hasan Aslanoba tabii) ve aynı konuşmalar tıpkı 5 yıl öncesi gibi...

Halen istisnasız herkesin dilinden düşmeyen konu "Yurt Dışına açılmak". Ancak artık bu yurt dışına açılma işinin güzide girişimlerimiz ile olmayacağını kabul etmemiz gerek. Bu girişimler Türkiye'deki açık pazarları tespit ederek risk aldılar ve ödül olarak bir noktaya geldiler. Operasyonları Türkiye'de. Nasıl ki elin Avrupalısı gelip burada don gömlek satamazsa biz de gidip oralarda don gömlek satamayız. Bu tür işlerde ancak yurt dışında şirket (operasyon) satın alarak olur. Bu da tam olarak ihtiyacımız olan anlamda "Yurt dışına açılmak" anlamına gelmiyor. Olması gereken Türkiye'de üretilen mal ve hizmetlerin üzerine iyi kar konarak yurt dışına satılması. Oyun üreten şirketlerimiz bunu bir düzeye kadar yapıyorlar. Büyük başarı bizim için. Ancak bunu daha da geliştirmek gerekir.

Bir de ancak üst düzey teknoloji ve buluşlar ile yurt dışına açılmayı düşünen kitle var. Yani düşünün ABD bir uçak teknolojisi geliştirecek, kendi kullanmadan gelip bunu Türkiye'ye satacak. Böyle bir şey mümkün mü? Yüksek teknoloji yurt dışına açılmak için değil kendi ülkemizin teknolojik altyapısını geliştirmek için önemli. Şöyle acayip geliyoruz, gümbür gümbür ortalığı titreteceğiz, herkesin ağzı açık kalacak şeklinde konuşmalar var ama... bilmiyorum henüz bir görüntü yok.

Tabii bu bilmediğimiz ama çok yakında ses getirecek mühendislik mucizelerinin girişimcilerimiz üzerinde yarattığı baskı muazzam. Nasıl oldu anlamadım ama yavaş yavaş insanlarda başarılı girişim yapabilmek için yurt dışında okumuş olmak, üst düzey mühendislik bilmek ya da böyle atla deve bir adam olmak gibi bir imaj oluşuyor. Sanırım yatırımcı klüplerinin tercihleri ve "başarılı girişim" diye vitrine konan modellerden kaynaklanıyor bu.

Sanmayın ki çok dev işlerle açılacağız. Valla işte kim ne derse desin SambaPOS yurt dışına açıldı.  Binlerce kullanıcısı var. Transifex'de 19 dil açık. "Ama bedava" diyeceksiniz. İşte böyle düşünmeyelim. Evet doğru bedava ancak Google da bedava arama motoru ile açıldı, hepsi bedava hizmetler ile yayıldılar. Sonradan ücretli birşeylerler ortaya koyup para kazandılar. Mesele Edirneden, Kars'tan dışarısını bir şekilde görmek. Arapça yazıcı çıktısı vermeye uğraşıp, programı Kanada vergi sistemine uyarlamak. Yani tecrübe kazanmak. İnsanlara bir şekilde ulaşmadan Meksika vergi sistemi nasıl işliyor, ABD'de kredi kartı ödemesi nasıl alınıyor, İtalya'da Fiscal Printer kullanma mecburiyeti var mı nasıl bilebilirsiniz?

Üstelik SambaPOS bir mühendislik mucizesi program da değil. Kaynak kodları açık isteyen açıp görebiliyor. Gayet sıradan, biraz tecrübesi olan herkesin yapabileceği bir program. Ama tabii hep söylüyorum. İşe yaramaz bir programı bedava da olsa Restorancıya kullandıramazsınız. İşe yarıyor. Düzgün çalışıyor. Tüm cazibesi bu. Zaten zor olan da bunu yapmak. Atıyorum adam biyomekanik mikroengelleyici yapmış. Yüksek IQ ürünü ama kullanıcısı yok. Tamam yapan başımızın üzerinde ama işe yaramıyorsa sırf teknolojisi yüksek diye değerli kabul edemeyiz ki? Bunu söyleyince x kesimi ile hemen kavgaya tutuşuruz, lokanta programcısı, alaylı falan deyip üste çıkarlar. (Ya bu lokanta programcısı muhabbeti de ne koymuş ha, hep aklıma geliyor.) Ama gerçek bu. Kullanıcısı olmayan bir ürün bir işe yaramaz. O kadar büyük icatsa kapı kapı gezeceksin, insanlara kullandıracaksın. Beni kimse anlamıyor triplerine girmeyeceksin. Her neyse.. Amacım eleştirmek değil. Amacım genç arkadaşlarımıza bu fikre kapılmamalarını önermek. Bizim kültürümüzün çok önemli bir özelliğidir basit şeyleri kompleks, içinden çıkılmaz ve ulaşılamaz bir hale getirmek. Bu havanın halen devam ettiğini farkettiğim için yazma ihtiyacı hissettim.

Eğer kariyer hedefiniz varsa evet mecbursunuz üst düzey olmanız gerekiyor. Ancak girişimcilik hayalleriniz varsa standart programcılık becerileri ile de birşeyler yapabilirsiniz. Daha doğru söylemek gerekirse sahip olmanız gereken en önemli özellik programcılık bilgisi değil. Bunun bir sonu yok zaten. Önemli olan her ne olursa olsun bir şeyler yapmak ve insanlara kullandırabilmek. Her hangi bir şey. Yeni icat olmasına da gerek yok. İnsanların mevcut kullandığı her hangi bir şeye x bir artı özellik eklesin yeter. Şu saate kadar internete yaptığım hangi programı koyduysam istisnasız sattım. Evet istisnasız sattım. Kimsenin satmaz dediği şeyleri bile sattım. Açık kaynak inadımız olmasa SambaPOS'u da satarız. Çünkü yaptığım şeyin birilerinin işine yarayacağını biliyorum. Sadece o kişilere ulaşmak gerek. Biraz birilerine ulaşsın, tutsun.. isterseniz üst düzey insanları işe alırsınız zaten. Hatta isterseniz baştan yazdırırsınız. Facebook ilk çıktığı günkü gibi mi? Ne hale geldi.

Facebook demişken gerektiği zamanlarda aklınıza hep şu gelsin. Facebook ilk çıktığında o zamanın teknoloji devi Google'dı. Dünyanın en yüksek IQ'larına sahip, en üst düzey mühendisler onların elindeydi. Facebook'un yükselişini durdurabilmek için her şeyi yaptılar ama olmadı. Facebook çok basit anlaşılabilir bir şeyi başardı aslında. Eski arkadaşlarımın isimlerini google'da yazardım çıkmazdı, facebook bunu başardı. Beni izini kaybettiğimi sandığım insanlara ulaştırdı. Şimdi belki fonksiyonu biraz değişti ama çıkış noktası budur. Bunu başaramadığınız sürece Facebook'un yüz katı yüksek mühendislik ürünü geliştirseniz de engelleyemezsiniz. Evet halen Facebook'u ve hatta Google'ı bile yerinden edecek bir ürün yapılabilir. İnsanlar bir anda nasıl myspace'i bırakıp facebook'a geçtiyse facebook'u bırakıp başka bir ürüne geçebilirler. Bu ne zaman yapılır bilmiyorum ancak şundan %100 eminim. Eğer olursa bu ürün uzay teknolojisine sahip birşey olmayacak. Facebook PHP ile yapıldı. O zamanın güncel teknolojisi neyse o ürün de onunla yapılacak. Emre demişti dersiniz :)

Neyse ben de çok oyalandım yazı falan. Issue'ler birikmiştir şimdi. O zaman haydi iş başına...

Pazar, Haziran 09, 2013

Açık Kaynak Siyaset

Aslında siyaseti pek sevmem. Pek de beceremem zaten. Sebebi siyasi konulardan korkmam değil. Sebebi siyasetin sıkıcı olması. Tıpkı demode yöntemlerde demode programlar yazan demode yazılım şirketleri gibi siyaset de bir hayli demode. Taraftarlık demode zaten. Her şey ne kadar hızlı değişiyor, gelişiyor. İnsan değişip gelişemez mi? Geçmişte bir tarafı tuttuğun için hep aynı yerde durmak zorunda değilsin. Zaten artık Newton'un siyahlar ve beyazlardan oluşan dünyasında değil Einstein'ın gri tonlarından oluşan dünyasında yaşıyoruz. Taraftarlık pek de mümkün değil artık.

SambaPOS projesine başladığımdan beri konuşmalarımız "açık kaynak nedir" konusuna geldiği zaman hep dünyadaki değişimden ve bu değişimi göremeyişimizden bahsettim. İnsanların gelecekteki düşünce şekli, yaşam tarzı ve ihtiyaçları daha farklı şekillenecek dedim. "Üretim ve sunum yöntemleri bu yeni düzene uyumlu hale getirilmeli" diye savundum.

Sadece yazılımlar değil sağlık, restorancılık, eğitim, sanat ve son günlerde gördüğümüz gibi devlet yönetimi bile açık kaynak olmak zorunda. Açık kaynak bir felsefe. Bu felsefeye sahip programcı en kaliteli programı yazmaya çalışır, dandik programlara license-bomb yerleştirip kullanıcısını tufaya getirmez, bu felsefeye sahip restorancı kendi yemeyeceği yemeği müşterisine yedirmez, bu felsefeye sahip bir doktor üç kuruş için insanların aklını almaz, olmayan hastalıklardan şüphelenmez, bu felsefeye sahip eğitimci eğitimsiz insanların kafasını hiç işe yaramayacak bilgilerle doldurmaz, bu felsefeye sahip siyasetçi kameralar önünde konuşup kapalı kapılar arkasında tam tersini yapmaz.

Çünkü neden? Artık internet var. İnsanlar bireysel olarak eskisine göre çok daha büyük bir güce sahip. Kendi kendini eğitebiliyor, eğlendirebiliyor, küçük problemlerini başka insanlarla iletişim kurarak çözebiliyor, beğenmediği restorana eksi not verebiliyor veya hakkını arayabiliyor. Hele bir de bir araya geldiler mi program da yazabiliyorlar, ülkelerin yaşamlarını bile değiştirebiliyorlar.

Bu koşullar altında "üç kağıda" dayalı ekonomi, ticaret, din ve siyaset artık yürütülemez. Şu an yürüten varsa da artık son nesildir. Az zaman içinde yok olmaya mahkumdur.

Gelecekte modern insanın talepleri şu tür şeyler olacaktır.

Ne yediğimi bilmeliyim.
Gerektiğinde sağlığımı izleyebilmeli, doğru bilgi alabilmeliyim.
Kendi becerilerim doğrultusunda eğitim alabilmeliyim.
İstediğim dine mensup olup, inandığım şekilde ibadet edebilmeliyim.
İstediğim zaman hangi bankaya ne kadar borcum var, finansal durumum nedir şak diye görebilmeliyim.

Bu nedenle açık kaynak felsefesine sahip olmak zorundayız. Üretim süreçlerimiz açık, şeffaf ve izlenebilir olmak zorunda.


Tabii ülkemiz bu sürece nasıl geldi, nasıl gidiyor, nereye gidecek bunu bilmek zor. Kimilerimiz kendi hayat görüşüne göre olup biteni doğru ya da yanlış olarak değerlendirebilir. Fikirler yürütebilir, Ama mantık yine aynı. Doğru diyenin de yanlış diyenin de eğer niyeti başkaysa, samimi değilse, başka sebeplerle başka şeyler konuşuyorsa yani açık kaynak felsefesi taşımıyorsa yolu yol değildir. Artık bunları bir kenara koymak gerek. 

Pazartesi, Nisan 08, 2013

Özgür Yazılım ve Linux Günleri izlenimlerim

Öncelikle bu etkinlikte emeği geçen herkesi kutlamak gerek. Başarılı bir organzasyondu. Umarım bu işe emek verenler açısından olumlu sonuçlar aldıkları bir çalışma olmuştur.

Tabiiki ülkemizde özgür yazılım ile ilgili kişilerin özgür yazılım ile bağlantısı ağırlıkla ilgili ürünlerin satışı ve kullandırılması ile sınırlı olunca etkinliğin teması NoSql oldu ve sunumlar da genellikle bu ürünlerin kullanımı ve tanıtımı ile ilgiliydi.

Ancak Özgür Yazılım günleri gibi etkinliklerin Açık Kaynak topluluklarına faydalı olabilmesi için halen alınması gereken çok yol var.

Öncelikle dikkatimi çeken herkesin bir "community kurma" derdi olması. Problemimiz topluluk azlığı değil. Problemimiz varolan toplulukların aktivitesinin zayıf olması. Öncelikle zaten var olan topluluklara katkı sağlamak gerek. Topluluklar yoktan varedilmezler. Bölünerek çoğalırlar.

Ben her fırsatta Açık Kaynak / Özgür Yazılım gibi bir ayrım yapılmasının bizim için gereksiz olduğunu söylüyorum ama görülen o ki "Özgürlük Savunucuları" zihniyeti daha uzun süre devam edecek. GPL lisanslı ürün üreten bir kişi olarak en büyük sorunumuzun Açık kaynağın anlaşılamama ve anlatılamama problemi olduğunu düşünüyorum. Bu problem camiada en çok göz önünde olanlar için bile geçerli. Bu problemin de en büyük nedeni de savunduğumuz şeylerin tecrübe etmediğimiz, gerçekten ne olduğunu bilmediğimiz şeyler olması. Bu nedenle konuları işimize geldiği gibi anlamak ve anlatmak gibi bir durum var.

Önümüzdeki yıllarda Özgür Yazılım etkinlerine katılan kişilerin şu konu başlıklarında konuşmuş, bilgilenmiş, tartışmış olmalarını umuyorum.

1. Açık kaynağın amacı kod publish etmek değildir. Açık kaynağın amacı development sürecini publish etmek olmalıdır.
2. Açık kaynak yazılımlar ürün değildir. Bunlar altyapı projeleridir. Açık kaynak proje geliştirenlerin bu altyapı üzerinde geliştirilecek ve satılacak ürünlerle ilgili bir planı muhakkak olmalıdır.
3. Programcıların sosyalleştiği, eğlendiği, yeni şeyler öğrendiği ortamlar açık kaynak projelerdir. Git bilmeyen programcı diğer programcılarla iletişim kuramaz. Yalnızlığa mahkumdur.

Tabii bu fikirleri ortaya koymamın nedeni eleştirmek değil. Bunları kendi adıma gelecekte hangi alanlarda aktif olmam gerektiğini ortaya koyabilmek için yazıyorum. Sonuçta bu problemlerden en çok etkilenen de çözecek olan da bizleriz.

Perşembe, Şubat 07, 2013

Özgür?


Açık kaynak konusuda önemli katkıları olan değerli Hocalarımızdan Necdet Yücel'in blogunda Yakındoğu Üniversitesi Kütüphanesi Sistemi ile ilgili yazıyı okuyordum. Burada "Özgür Yazılım" ve "Sahipli Yazılım" ayrımı dikkatimi çekti. Açık kaynak bir proje geliştiriyor olmam nedeniye bir süredir ciddi ciddi neyin ne olduğu üzerine kafa yoruyorum. Kavramları yerli yerine oturtmaya çalıştıkça yeni sorular doğuyor. Sahipli yazılımlar, sahipsiz yazılımlar, kurumlar, destek olanlar, yöneticiler, özgürlük falan derken ipin ucunu bir noktada kaçırıyorum.

Bu yazıyı yazarken bir taraftan da 500 Startups networkünün canlı yayını takip ediyorum. Sayısız yeni proje demosu izledim ve bir yaratıcı fikir bombardımanına maruz kaldım. Neler var neler. İzlediğim projelerin tamamı internet projeleri. Muhtemelen bu projelerin ezici çoğunluğu Linux & Android temelli sistemler üzerinde çalışıyor ve muhtemelen yine büyük çoğunluğu açık kaynak diller ile geliştirilmişler. Yine sayısız açık kaynak altyapı çözümü , framework vesair kullanıldığı da malum...

Geleceğin dünyası açık kaynak altyapılar üzerinde yükselirken biz konunun neresindeyiz?

Bizde bu açık kaynak konuları ilk konuşulmaya başlandığında birileri "açık kaynak denmez özgür yazılım denir" dediler. Tartışıldı, tartışıldı ve bir kesim için açık kaynak ağza bile alınmaması gereken birşey oldu. Hem de daha memleketimizde yazılmış daha bir tane bile açık kaynak proje olmadığı halde.

Yıl 2013 halen "açık kaynağa açık kaynak" diyemiyoruz. Mesela rekabet kuruluna şikayet edilmişiz, onun heyecanlı ile elim ayağım titreyerek bir yazı yazmışım ve biri gelmiş yazının altına "ücretsiz yazılım ile özgür yazılım birbirine karışmış" diye yorum yapmış. Ooo yeah!! Ya kimin umurunda özgür yazılım? Ben rekabet kurulundaki raportöre "biz özgür yazılımız " diyorum. "Hiç farketmez" diyor :)

İşin başlarında developer camiası projemize "hıı iyiymiş" tepkisi vermiş olsa da SambaPOS bir Windows yazılımı olduğu için tek tük eleştiri de aldı. Tabii eleştirenler "Restorancılık Sektöründe herkes Linux kullanırken niye Windows için POS yazdınız" diye eleştirmiyor. "Windows Özgür Yazılım değil" diye eleştiriyor. Ooof of.

Gerek hocalarımızın, gerekse de bu konulara yıllar boyu emek vermiş dostlarımızın yaptığı büyük katkıları gözardı edemeyiz. Ancak ülkemizde konunun ne noktaya gelebildiği ortada.

End user açısından "Dandik olur, kullanamam" düşüncesi.
Developer açısından da "Kullanırım ama yazmam" düşüncesi.
İşte onca çabaya rağmen Türkiye'de geldiğimiz nokta budur.

İsteyen istediği gibi itiraz edebilir. İki yıldır aktif olarak çalışıyoruz ve benim gördüğüm şey budur. Son kullanıcı için açık kaynak yazılım geliştirip farklı şeyler tecrübe eden varsa gelsin anlatsın.

Bir taraftan restorancılık sektöründe ücretsiz program ile girmek hiç de akıllıca değil. Ortalama bir restorancı bir günlük cirosuna istediği sistemi kurduracak imkana sahip. Bir restoranda kullanılabilmek için tek bir seçeneğiniz var. Diğer programlardan daha iyi olacaksınız. SambaPOS'un yayılmaya devam etmesinin ve 15 dile çevrilmiş bir uluslar arası proje haline gelmiş olmasının nedeni budur.

Peki bu durumda Açık Kaynak konusundaki ısrarımız nedendir?

Çünkü SambaPOS gibi altyapı olarak kullanılabilecek açık kaynak projelerin sayısının artmasının ülkemiz yazılım sektörü açısından şart olduğuna inanıyoruz. Devletimiz yüzbin yüzbin dağıtıyor ama bizler uluslar arası projeler geliştirebilmek için en güzel yolun açık kaynak projeler geliştirmek olduğunu düşünüyoruz. Katma değeri yüksek projelerin Edirne'nin dışına çıkabilmesi için ihtiyaç duyulan yolu açık kaynak projelerin açabileceğini düşünüyoruz. Açık kaynak projelerin çevresinde gelişen kullanıcı topluluklarının gücünün doğru kullanılması durumunda milyonlarca dolarlık bütçelerden bile güçlü olabileceğini düşünüyoruz. Bilgi saklayarak yer tutma zihniyetinin yokolmasını istiyoruz. Her programcı her tür bilgiye sonuna kadar ulaşabilsin, daha mezun olmadan bile pazarda aktif olarak kullanılan projelere girip kendini yetiştirebilsin istiyoruz. Yetenekli gençlerimizin dev şirketlerin yazılım departmanlarında çürüyüp gitmek yerine kendilerini uluslar arası alanda gösterebilecekleri işlerde çalışma fırsatlarına sahip olabilmelerini istiyoruz. Artık ülkemizde dandik bir program yazıp reklam ve pazarlama yöntemleri ile kullanıcıları söğüşleyerek para kazanma zihniyetinin sona ermesini istiyoruz. Yeni yazılım mühendisliği tekniklerinin hızla benimsetilmesini ve yaygınlaştırılmasını istiyoruz.

Bunların tümünün Açık Kaynak ile yapılabileceğini ve bu çalışmaların çok daha büyük ve yüksek gelirli projelerin önünü açacağını düşünüyoruz.

Ülkemizde SambaPOS gibi daha yüzlerce proje başlatılması gerek. Ama özgür, ama değil ya da başka bir türlü. Sahipli yazılım, Özgür yazılım gibi kavramlar belli bir düşünce yapısını temsil eden şeyler. Özgür Yazılım dediğimiz şeyin ilgi çeken kısmı Sahipsiz olması değil.. Düşük maliyet de değil. Kimsenin maliyeti falan taktığı yok. İşte Fatih projesinde görüyoruz. Kaz gelecek yerden tavuk esirgenmiyor. 2013 dünyasında sadece "özgürlük, maliyet" gibi argümanlarla rekabet edemezsiniz. Rekabet edecekseniz tak diye kurulacak, şak diye açılacak, tıkır tıkır çalışacak. Eğer bu açıdan iyiyseniz düşük maliyet ve özgürlük anlamlıdır.

Bu nedenle Açık Kaynağı bir karşı devrim hareketi olarak değil sadece mevcut modele alternatif bir iş modeli olarak düşünmemiz gerek. Evet gayet ticari ve çok para kazanma amacı güderek konuşuyorum. Açık kaynak  projeler yüce gönülllü, hayırsever insanların çalıştığı projeler değil. Özgür mözgür, işte gelmiş geçmiş en başarılı açık kaynak proje olarak gösterilen Android gayet güzel milyon milyon para basıyor. Ticari hedefler olmadan hiç bir şekilde başarıya ulaşmak mümkün değil. Ancak bunu insanları aldatarak, hiç bir şekilde haklarını koruyamayacakları sözleşmeler imzalatarak yapmak zorunda değiliz. Bunu faydalı şeyler üreterek yapmak istiyoruz ve farklı yaptığımız şey bu.

Bu hedeflerimize doğrultusunda SambaPOS projesini bir vakıf projesine dönüştüreceğiz ve bu şekilde kurumsal bir kimlik kazanacağız. Sonrasında da tüm enerjimizi SambaPOS gibi daha çok sayıda projeler geliştirilmesine ön ayak olmak için kullanacağız. Evet bu işler için Vakıf kurmak kulağa acayip geliyor çünkü bizde "Kar Amacı Güden Vakıf " diye bir kültür yok. Her vakıf faaliyetlerini sürdürebilmek için tıpkı şirketler gibi "Kar Amacı Güder". Normal şirketlerden farkı "Karları Ortaklara Dağıtmaz. Gelirlerini devlet kurumlarının denetiminde kuruluş amacı doğrultusunda kullanır." Bu nedenle hemen her büyük açık kaynak projenin arkasında bir Vakıf oluşumu var. Mozilla, Eclipse, Linux Vakıfları en bilinenleri ama bu tür amaçlarla kurulmuş yüzlerce vakıf bulunmakta.

Elbette hayata geçirmek buraya yazmak gibi kolay değil. Daha düşünülmesi gereken çok nokta var ve bu çerçevede de her türlü fikre ve desteğe ihtiyacımız var. Bu yapılanma sürecinde bir danışma ekibi oluşturmak amacıyla "Açık Yazılım Platformu" adı altında bir platform oluşturuyoruz. Çalışmalarımızı takip etmek ve katkıda bulunmak isteyenler benimle emre@sambapos.com adresinden iletişime geçebilirler.

Çarşamba, Ocak 16, 2013

Programcı Tıkanması

İki satır kod bile yazamayan durumdaki programcıyı ifade etmektedir. Beyin durması, mala bağlamak ya da AGD* durumu gibi varyasyonları olsa da benim içlerinde en çok sevdiğim "Programcı Tıkanması".
(* Ağzı Gözü Dağılmak)

Tıkanmış bir programcı mayın tarlası oyununda harikalar yaratabilir ya da saatlerce sıkılmadan youtube videosu izleyebilir ama kodun başına oturduğu zaman IQ iki yaş düzeyine iner. Normalde şakır şakır yapılan işler gözde büyür. İki saatte 10 satır kod yazarsın onu da üç gün önce farkettiğin bir problem yüzünden yazmaman gerektiğini hatırlayıp rollback yaparsın.

Bu tıkanma durumu birkaç saat sürebileceği gibi günler hatta aylar bile sürebilir. Tıkanmanın nedenine göre hayata bile küstürebilir :) Bu durumu çözebilmenin yolu önce sebebi keşfetmektir. Bunu türlü nedenleri olabilir.

  • Genel can Sıkıntısı: Bu sık sık başa gelebilecek bir durum. Çalışılan ortam genelde en büyük etken.
  • Sevilmeyen / Monoton bir işle uğraşıyor olmak: Sevmesek de hep bizi bulur bu işler ama bir taraftan bu tür işlerle uğraşıyor olmak mimari bir probleme de işaret ediyor olabilir. Dikkat etmek lazım.
  • Sebebi belli olmayan bir Bug: İşte benim en sevmediğim tür. Bir hata var belli ama reproduce edebilen yok. Bir nedenle hata raporu da yeterince fikir vermiyor. Bu hata çözülmeden iki satır kod daha yazabilmek mümkün değil. 
  • Birşeylerin Yanlış Gittiği Hissi: Sanırım bu en sevimsizi. Yaptığınız iş belli ve güzel ilerliyor gibi görünüyor ama içten içe biryerlerde hata yapıldığını hissediyorsunuz. Görünürde bir problem yok ama iş production'a çıktığında bayağı bir sorun açacak gibi duruyor.
  • Aşırı kompleks bir yapı tasarlayıp ipin ucunu kaçırmak: Burada olan şey genellikle aşırı soyutlama nedeniyle düşünce zincirini bir noktada koparmak. Tasarladığınız case'i bir şekilde kapatamamak. Sanırım tıkanıklık içinden çıkması en zor olan. Aylarca sürme potansiyeli olan şey.
Programcı Tıkanması probleminin en iyi çözümü bu noktaya yaklaşıldığını erkenden sezip işi hiç bu noktaya getirmemektir ama eğer başınıza gelirse yapılabilecek şeyler şunlar.
  • Biraz uzak kalmak, geri düşünceye atmak. Aslında bambaşka işlerle uğraşıyor olsanız da beyin background'da problemi çözmekle uğraşıyor olacak. İşe geri döndüğünüzde şakır şakır kod yazmaya başlayabilirsiniz.
  • Sıkıcı işleri otomatize etmek / Refactoring: Bu da aslında sıkıcı bir iştir ama asıl sıkıcı işle uğraşmak yerine daha etkin bir çözüm üretmek gelecekte bu işlerle bir daha uğraşmamak anlamına gelir. Bir de eğer sorun tasarımsal bir problemse bunu da acilen refactor etmek iyi bir fikir olabilir.
  • Sebepsiz Buglar: Eğer bir bug reproduce edilemiyorsa genellikle sorun ya multi thread ya da multi user kullanımında ortaya çıkar. En güzeli ne yapıp edip bu sorunu çözmek. Bu acayip bir rahatlama hissi verir. 
  • Kötü hisler: Muhtemelen TDD yapmıyorsunuz. Bu işin ilacı emin olmadığınız noktalar için birim testleri yazmak.  Bu iki şekilde işi kolaylaştırır. Hem kodu test edilebilir hale getirmek kodu kontrolümüz altına almamıza neden olur hem de programın mevcut çalışmasını bozacak bir hata yaparsak anında farkederiz. 
  • Geri adım atmak: Bazen kodu geliştireceğimizi düşünerek başlarız ama sonu olmayan bir yola gireriz. Zamanında geri adım atmayı bilmek işi büyük sorun haline getirmeyi önler. Etkin bir şekilde versiyon kontol sistemi (VCS) kullanmak gerekiyor ki gerektiğinde belli bir zaman diliminde yapılmış işleri inceleyebilin ya da istediğiniz bir noktaya geri dönebilin. Ayrıca DVCS sistemleri bize bu tür işlere başlamadan önce projeyi ayrı bir dala ayırıp tatmin olana kadar ayrı bir yerde geliştirmeye devam etme şansı verir. GIT, Mercurial gibi sistemleri iyi incelemek gerek. 
Bazen de hiçbir sebep yokken kod yazmak istemeyeceğiniz bir döneme girebilirsiniz. Kod yazmaya her oturduğunuzda uyku basması, çay istemek, maiileri kontrol etmek gibi şeyler oluyorsa bunun nedeni genelde aşırı çalışmadır ve biraz dinlenmek gerekiyor olabilir. Burada kendinizi kodu devam ettirmeye zorlamak yerine biraz gevşek davranmak iyi bir çözüm olabilir. Biraz düşünürseniz kod yazma dışında yapmanız gereken işler muhakkak bulursunuz. Mesela blog'unuza yazı yazabilirsiniz ;)

Cuma, Ocak 11, 2013

Yeni başlayanlar için Açık Kaynak projelere katkıda bulunmanın yolları

SambaPOS projesini geliştirmeye başladığımdan beri bana en çok sorulan soru "Nasıl para kazanıyorsunuz?" olmuştur. Bu soru hiç bitmeyecek zannediyordum. Artık ne kadar çok anlattıysam giderek daha çok kişi açık kaynak projelerde yer almak istediğini söylüyor. Gerçekten de bu projeleri ilgiyle takip ediyor ve bir şekilde içlerinde yer almak istiyoruz ama malesef yine çok fazla sayıda kişi bu tür projeler içinde yer alamayacağını da söylüyor. Genelde sebepler şunlar.
  • Programlama bilgim yeterli olur mu bilmiyorum.
  • Hiç vaktim yok.
  • İyi bir proje bulamıyorum. 
Öncelikle Programlama bilgisinin yeterli olmaması konusundaki düşüncelerin açık kaynak projelerin katılımcı bulmaktaki en büyük problemi olduğunu söylemeliyim. Genellikle açık kaynak projeler yürüten kişilerin deha programcılar olduğu gibi bir izlenim var. Bu kimi projeler için çok doğru ancak hemen her projede yapılması gereken işlerin büyük çoğunluğu herkesin yapabileceği türde işlerdir. Evet ilk başta yaptığınız işler dünyayı yerinden oynatacak işler olmayacaktır ama topluluğun arasına karışmak bu yolda atılması gereken ilk adımdır.

Belli bir teknolojiyi ya da herhangi bir işin nasıl yapıldığını öğrenmek için bir açık kaynak projeye katılmak müthiş güzel bir fikir. Ancak çoğunlukla açık kaynak projelerde kodun kendisi dışında pek fazla öğretici dökümantasyon bulunmaz. Yani okuyarak öğrenmek değil yaparak (bozarak) öğrenmek isteyenler için güzel ortamlardır. Örneğin WPF öğrenmek istiyorsanız hiç kimse oturup size WPF anlatmaz ama bir iş parçasını üstlenip takıldığınız noktaları danışırsanız birsürü şey öğrenirsiniz.

Bu nedenle bir şekilde bu projelerin içine sızmak gerek. Bunun için neler yapılabilir.

Öncelikle projeyi takibe almak gerek. Her projenin muhakkak bir blogu, bir forumu, bir mail grubu ya da topluluğun temek olarak iletişim kurduğu bir yeri vardır. Buraları bir süre takibe alın. Öncelikle neler olup bittiğini bir anlamak lazım.

Her projede kullanıcı kesim programcı kesime yaşadıkları hataları ya da istedikleri özellikleri iletirler. Projenin bu işler için nasıl bir yöntem kullandığını anladıktan sonra bir süre için ilginizi çeken istekleri ya da hataları takibe alın.

Bu noktada şunu belirtmem gerek. Her projenin en önemli altyapısı kullanılan versiyon kontrol sistemidir. İdeal bir projede gönderilen her bir kod parçası bir işle ilişkilendirilirler. Yani x işinin yapılması konusundaki bir "issue" o işi yapan kod parçası ile "commit" ilişkilidir. Eğer ilgilendiğiniz işle ilgili Commit'i incelerseniz satır satır o işi yapmak için ne kodlar yazılmış olduğunu görebilirsiniz.

Bu konularla ilgili projenin nasıl yürüdüğünü anlamadığınız noktalarda gönül rahatlığı ile topluluk ile iletişim kurabilirsiniz. DVCS nedir? diye sorarsanız muhtemelen bir vikipedia linki dışında bir cevap gelmez ama spesifik konularla ilgili güzel cevaplar muhakkak gelir.

Projeye girişin en güzel yollarından birisi gelen hataların nedeninin tespit edilmesine yardımcı olmaktır. Kullanıcılar genellikle yaşadıkları hataları düzgün ifade edemezler. Kullanıcı ile iletişim kurarak ve kaynak kodlardan neyin yanlış olabileceğini takip etmek ve problemin nedenini ortaya çıkarmak en saygın işlerden biridir.

Eğer hatayı düzeltebiliyorsanız düzeltin. Her projede programlamaya dün başlamış kişilerin bile düzeltebileceği tarzda problemler vardır. Bunu yapmak için projenin mimarisinin ne olduğunu bilmek gerekmez. Ancak bu noktada mesela yaptığınız değişikliği nasıl gönderebileceğinizi bilmiyorsanız yine gönül rahatlığı ile topluluk ile iletişimde bulunabilirsiniz. Normal şartlarda kimse size nasıl commit yapılacağını öğretmez ama böyle bir durumda otomatikman işin nasıl yapıldığını öğrenirsiniz.

Yani genel anlamda topluluktan birşeyler öğrenmek için değil de başladığınız bir işi tamamlamak için yardım isterseniz beklediğinizden çok daha fazlasınız alırsınız. Neyin nasıl yapılacağını öğrenmenin en güzel yolu bu.

Projenin beta testleri üzerinde kullanım testleri yapmak ve programcı gözüyle karşılaştığınız problemleri bildirmek yine iyi başlangıç işlerinden biridir.

Proje üzerinde performans testleri ya da memory leak testleri yapabilir ve karşılaştığınız problemleri bildirebilirsiniz. Bunlar da neyin ne iş yaptığına dair güzel fikirler verirler.

Birim testleri projelerin hatalarını gidermek için kullanılan güzel araçlardan biridir. Çoğu açık kaynak projenin kaynak sıkıntıları nedeniyle Pure TDD yapmak gibi bir şansı yok ama kritik noktaları kontrol altına almak için çeşitli testler yazarak projeye katkıda bulunabilirsiniz.

Kod yazmak dışında da kullanıcıların sorularına cevap vermek, küçük dökümanlar yazmak, websitesinin geliştirilmesine katkıda bulunmak ya da sadece proje ile ilgili düşüncelerinizi paylaşmak bile yine güzel katkılar olabilir. Ancak düşünce paylaşmadan önce en azından konuyla ilgili yeterli fikriniz olduğundan emin olun.

Her açık kaynak projenin temel öğesi proje etrafında gelişen insan topluluğudur. Genel anlamda bu topluluğun büyümesine ve gelişmesine faydası olabilecek her tür katkı sizi topluluğun vazgeçilmez bir parçası yapacaktır. Hiç bir açık kaynak proje ağır sorumluluklar almayı ya da günler harcamayı gerektirmez. 10dk. bile ayırabilecek olsanız muhakkak çorbaya ekebileceğiniz bir tuz taneniz vardır.

Tabii bunları genel anlamda yazıyorum. Söylediklerimin birçoğu SambaPOS projesi için de geçerli ancak bizim bir taraftan da Türkiye'de açık kaynağı tanıtmak ve sevdirmek gibi bir amacımız da olduğu için bize her konuda ulaşabilirsiniz.

Salı, Ocak 01, 2013

Plans for 2013

We are in the first few minutes of 2013 and I wish a happy new year to everyone.

As lots of you know we are developing a Restaurant POS application called SambaPOS. We release it as Open Source Software and Restaurants can download & install it for free.

2012 was a great year for SambaPOS project. Thanks to everyone who helped us on creating SambaPOS and who shared their SambaPOS installation photos on our Facebook Page.

We stared SambaPOS development in 2011. In the beginning of 2012 it was stable enough for production use and we released latest stable release in August 2012. In 5 months stable release downloaded more than 7200 times. It supports 16 languages and have installations in more than 50 countries. Our first users are using SambaPOS for more than a year and they created about 50.000 ~ 100.000 tickets. We proud of it because setting up a POS system for a Restaurant is not an easy task like installing any other free application. We worked hard to be able to create a simple installation & configuration procedure.

During V2 development a lot of people suggested great ideas for future releases. We listened them carefully and to be able to create a better business infrastructure for restaurants we stared V3 version development.

Our future objective can be defined with a single word. Integration.

Today I've read a great article from Dave McClure about the incoming tech revaluation in Food industry. http://500hats.com/why-menus-suck-food-tech-revolution. The abstract asks a good question. "what the hell we waiting for?"

During last year lots of great solutions and online services released for food businesses but all of them have the same problem. They work individually. For the real benefit these services should integrate seamlessly in the business process. Restaurant managers should be able to integrate & automate these services as their business needs. Additionally the system should generate meaningful reports from the analysis of data generated by all of these services. A solution for this infrastructure problem will trigger the tech revolution for the food business.

Sambapos is flexible, programmable and Open Source. For this reason we believe SambaPOS is the missing piece and during 2013 we'll work hard to make this dream come true.