Çarşamba, Aralık 21, 2011

SambaPOS Projesinde Son Durum

SambaPOS, Mart 2011 tarihinde ilk duyurduğumuzda restoranlar için geliştirilen ve sadece adisyon kaydı ve ödeme alabilen basit bir programdı. Çok fazla özelliklere sahip olmamasına rağmen geliştirdiğimiz özgün çözümler nedeniye kullanımı o kadar pratikti ki açık kaynak olmasının da etkisiyle kısa süre içinde dikkat çekerek yaygınlaşmaya başladı. 9 aylık serüvenimiz süresince müthiş deneyimler kazandık. SambaPOS ile hayata geçirdiğimiz birçok yenilik sektördeki ilk örneklerdi ve uygulama yaptığımız restoranlarda büyük beğeni topladı. Projemizi daha da yaygınlaştırabilmemiz için programın her tür restoran ve benzeri işletmenin çalışma koşullarına uyarlanabilmesi gerektiğinin bilincindeydik. Yazdırma görevleri, adisyon etiketleme, kurallar, eylemler, tetikleyiciler gibi özellikler geliştirerek programın işletmenin ihtiyacına göre uyarlanabilmesi ve çeşitli işlemlerin otomatikleştirilmesi konusunda önemli gelişmeler kaydettik. Paket servis, açık hesap takibi, kasa, stok takip sistemi, dönemsel ağırlıklı maliyet hesaplama sistemi, el terminali ve tablet PC ile çalışma, mesaj sunucusu ile istemci entegrasyonu, caller-id, nakit kasası, yazar kasa, müşteri bilgi ekranı gibi donanımlarla entegrasyon gibi özelliklerimiz SambaPOS projesinin popülerlik kazanmasına en çok etki eden faktörlerdi.

Bu arada projeyi çok dille çalışabilir hale de getirdik. Geçtiğimiz 3 ay içinde SambaPOS Türkçe ve İngilizce dillerinin yanı sıra Portekizce, Rusça, Çekçe, Almanca ve İspanyolca dillerine de çevrildi. Bu çeviriler bizzat kullanıcılar yani restoran sektörü içindeki kişiler tarafından yapıldığı için ülkelerin restorancılık diline uyumlu idi ve bu nedenle bu ülkelerde de hızla yaygınlaşmaya başladı. Kısa sürede hem Türkiye'de çok değerli işletmelere hem de dünyanın birçok ülkesinden binlerce kişiye ulaştık ve artan ivmeyle tüm dünyada yaygınlaşmaya devam ediyoruz. http://facebook.com/sambapos adresinden SambaPOS'un nerelerde kullanıldığını öğrenebilirsiniz.

Bizim planımıza göre SambaPOS projesi üç temel aşamadan oluşuyor. (1) Bilgi toplama ve günlük raporlamalar, (2) analiz ve değerlendirme, (3) entegrasyon ve otomasyon.

SambaPOS projesinde birinci aşamada istediğimiz noktaya geldik. Bir restoranda gerekli her tür veriyi toplayabilmek ile ilgili oldukça iyi yol kat ettik. Bir restoranda A dan Z ye tüm operasyon SambaPOS desteğiyle muntazam bir şekilde işletilebiliyor. Artık ikinci ve üçüncü aşamaları beraber yürüterek topladığımız veri üzerinden iş zekası analizleri gerçekleştirme ve online servisler ile entagrasyon konularına ağırlık vereceğiz. Şu an gerekli altyapı hazırlıkları üzerinde çalışmaktayız. Çalışmalarımızı takip etmek veya katılım sağlamak isteyenler https://github.com/emreeren/SambaPOS-3 adresinden projemizi ziyaret edebilirler.

SambaPOS projesine başlarken hedefimiz tüm konuk ağırlama sektörüne yani restoran, cafe, bar, otel, klüp gibi her tür işletmeye hitap edecek bir çözüm geliştirmekti. 3. SambaPOS sürümü geliştirilmesi sürecinde restoran dışındaki işletmelerin de ihtiyaçlarına yönelik tasarımlar yapmaktayız. Yeni SambaPOS sürümü ile dışarıdan yüklenen ve basit bir arabirim üzerinden çalışan küçük yazılım modülleri ile programın çalışma şeklinde değişiklikler yapabilmek mümkün olabilecek. Kullanıcılar SambaPOS programını indirecekleri eklentiler ile ihtiyaçlarına uygun şekilde genişletebilecek veya bağlanacakları entegre online servisler ile değerli hizmetlere erişim sağlayabilecekler.

Bundan sadece 9 ay önce SambaPOS bir hayalden ibaretti. Bakalım 9 ay sonra neler hayal ediyor olacağız.

Çarşamba, Ekim 26, 2011

Felaketler aynadır yüzümüze tutulan

Türkiye'de her gerektiğinde Kurtuluş Savaşı ruhu canlanır, halk dayanışma içine girer ve kalan son ekmeğine kadar bölüşür. Ancak ayna gösteriyor ki günümüzün Güçlü Türkiye'sinin örgütleyen, koordine eden, organize eden bir beyni yok malesef.

Bir gün İstanbul'da da belki Van'da olandan daha büyük bir deprem olacak. Eğer o depreme yakalanırsak bina üzerimize çöksün de ölelim diye dua etmek gerek. Anlaşılan o günlerde en büyük felaketi hayatta kalanlar yaşayacaklar. 

Cuma, Ekim 21, 2011

Seni Bana Yazmışlar dı...

İki buçuk ay kadar Seni Bana Yazmışlar dizisi ile güldük eğlendik ve bugün o hiç istemediğimiz final gerçekleşti. Tatlı oyuncuların istisnasız tümüne yüzümüze kondurdukları gülücükler için teşekkürler. Ben aslında pek iyi bir TV izleyicisi değilim ama bu dizi hayatın karmaşası içinde küçük de olsa vakit ayırmaya değer bulduğum bir şeydi. Birbirini döven, vuran, kıran, üzen insanların olduğu dizilerin neden bu kadar çok izlendiğini ve kapitalizm dediğimiz lanet sistemin çarklarının nasıl işlediğini çok iyi biliyorum. Ama yine de güzel olan şeylerin sonbahar yaprakları gibi teker teker dökülerek hayatlarımızdan çıkıp gitmesine ve yerlerine sevimsiz, kaba saba, damardan şeylerin gelmesine üzülmemek elde değil.

Bu son bölümde gören gözler için güzel bir mesaj da vardı. Bu sahneyi izlerken senaristin kasten ya da farkında olmadan yaygın bir bilinç altı psikolojisini ortaya koyduğunu düşündüm. İzlemeyenler için anlatayım. Emre yolda yürürken tesadüfen reklam yıldızı olur. Herkes onu tanımaya başlar. İkinci reklam filminde tavşan kostümü giyip zıplamasını isterler. Emre rezil olacağını düşünerek bunu yapmak istemez ama sözleşmeye imza atmıştır bir kere... "Star Emre", "Davşan Emre" olacaktır artık.

Televizyon herkesin evine girdiği ve "sektörde" büyük paralar dönmeye başladığı andan itibaren TV programlarında yaşanan değişimin aynısı İnternet'in herkesin evine girmesiyle internet sitelerinde de yaşanmaya başladı. Herşey sıralama, tıklama sayısı, gösterim sayısı gibi ifadelerle tarif edilmeye başlandığından beri artık internet sitesi üreticileri de kaliteyi bir kenara bırakıp sadece gösterim sayısına odaklanmaya başladılar. Nasıl ki televizyonda tecavüz, dayak, gözyaşı, cinayet izlemek zorundaysanız internet sitelerinde de frikikler, büyütücüler, kaldırıcılar, indiriciler, küfürler, hakaretler, salaklıklar, abuk subuk şeyler izlemek zorundasınız. Haber okumak isteseniz de böyle, şöyle biraz vakit geçireyim deseniz de böyle.

Sadece skorun önemsendiği sektörlerin en çok "Rating Davşanlarına" ihtiyacı var. Bu nedenle birşeyler üretmeye çalışanlar eninde sonunda kalite ve rating çelişkisi arasında sıkışıp kalırlar. Gerek bu diziyi üreten ekibin gerekse de oyuncuların herkesi ağlamaktan gebertecek, duygusal şoklara sokacak beceriye sahip olduklarına şüphe yok. Ama Mehmet Burcunun suratına okkalı bi osmanlı çakmıyorsa ya da Yalçın Zeynep'i bir köşede kıstırmıyorsa bunun bir nedeni var. Umarım erdemli olmanın ödülünün haksızlık olmadığı günlere geri dönebiliriz.

Salı, Ekim 18, 2011

Milli Facebook

IT sektöründe önemli başarılara imza atan Türk iş adamları gözünü Facebook'a dikti. Son zamanlarda sık sık "Neden Facebook yapmıyoruz ki?" tarzında yorumlara rastlıyorum. Hürriyet yazarı Gila Benmayor'un Logo yazılım'ın eski yöneticisi Ali Güven ile yaptığı röportajdan sonra Dragons Den yatırımcısı Alphan Manas'ın konu ile ilgili twitini okuduktan sonra konuyla ilgili ikinci bir yazı daha yazmaya karar verdim.

2001 veya 2002 yılı olsa gerek. Şimdi nerede olduğunu tam olarak hatırlayamıyorum ama takip ettiğim bloglardan birinde yazılım ürünlerinin gelecekte tek parça dev ürünler olmayacağını, dashboard tarzı kullanıcı arabirimleri üzerinde kutucuklar şeklinde çalışan küçük servislerden oluşacağını ve bu nedenle geleceğin yazılım konseptinin "servisler arası entegrasyon" üzerine kurulu olacağını anlatan bir yazı okumuştum. Bu yazıyı Mark Zuckerberg de okumuş mudur bilmiyorum ama Facebook gibi bir uygulamanın teorik olarak şekillenmeye başlaması bu yıllarda başladı.

Facebook tam olarak nedir?

Facebook çoğumuzun algıladığı gibi bir arkadaşlık veya sosyal paylaşım sitesi değil. Facebook aslında bir önceki paragrafta anlattığım konseptte üzerinde "arkadaş listesi", "duvar", "resim albümü" gibi küçük servislerin entegre olarak bir sayfa üzerinde çalıştığı uygulama altyapısı. Dileyen bu uygulama havuzunun içine kendi uygulamalarını eklemekte özgür ve Facebook'un Myspace gibi dev bir sosyal paylaşım sitesini altedebilmesini sağlayan gücünü buradan alıyor. Çünkü facebook kendi altyapısı üzerinde çalışan uygulamalarında dilediği şekilde değişiklik yapabiliyor. Sistem sürekli olarak kullanıcıların beğenileri ışığında gelişerek binlerce 3. parti yazılım şirketinin de desteği ile büyümeye devam ediyor. Facebook bir gözle bakarsanız bir video paylaşım sitesidir veya bir oyun oynama sitesidir veya fotoğraf paylaşım sitesidir. Belki de aslında hepsidir.

Birinci önemli nokta şu Facebook ile sadece bir sosyal paylaşım sitesi yaparak rekabet edemezsiniz. Eğer yapılabilseydi MySpace rekabet ederdi. Facebook ile ancak bir uygulama altyapısı kurarak rekabet edebilirsiniz. Evet bunu Google denedi. Open Social adı verilen bir altyapıyı hem de piyasa bulunan hemen hemen tüm sosyal paylaşım sitelerinin de desteğini arkasına alarak denedi. Devamı gelmedi.

İkinci deneme Google Wave ile geldi. Wave daha heyecan vericiydi çünkü gerçek zamanlı entegrasyon altyapısı vaadediyordu. Ancak bu müthiş platformun üzerinde çalışan uygulamalar o kadar alakasızdı ki çoğu kimse Wave'in ne olduğunu anlamadı bile. Doğal olarak 3. parti desteği gelmedi ve bu uygulamanın şu sıralar akibetinin ne olacağı tam belli değil.

Üçüncü deneme de malum Google+ oldu. Görünen o ki Google üçüncü denemesinde bile dersini tam olarak almış değil. Facebook çok kısa sürede Google+ ile gelen yeniliklere cevap verdi çünkü Facebook altyapısı bu imkanı tanıyor. Google geliştiremeyeceği ürünler geliştirip çöpe atmak konusunda çok tecrübe yaşamasına rağmen çok yetersiz bir Google+ API'si yayınlayarak beklentileri yüksek geliştiricilerin hayallerini yıkmakta bir sakınca görmedi. "Gelecekte herşey Google+ olacak herkes mecburan Google+ kullanacak" şeklinde konuşuyorlar ancak gelecekte herşeyin Facebook olmayacağının da bir garantisi yok.

Google'ın rekabet etmek için türlü yollar denediği ortamda yerel bir yazılım şirketi Facebook ile rekabet edebilir mi? Şu an için Türk internet sektöründe genel eğilim yabancı pazarlarda başarı gösteren e-ticaret bazlı iş modellerini bire bir kopyalamak şeklinde. Gelir anlamında başarılı olan firmalar kaynaklarını TV reklamı gibi çok pahalı alanlarda kullandıkları gibi AR-GE alanında da kullanıyorlar mı bilmiyoruz ancak daha çok uzun süre kopyalama kültürünün devam ettirileceğine şüphe yok. Kopyalama kültürünün yeni ürün geliştirme kültürüne bir katkısı olması çok zor çünkü yeni şeyler yapmanın şartları çok başka. E-ticaret bir gerçek hayat operasyonu gerektirdiği için büyük oyuncular yerel oyunculara göre dezavantajlılar ancak Facebook yerel operasyon gerektiren bir site değil. Facebook ile ancak ondan daha iyi bir sistem kurarak global pazarda rekabet edilir.

Tabii Youtube - İzlesene örneğinde olduğu gibi Facebook'a Türkiye'den erişim bir nedenle kapatılırsa o zaman klon bir proje ile yerel olarak bir başarı yakalamak mümkün olabilir ancak 3. parti uygulama desteği olmayan bir site sıradan bir sosyal paylaşım sitesi olmaktan öteye gitmez.

İkinci önemli nokta ise Türk kullanıcısının İnternet ekosistemine yaptığı katkı. Paylaşım üzerine kurulu sistemler kullanıcılarının ürettiği maddi değeri olan içerik ile yaşarlar. Yani Türk kullanıcısın İnternet dünyasına paylaşmaya değer katkısı ne boyutta olabilirse bu katkıya dayalı iş yapan siteler de o oranda başarılı olabilirler. Sadece müzik kliplerinin, özlü sözlerin veya komik videoların (bunların da büyük bölümü aslında yabancı içeriktir) paylaşıldığı bir sosyal ortam gelir üretebilir mi?

Bir internet projesinin başarısını belirleyen en önemli faktörlerden biri ilk hayata geçtiği anda ulaşabildiği kullanıcı kitlesinin katkısı. İlk kullanıcıların ürettiği geri bildirim projenin şekillenmesi adına büyük önem taşıyor. Örneğin  Google veya Facebook gibi öğrencilerin ürettiği projelerin başarılı olabilmesinin ardındaki nedenlerden biri öğrenci arkadaşların yaptığı gönüllü katkı. Microsoft gibi dev kaynaklara sahip şirketlerin bile paranın gücüyle kuramayacağı bir heyecanlı test ekibi proje için çalışıyor ve destek veriyor. Aynı durumu Yahudi kökenli girişimcilerin projelerinde de görüyoruz. Hiç komplo teorileri üretmeye gerek yok. Bunun altında yatan şey dayanışma kültürü. Peki Türk kullanıcıların yerel projelere bakış açısı, bu projeleri kullanarak geri bildirim üretme ve destekleme noktasındaki isteği nedir?

Türkiyeden Facebook'a giren kullanıcı sayısı 4. sıraya ulaşmış deniyor ama bu projeler ilk yapıldığında durum böyle değildi. 2 yıl kadar Türkiye'den çok az kişi bu siteyi kullandık. Bırakın bir arkadaşımızı bulmayı arkadaş olacak bir Türk bile bulmak mümkün değildi. Ne zaman magazin programlarına düştü iş o zaman patladı. Celebrity camiasının bu projelere yaptığı katkı yadsınamaz. Acaba Facebook'a, Twitter'a üye olmak için istekli olan bu kişiler yerel projeleri de bu şekilde ücretsiz ve gönüllü olarak destekleyecekler mi?

Facebook, Twitter, Youtube gibi sitelerin bu kadar çok kullanıcıya rağmen sitelerini veya servislerini Türkiye için yerelleştirmekte çok da istekli olmamalarının nedeni ne olabilir? Bu siteler için maddi değer taşımayan Türkçe içerik, bir yerel proje için maddi değer taşıyabilir mi?

Türk pazarında E-Ticarette yaşanan kıpırdanma kaliteli sosyal içerik üretme anlamında da yaşanacak mı bunu zaman gösterecek ancak şu noktaya kadar anlattıklarımın Alphan Manas veya Ali Güven tarafından bilinmiyor olması ihtimal dahilinde bile değil. Böyle bir projeyi "yatırım yapılabilir" seviyesine getirmek dahi çok mümkün gözükmezken "Bir Türk Facebook'una ihtiyaç var" mealinde açıklamaları neden yaparlar bunu da zaman gösterecek.

Pazartesi, Ekim 10, 2011

Programlama Sanatı

Temelleri yüzlerce yıl öncesine dayanan eğitim sistemimiz insanları belli şekilde düşünmeye ve hareket etmeye güdülemek üzerine kurulmuş bir sistem. Yıllar boyu verilen görevleri hiç sıkılmadan yapması gereken insanların yaratıcılıklarını öldürmek, bireysel yaşam tarzını benimsetmek ve itaatkar hayat tarzını kabul ettirmek gerekiyordu. Okul denilen eğitim ortamının sabah toplanmasından akşam dağılmasına kadar yaşanan tüm ritüelleri, çalan zil, teneffüs, tek sıra, sınıf sistemi, marş okuma, ödül, ceza sistemi, başarı tarifi gibi tüm yapısı dönemin fabrikaların çalışma şeklinden esinlenilmiş. Kapısından girdiğimizde yaratıcı, isyankar, sorgulayıcı kişilerken yıllar sonra aynı kapıdan tarif edilmeyen işi yapamayan, itaatkar, uyumlu bireyler olarak çıktık. Fabrikalara çalışan yetiştirmek için yüzlerce yıl önce kurulan sistem halen devam ediyor.

Bu beyin yıkama operasyonuna nispeten maruz kalmayan tek bir kesim var. Sanatçılar. Onlar bu sistemde eğitilmedikleri için bizlere göre daha sorgulayıcı, isyankar, yaratıcı kişilerdir. Onları izlememizin, sevmemizin, ilgiyle takip etmemizin nedeni aramızdaki bu fark. Onlar bizim yerimize konuşmak, yapamadıklarımızı yapmak için varlar.

Eğitim sisteminin yarattığı bozgunu fazla yaşamadıysa sanatçılardan da şanslı olan diğer bir kesim de programcılar. Her ne kadar programcılık bir mühendislik dalı gibi algılansa da programcılık işlevi gereği bir sanattır. Hem de hiç bir sanat dalının sahip olmadığı önemli bir avantaja sahiptir. İnteraktiftir. Sanatçıların gerek twitter, gerek facebook gibi ortamları kullanarak açmaya çalıştığı kanal bizim mesleğin doğasında vardır. Bizler eserlerimizi kullanan kişilerle direk iletişim kurarak geri bildirim toplama ve eserimizi geliştirme şansına sahibiz. Bizler de tıpkı sanatçılar gibi yaratıcı düşünmekte özgürüz. Hatta belki de sektörümüzün şu sıralar en çok ihtiyaç duyduğu şey analitik düşünceden ziyade yaratıcı düşünce modeli.

Eğitim sisteminin yarattığı bozgun üst düzeyde olan kişiler ürünlerden ziyade programlama dillerinden, teknolojiden, karman çorman şeylerden konuşurlar. Aslında onlar için programcılık dünyanın en sıkıcı şeyidir. Dünyada çeşitli sorunları çözmek için icad edilmiş birçok programlama dili var ama programlama dili değil o dili kullanarak üretilen eser önemli. En iyi fotoğraf makinesine sahip olmanız iyi fotoğraf çekmemizi, en iyi boya malzemelerine sahip olmanız iyi resim yapmamızı, en iyi programlama dilini bilmemiz de iyi programlar yazmamızı sağlamaz. Eserlerimiz ondan faydalanan kişilerin hayatlarını kolaylaştırmalı, işlerini daha hızlı, daha kolay, daha verimli yapabilmelerini sağlamalı. Kullandığımız dil insanların kullanmak isteyeceği programlar yapabilmemizi sağlamaz. Bunu sağlayan şey sahip olduğumuz yaratıcı düşünce, işimize duyduğumuz saygı ve insanlık için faydalı şeyler yapma isteğimizdir.

Yaptığımız işin bir sanat olduğunu bilmek, altına imzamızı attığımız işlerin insanlar için faydalı şeyler olması için çok çalışmak ve her sanatçının yapması gerektiği gibi kullanıcılar ile iyi iletişim kurarak onların mutlu olmasına çalışmak gerek.

Sanatçılar alkış için yaşarlar...

Salı, Ekim 04, 2011

Eniyim.com

Çoğumuzun haberdar olduğu E-Tohum organizasyonu tam olarak benim şirketlere bağımlı çalışmaktan vazgeçip kendi kaderimi çizmeye kadar verdiğim dönemde ortaya çıkmış bir girişim. Bir süre ne yaptıklarını anlamaya çalışarak takip ettim. Aslında internet üzerinde değişik projeler tasarlayan kişilerin internet alanında yatırım yapan kişilerle buluşması çok ilgi çekici. Hem çeşitli fikirlerim olduğu hem de neler olacağını çok merak ettiğim için geçen sene başvurdum. Bir süre sonra da tanışmak için bir davet e-postası aldım. Tabii sardı beni tatlı bir heyecan. Tamam gideceğim de ortada proje adına elle tutulur hiç bir şey yok. O ara vakit buldukça SambaPOS'u geliştiriyorum ancak e-tohum'a bir internet projesi ile gitmek gerek.

İşte eniyim.com bu vesileyle doğdu. Bu site Social Toplist fikri üzerine inşa edildi. Kullanıcıların da katkısıyla çeşitli listeler oluşturalım, bunlar oylansın, çapraz bağlansın, yorumlar review'ler eklensin, üyeler listelerdeki güncellemeleri takip edebilsinler diye düşünerek tasarlanmış bir proje. Merak edenler siteyi http://www.eniyim.com/search adresinden inceleyebilirler veya http://www.eniyim.com/Home/About sayfasından sitenin özellikleri ile ilgili biraz daha bilgi alabilirler. Proje ASP.NET MVC3 ile geliştirildi. Gerekirse daha detaylı bilgi verecek bir yazı daha hazırlarım ama şimdilik konumuz bu değil.

Sonuçta projeyi ne olacağı anlaşılır bir prototip haline getirip Mehmet'le birlikte atlayıp İstanbul'a gittik. Burak Bey ve Haluk Bey ile tanıştık. Eniyim'i gösteremedik ama anlattık. Bir noktada "Bu projenin Gelir modeli nedir?" diye sordular.. Ta taaam. İşte yatırımcılar ile yeni fikirler geliştirenlerin ayrıldığı en önemli nokta... Gelir modeli? Hı? Adsense, reklam falan filan diye birşeyler geveledik ama aslında sorun sitenin gelir modelinden ziyade bizim düşünce modelimizde. En iyi parfümü, ey iyi arabayı, en iyi buzdolabını, en iyi çamaşır makinesini, en iyi hosting şirketini, en iyi düğün salonunu, en iyi balık restoranını arayan kişilerin girdiği bir sitenin gelir modeli ne olabilir ki? Çok bariz olduğunu sanarak üzerine düşünmeye gerek bile duymamıştık aslında.

Neyse sonuçta "siz projenizi yapmaya devam edin, bize de gelişmeleri bildirin" diyerek bizimle vedalaştılar. 3 ay kadar daha projeyi geliştirip "gelişmeleri" bildirmeye devam ettim. Aslında bir çelişki ama "etohum" un ilgi alanına girebilmek için benim projeyi yatırımcıya ihtiyaç duymayacağım bir noktaya getirmem gerekiyordu. Sonuçta ikinci bir davet almadık ve bu arada seçilen projeler de açıklandı. Bu nokta bizim için bir yol ayrımıydı. Ya SambaPOS ya Eniyim diyerek SambaPOS üzerine devam etmeye karar verdik.

Eniyim projesinin bir köşede yatıp durmasına içim elvermiyor. Bu nedenle benim Eniyim ile ilgili ikinci bir karar daha vermem gerekiyor.

Elimdeki opsiyonlar şunlar:
  1.  Projeye daha çok ilgi göstermeye çalışır, boş vakit buldukça küçük küçük geliştirmeye devam edebilirim.
  2.  Direk açık kaynak yapabilirim.
  3.  Projeye ilgi duyan birkaç kişi toplanıp internet üzerinden grup olarak geliştirmeye devam edebiliriz.
Direk açık kaynak yapmanın belli bir mantığı aslında yok. Bunu sadece artık yapacak başka birşey kalmazsa sırf eğlence olsun diye yapabilirim. Benim yavaş yavaş devam etmem de mümkün ama SambaPOS projesine o kadar ağırlık veriyorum ki yine eğlenceden öteye gidemez.

Bu nedenle projeye katkısı olabilecek arkadaşlarla bir araya gelip belki tamamen açık kaynak belki de yarı kapalı bir proje şeklinde devam etmek en mantıklısı diye düşünüyorum. Bu projeyi bir yatırımcıya yar edemesek de en azından üzerinde çalışırız, eğleniriz, farklı birşeylerle uğraşmış oluruz ve boş vakitlerimiz değerlenir. En kötü ihtimalle (belki de en iyisi bu olur) birbirimizin dostluğunu kazanmış oluruz.

Eniyim.com benim açımdan henüz proof of concept düzeyinde ama umarım zihninizde birşeyler canlandırmıştır. Konu ilginizi çektiyse, bu projeye benim de katkım olur diyorsanız, bana iletmek istediğiniz bir fikriniz veya düşünceniz varsa ister yorum ekleyin isterseniz gmail adresime (emreeren) mail atın konuşalım.

Çarşamba, Ağustos 17, 2011

Açık Kaynak Projeler Nasıl Geliştirilmeli?

Biz programcı milleti kod yazmaktan ve kod üzerine muhabbet etmekten çok hoşlanırız. Birbirini daha önce hiç tanımayan iki programcı yan yana geldiklerinde çok kısa zaman içinde kaynaşırlar ve hemen dillerden, araçlardan, çalışma yöntemlerinden falan konuşmaya başlarlar. Bu nedenle internet üzerinde programcıların en iyi sosyalleşebildiği ortamlar açık kaynak projelerdir. Ortada herkesin ilgi duyduğu bir proje varken muhakkak konuşacak birşeyler çıkar.

Ben her programcıya konusu ne olursa olsun bir açık kaynak projeye sahip olmalarını ve başka açık kaynak projeleri olan programcıların projelerini ziyaret ederek iletişim kurmalarını, karşılıklı yardımlaşmalarını tavsiye ediyorum. Bunun amacı para kazanmak değil. Amaç sosyal ilişkileri geliştirmek, yeni insanlarla tanışmak, yeni şeyler öğrenmek, yeni fikirler keşfetmek, vs.

Açık kaynak bir projenin yaşaması ve gelişmesi topluluk ilgisini çekebilmesi ile ilgilidir. Bu nedenle açık kaynak projeler şu özelliklere sahip olmalıdır:

1. Açık kaynak projelerin can alıcı noktası projenin temel işlevinin çok kısa sürede çalışır hale getirilmesidir. Yani projeniz her an kolayca kurulabilir ve x bir işi yapabilir durumda olmalıdır. Örneğin bir e-ticaret sitesi yapacaksanız projeyi denemek isteyen kişi hemen çalışan bir demo site üzerinde inceleme yapabilmeli, eksik noktaları görebilmeli ve projenin çalışmak isteyip istemeyeceği bir proje olup olmadığını hızlıca inceleyebilmeli. Programı kullanmak isteyecek kişiler de basitçe programı bilgisayarlarına kurup birkaç dakika içinde denemelerini yapabilir duruma gelmeli.

2. Kodlar her zaman derlenebilir olmalıdır. Kodları indiren bir kişi için en büyük hayal kırıklığı kodların derlenmemesi veya hemen çalışır hale getirilememesidir. Kimse yapacağı küçücük bir değişiklik için saatlerce kurulum problemlerini çözmekle uğraşmak istemez.

3. Projenin aktif bir koordinatörü olmalıdır. Her projenin bir Linus Torvalds'a ihtiyacı vardır. Zaten ilk başta projenin en temel işlevini de büyük oranda bu kişi kodlar. Diğer programcılar projeye katkıda bulunmaya başladıktan sonra koordinatörün temel görevi diğer programcıların gönderdiği güncellemeleri veya patch dosyalarını birleştirmek olacaktır.

4. Eğer bir şirket ortamı gibi sürekli beraber çalışılmayacaksa kişiler arasında iş bölümü yapılmamalıdır. Hatta abartıp "her gün x saat projede çalışılacaktır" gibi gereksinimler koymak hiç doğru değil. Kimse projeyi yarı yolda bırakan kişi olmak istemez. Bu nedenle programcılar bir gün çalışamama ihtimalini göz önüne alarak baştan işe girmek istemeyecektir. Dileyen her programcı projeye katılmakta, istediği kadar süreyle ve istediği şekilde çalışmakta ve çalışmaya ara vermekte özgürdür. Elbette proje ilerledikçe ve gerçek hayatta kullanılmaya başladıkça sorumluluk almak ve sürekli çalışmak isteyen kişiler olacaktır.

5. Güven ortamı sağlamak çok önemlidir. Bu nedenle imkanlar olsa bile projeler özel sunucular yerine codeplex veya googlecode gibi popüler açık kaynak geliştirme ortamlarından biri üzerinde geliştirilmelidir. Bu ortamlar katılımcılara kendi kod yedeklerini oluşturabilme şansı verirler. Böylece proje koordinatörünün birine kızıp projeyi kapatması veya sunucu çökmesi gibi hoş olmayan durumlar yaşanmaz.

Bunlar olmazsa olmaz özellikler. Elbette dökümantasyon hazırlanması, otomatik test sistemlerinin geliştirilmesi, bir genel bir de detaylı planlama yapılması gibi işler projeye değer katacaktır.

Peki sistem nasıl işler?

Git veya mercurial gibi distributed versiyon kontrol sistemlerinin geliştirilmesi ile çok sayıda programcının tek proje üzerinde çalışabilmesi imkanı doğmuştur. Lock mekanizması içermeyen bu sistemler üzerinde çalışırken genellikle uygulanan temel mantık şudur.

Projenin en önemli giriş noktası "Issue" listesidir. Bu listeyi hem programı yazanlar hem de programı kullananlar oluştururlar. Bu listede hata raporları ve yeni özellik istekleri bulunur. Issue bir programcının ideal olarak bir veya iki saatlik bir sürede tamamlayabileceği büyüklükteki bir iş parçacığıdır. İlk Issue'lar temel roadmap planının ilk milestone'unun daha küçük işlere bölünmüş halidir. Bu liste zamanla yeni fikirler ve bug raporları eklendikçe oturur ve programcılar yapacakları işleri ilgi alanlarına ve o anki boş zamanlarına göre bu listeden seçerler.

Ana projeye kod ekleme yetkisine sadece proje koordinatörleri sahiptir. Kod güncelleme yetkisine sahip olmayan diğer programcılar kendilerine ait kopyalar üzerinde çalışırlar. Bu kopyalara kimi sistemlerde "fork" kimilerinde de "clone" adı verilir. Fork başka anlamlara da geldiği için genellikle "clone" tanımı tercih edilir.

Diyelim ki bir x projede bir iş yapmak istiyorum. İş listesinden seçtiğim işi yapmaya başlamadan önce hiç kimseye sormadan projenin kendi adıma bire bir kopyasını oluştururum ve bu kopyayı bilgisayarıma indiririm. Kendime ait "clone" üzerinde sınırsız güncelleme yetkim vardır. Seçtiğim "Issue" ile ilgili yapacağım işim bittiğinde "clone"u günceller ve koordinatöre bir "pull request" gönderirim. Pull Request'in açıklamasına yaptığım işlerin ID numaralarını eklerim ve gerekiyorsa ek açıklamalar da yazarım. Koordinatörlerden biri yaptığım değişiklikleri inceler ve uygun görürse yaptığım değişiklikleri ana proje ile "merge" eder. Tortoise HG gibi popüler cilent programları koordinatör için bu işleri oldukça kolaylaştıran araçlar içerirler.

Gönderdiğim değişiklikler birleştirildikten sonra kendime ait klonla işim bittiği için bu klonu silerim. Başka bir zamanda yeni bir işe başlayacağım zaman tekrardan bir klon oluştururum. Bu yeni klon geçen süre boyunca diğer programcıların yaptığı ve ana proje ile birleştirilen değişiklikleri içerecektir. Süper mantık değil mi? Aslında ana proje dediğimiz şey "head" denilen dalın kendisidir ancak bu dal mekanizması ile ilgili detaylara sonra girelim. Zaten her projede bu mekanizma topluluk yapısına göre farklı mantıklarda kullanırlar.

Burada en çok dikkat edilmesi gereken konu bir klonu uzun süre aktif bırakmamaktır. Klon aktif olduğu süre boyunca ana kod üzerinde yapılan değişikliklerin çok olması başka programcıların yaptığı işlerle çakışma olmasına ve "merge" işleminin zorlaşmasına neden olabilir. Bu nedenle uzun sürecek işler daha kısa sürede yapılabilecek işlere bölünmelidir.

Umarım süreçle ilgili yeterince açıklayıcı olabilmişimdir. İlgi duyan herkesi sambapos.com adresindeki açık kaynak restoran programı projesine davet ediyorum.

Salı, Mayıs 31, 2011

SambaPOS Text Veritabanı

Zaman zaman bazı arkadaşlarım SambaPOS'un neden Text dosya bazlı bir veritabanı kullandığını soruyorlar. Öncelikle söyleyim SambaPOS SQL Server, SQL Server Express ve SQL Compact ile çalışabilmekte. İlgili veritabanın bilgisayara kurulup bağlantı ayarlarının yapılması yeterli. Bununla ilgili birçok bilgi sambapos.com dökümantasyonunda var.

Text dosya bazlı veritabanı sistemi ile ilgili asıl amacımız bilgisayara bir SQL tabanlı veritabanı kurulumu yapmadan programın özelliklerinin denenebilmesinin sağlanması. Elbette Text dosya veritabanımız uzun süreli kullanım için uygun değil bu nedenle kullanıcılarımız programı işyerlerinde kullanmaya karar verdiklerinde SQL tabanlı bir veritabanına geçmeliler.

Bunun dışında Text dosya veritabanının programın geliştirilmesi ile ilgili de birçok ekstra faydası var. Bilindiği gibi SambaPOS entitiy framework altyapısını kullanıyor. Entity Framework altyapısının geliştirme sırasındaki en önemli dezavantajı eğer Code First modelini tercih ettiyseniz modelde oluşan herhangi bir değişiklikte veritabanın silinip tekrar oluşturuluyor olması çünkü henüz bu modelde veritabanı yapısının otomatik güncellenmesi gibi bir imkan yok. Zaten düşünüldüğünde olmaması da gayet normal.

Text dosya veritabanımız basit anlamda "Reflection" ve "Serialization" ile çalışan bir XML tabanlı dosya yapısı olduğu için "rename" işlemi hariç modelde yaptığımız değişiklikler veritabanının baştan oluşturlmasına neden olmuyor. Ayrıca desteklediğimiz tüm veritabanı sistemlerine aynı IWorkspace arabirimi üzerinden eriştiğimiz için Text dosya veritabanı üzerinden çalışan bir yapı aynı şekilde diğer tüm veritabanlarında da çalışıyor. Bu seçenek TDD yapmak için de çok avantajlı çünkü Text dosya üzerinden çalışan veri erişim testleri aynı şekilde diğer veritabanları ile de çalışmakta. Test yazmanın çok zor olduğu veya bazı test altyapılarının kullanılmasının gerekebileceği durumlarda zaman kazandırıcı olacaktır.

Bu açıklamaları biraz daha programcılığa ilgi duyan arkadaşlar için yaptım. IWorkspace arabirimi üzerinden oluşturduğumuz veri erişim modeli her proje için faydalı bir model olabilir. Açık kaynak geliştirme konusuna ilgi duyan arkadaşlar ile bir çalışma yaparak bu katmanı daha da geliştirerek ayrı bir kütüphaneye taşırsak herkes için faydalı olur diye düşünüyorum.

Cumartesi, Mayıs 14, 2011

SambaPOS Gerçekten Ücretsiz mi?

Bir süre önce konuk ağırlama sektörüne yönelik Samba projesini başlatmıştık. SambaPOS bu proje içinde restoranlara yönelik yayınladığımız ilk ürünümüz. Samba projesi içindeki ürünler açık kaynak ve ücretsiz olarak dağıtılıyor.

Son günlerde en çok şu sorulara cevap veriyoruz.

SambaPOS gerçekten ücretsiz mi?
SambaPOS gerçekten ücretsiz. Bazen telefonla bize ulaşan kullanıcılarımızı ikna etmekte zorlanıyoruz ama gerçekten öyle. SambaPOS içinde süre dolması, kullanım sınırlaması gibi gizli saklı bir şey yok. Programı dilediğiniz kadar, istediğiniz sayıda kullanıcıyla, arzu ettiğiniz şekilde kullanmakta özgürsünüz. Samba projesi kapsamındaki tüm programlar da bu şekilde üretilmeye ve dağıtılmaya devam edecek.

Peki o zaman neden ücretsiz?
Çünkü sizin programı indirip bilgisayarınıza kurmanızın, sitemizdeki bilgileri kullanarak programı öğrenmenizin ve programı kullanmanızın bize hiç bir maliyeti yok. Bunun dışında video çekmek, döküman yazmak, forumlarda sorulan sorulara cevap vermek için zaman harcıyoruz ancak bu faaliyetlerimiz daha çok kullanıcıya ulaşmamızı sağladığı için harcadığımız zamanın faydasını dolaylı yoldan görüyoruz.

İyi de nasıl para kazanıyorsunuz?
Bize maliyet oluşturan şey kişiye özel verdiğimiz hizmetler. Örneğin:
  • İnternetten sunduğumuz kaynaklardan yararlanmak yerine programı gelip bizim kurmamız isterseniz,
  • Programı bizim anlatmamızı veya personel eğitimini bizim vermemizi isterseniz,
  • Telefonla veya mail ile bize özel olarak ulaşıp sorularınıza hızlıca cevap almak isterseniz,
  • Sizin için önemli ve programa hemen eklenmesini istediğiniz bir özellik veya bir rapor varsa,
  • Sürekli kontrolümüz altında bulunması gereken bir tür hizmete ihtiyaç duyuyorsanız,
Veya bunlara benzer kişiye özel herhangi bir hizmete ihtiyaç duyulursa bu tür hizmetler bizim için maliyet oluştururlar. Biz bu tür kişiye veya belli bir kullanıcı kitlesine hitap eden özel servislerden gelir elde ediyoruz.

Programı satıp hemen para almak dururuken ne gerek var buna?
Birçok yazılım şirketi program kullanımını ücretli yaparken kişiye özel hizmetleri ücretsiz yapma yolunu tercih ediyor. Ücretsiz hizmet sözü vermek sık kullanılan bir satış kapatma yöntemi ancak aslında ücretsiz hizmet verilmeyecek olan hizmet anlamına geliyor.

Düz mantıkla düşünülürse program ücretsiz verilebilir ama kaliteli hizmet ücretsiz verilemez. Şunu defalarca tecrübe ettik ki iş yapan her işletmeci eğer kaliteli hizmete gereksinim duyuyorsa önceden anlaşılmış bir miktarda periyodik ödeme yapmakta hiç bir problem görmüyor. Sonuçta verilen hizmet işletmeye bu maliyeti kat kat geri kazandırıyor. Tecrübelerimize göre hem lisans ücreti alınıp hem de ücretsiz servis sözü verildiği halde farklı bahanelerle tekrar tekrar ücret istenmesi memnuniyetsizliğe neden oluyor. Gerçek şu ki biz memnuniyetsiz kullanıcı kitlesi ile arzu ettiğimiz noktaya gelemeyiz.

Bu iş modeli ilk bakışta alışılmışın dışında gibi görünse de google, facebook, twitter gibi şirketler bu şekilde çalışırlar. Google herkese bedava ama siz bu siteye kendinize özel bilgiler koymak isterseniz o zaman ücret ödersiniz.

Kimse bizim modelimizde çalışmadığı halde bizim bu modeli tercih etmemizin nedeni geleceğe yatırım yapmak istememiz. Gelecekte program lisans fiyatlarının düşeceğini ve buna paralel olarak kaliteli hizmetin değerinin artacağını öngörüyoruz. Şüphesiz bu sürece ayak uyduramayan firmalar büyük maddi sıkıntılar yaşayacaklar. Biz gelecekte böylesi istenmeyen bir durum yaşamak yerine şimdiden iş modelimizi geleceğe uyarlamanın daha mantıklı olduğunu ve bu geleceğin farkında olan firmalarla çalışmamız gerektiğini düşünüyoruz.

Çarşamba, Mayıs 11, 2011

Yeniden Merhaba

Sansür üzerine sansür blogger'ı artık kullanılmaz hale getirmişti. Doğal olarak blog tutmakla ilgili hevesimizi de kaybettik. Yıllar sonra blogumu wordpress'e taşıyıp oradan devam edeyim diye düşünüyordum ki bugün bloguma tekrar girebildiğimi farkettim. Özlemişim..

Sansür demişken son günlerde ekşisözlük marifetiyle tekrardan gündeme oturan sansür olayı iyicie içinden çıkılmaz bir hal almaya başladı bence. Sansüre karşı duran çoğu kişinin erotik sitelerde işi olmadığı halde konu öyle ya da böyle buraya çekiliyor. Bu durum ister istemez "ne çok erotizm meraklısı varmış" diye düşündürüyor. Acilen bu konuyu farklı bir konu başlığı üzerinden tartışmaya açmak gerek. Yani çoluğu çocuğu olan hiç kimse psikolojikman erotik siteleri savunuyor görünmek istemez.

Özgür iletişim hakkının erotik sitelerle bir alakası yok ama erotik siteleri engelleme niyetiyle kurulan sistemler diğer zararlı (!) iletişimi de devlet kontrolü altına alıyor. Sorun zaten bu. Bakın son dönemde görüyoruz. Bir ülke karıştığı zaman ilk internet bağlantısını kesiyorlar. Halkın internet iletişimini devam ettiriyor olması hükümdarların işine gelmiyor demek ki.

İnternet o kadar da başı boş değil. Dünya çapında her ülkede geçerli internet kuralları var. Bir site açıp uyuşturucu satamazsınız mesela veya elinizi kolunuzu sallaya sallaya kredi kartı dolandırıcıları forumu açamazsınız. Ülkemize özel internet yasaları icad etmeye çalışmaktansa dünyanın her yerinde geçerli kuralların uygulanmasını sağlamak yeterli olacaktır. Bunun dışında Türkiye internet kullanıcısına özel kural icad etmek halk üzerinde baskı kurmak dışında başka bir amaç taşımaz. Elbette ihtiyaç duyan kullanıcılara servis sağlayıcılar ek filtre hizmetleri sunabilir ama bunun dışında herkes için geçerli engelleme sistemleri uygulamak normal siteleri de etkileyen sonuçlar doğurur. Mesela ben yıllardır kendime ait blogumu doğru düzgün kullanamıyorum.

Dahası internet omurgamızın kalbine yerleştirilecek bu filtreleme sistemleri bize ait yerli veya açık kaynak teknolojiler değiller. Çok anlamam ama bu sistemlerin filtreleme dışında arka planda başka işler de yapmayacağının bir garantisi yok.

Evet belki sansürden bile önemli olan ikinci husus internet üzerinde anonim kalma hakkı. Yani internet üzerinde kimliğimizi gizleme hakkımız olması gerek. Kimlik gizleme hakkı olmadan düşünce söyleme hakkının olması hiç bir anlam ifade etmez. Geçmişte gördüğümüz gibi gazete yazarları bile düşüncelerini rahat aktarabilmek için rumuz kullanmışlardır. Bu konu şimdilik sansür kadar popüler değil ama duyduğumuz kadarıyla internette attığımız her adımın yıllarca kayıt altında tutulacağı bir sisteme geçmek için çalışmalar yapılıyor. İşte bu sansürden çok daha tehlikeli. Kayıtlar hangi sitelere girdiğimizi tutar ama bu kayıtlara bakarak niyetimizi yorumlayacak olan yine de bir insandır. İnternette dolaşma geçmişimiz, hakkımızda her türlü anlamda yanlış yorumlanabilecek şekilde değerlendirilebilir. Tabii bu kayıtların farklı amaçlarla değiştirilemeyeceğinin veya yanlış kişilerin eline geçmeyeceğinin bir garantisi de yok. Geçmişte yaşanmış tapu kadastro kayıtlarının arazi mafyasına satılması olayını hatırlayalım.

Tüm bunlara rağmen erotik siteler bahanesiyle sansür, suçluları takip etme bahanesiyle de kayıt altına alma sistemleri yavaş yavaş devreye sokuluyor. Bunlar "Yönetemediğini yasakla" zihniyetinin bir ürünü müdür yoksa wikileaks olayında hissettiğimiz gibi bu işlerin arkasında çok daha büyük küresel komplolar mı var bunu zaman içinde göreceğiz. Neyse içim şişti artık bu blogda sansür ile ilgili konularda yazmak istemiyorum... Umarım bu tür sevimsiz konular hızla gündemimizden çıkar.