Konuya oldukça kişisel bir bakış açısından girip, daha sonra toparlayacağım. Şimdiden girişteki uzun hikaye kısmı için kusuruma bakmayın :)
Açık Kaynak Yolculuğum
İstisnasız davet edildiğim her konuşmada ilk 2–3 dakikada kendimi tanıtırken kullandığım bir cümledir, “açık kaynak ekolünden geliyorum”. Pek irdelemem, detayına girmem ancak yalnızca bir cümle olsa dahi geçirmekte de fayda görürüm. Bunun birçok nedeni var, ancak en kişisel olanından bahsedeyim; Kağıt üzerinde kurumsal firmalarda çalışan bir beyaz yakalı çalışanım. Bu da yetmezmiş gibi günlük mesaimde gerekmedikçe ellerimi çok az kirletiyorum. Dışarıdan yazılım üretimi -istese de- şirketinin orta vadeli hedeflerinden daha öte bir değere dönüştüremeyen ve 5 yıl öncesine kadar açık kaynak bir koda güvenilemeyeceğinin iddiasında olan biri gibi değerlendirilmem için tüm şartları sağlıyorum.
Oysa ki 90’ların ortasında BBS’ler döneminde yazılımla uğraşmaya başlamış ve yazılım geliştirmeyi topluluktan öğrenmiş ve topluluğun yararını çokça görmüş biri olarak işin “sosyal” boyutunu atlamak ve kocaman bir yazılım ekosistemini tek taraflı kullanmak benim için bir seçenek dahi olamazdı. (bkz: 90'larda programlama öğrenmek yazım)
Disket/CD değişimleri, internette kişisel web sitelerinde yayınladığımız kodlar, phpclasses.org ve sourceforge maceralarımı hızlıca atlamam gerekirse; bugünkü manada açık kaynak ekosistemine ilk katkımı 2011’de tanışıklığımın olmadığı, bir çıkar ilişkisi beslemediğim insanların GitHub repository’lerine katkı yaparak gerçekleştirdim.
O günden bu yana da yazılımla ilgili biriktirdiğim tüm bilgi ve deneyim birikimimi -gündüz yapmış olduğum mesaiden komple bağımsız bir biçimde- kendi kişisel zamanımdan arttırarak açık kaynak gönüllüsü olarak çalışıyorum. Hızlıca bir baktığımda GitHub’da “Repositories” bölümünde 189 projenin hesabıma tanımlı olduğunu söylüyor, bunların yalnızca 27’si fork. Ve ben halen daha üretken olabileceğimi, henüz elimde bir şey olmadığını düşünüyorum. Çünkü yaptığım ufak tefek çalışmalarda bir bütünlük eksikliği var. Hepsinin bir amaca hizmet etmesini amaçlıyorum.
Diğer taraftan genel bir dönüşüm olduğunun, “çok büyük katkısı olmayan” biri olarak benim koyduğum tuğlaların bile nihayetinde kültürel anlamda bir işlevi olacağından eminim. Çünkü en basitinden bir önceki paragrafın başında değindiğim “açık kaynak projelerin kişisel zamandan arttırarak yapılan bir aktivite olması” konusunda 5–6 yıl sonra bir şeyler daha farklı olursa, açık kaynak ekosistemine dahil olan daha fazla kuruluş olursa, bunun bugünün açık kaynak gönüllülerinin başarısı olduğundan emin olacağım.
github.com/acikkaynak
Bu fikirlere sahip biri olarak yaklaşık 5 yıl önce github.com/acikkaynak adresini yayına aldım ve çağrıda bulundum. Bugünkü acik-kaynak.org’nun “MVP” hali olan bu çalışma, insanların bir GitHub repository’sine kendi projelerini eklemesi ve dolayısıyla topluluğun geri kalanına da “benim de bir açık kaynak çalışmam var, katkı sağlayabilirsiniz” mesajı bırakabilmesi anlamına geliyordu.
Elbette ihtiyaçlar ihtiyaçları doğruyor, hemen ardından bu eklenen projeleri JSON formatına taşıdık ve projelerin listelendiği HTML otomatik oluşmaya başladı. Bir sonraki adım ise artık acikkaynak.info (bugün artık bu adresi kullanmıyoruz) adresini üzerinden insanların nasıl açık kaynak geliştirmeye başlayabileceklerini anlatmak ve GitHub’da yer alan açık kaynak proje listesini bir web sitesi arabirimi üzerinden görmelerini sağlamak oldu.
github.com/acikkaynak/acikkaynak adresi üzerinde 95 açık kaynak proje listeleniyor. Ve yalnızca Slack üzerinden 391 açık kaynak yazılım geliştiriciye ulaşıyoruz.
Daha iyi yapabileceğimiz şeyler vardı. Birçok kişi ile tanışma, muhabbet etme ve projelerinde ufak tefek konulara yardım etme şansı buldum bu süreçte. Bazı kimselerin projelerini fark edip pull request ile düzenlemeler yapma fırsatı buldum. Ama birlikte bir proje planlandı veya açık kaynak yeni bir projenin temelleri bu platformda atıldı mı? Maalesef hayır. Evet ama gördüğüm şu ki: potansiyelimiz var.
acik-kaynak.org
Bugün acik-kaynak.org adresi üzerinden yeni bir sürüm üzerinde çalışıyoruz. “Açık kaynak’ı açık kaynak yapıyoruz” diye özetlediğim bir çalışma gerçekleşiyor.
Agah Gürer’in yaptığı tasarımı Figma’ya aktardık, şu anda herkes ulaşıp görüntüleyebiliyor. Açık Kaynak 1.0 Yol Haritası başlığından tüm geliştirme detaylarına ve aktif sprint hedeflerine ulaşabiliyorsunuz. Okan Davut, Samet Aylak, Mehmet Ali Peker, Berat Bozkurt, Tuğsan Ünlü, Numan Can İpekçi ve Kaan Gökdemir koda pull requestler aracılığı ile katkıda bulundular. Arda Kılıçdağı, Emre Yılmaz, Hatice Edis, Emir Karşıyakalı, Selçuk Ermaya, Selen Gora ve Samet Aydemir’in ise GitHub Issue’larında izleri var. Aliyar Fırat sürüm planlamada ve tasarımda birçok fikir getirdi.
Üstelik bu yazının yayınlandığı tarihten 1 hafta sonra da projeyi tamamlamak gibi bir hedef var.
Ardından sürümlerle gideceğiz ve backlog’umuz şimdiden çok dolu. Bazı fikirler uçuk kaçık olsa da;
- Açık Kaynak geliştirme hakkında 0’dan başlayan birini donanımlı hale getirecek bir içerik sağlayan,
- Kurumlar nasıl açık kaynağa geçiş yapabilir, bu konuda içerik sağlayan ve çözümler üreten,
- İnsanların GitHub hesapları ile girip erişime izni oldukları repoları işaretleyerek sisteme aktarabildikleri,
- Erişebildikleri repolar hakkında haber girebildikleri, -dolayısıyla başka kullanıcıların da gördüğü sosyal bir mecra haline geliyor-
- Sistemdeki projelerin künye sayfalarının olduğu, böylece insanların projeleri beğenip, sosyal medyada paylaşabildikleri,
- Sistemdeki kişilerin istatistik bilgilerinin yer aldığı,
- Teknolojilere, kategorilere hatta etiketlere göre aranabilen projeler sayfasına sahip,
- Sponsorluğu teşvik eden, sponsorların reklamını yapan,
- Projeler için girilen haberler, istatistikler ve yeni eklenen projelerle haftalık açık kaynak bülteni yayınlayan,
yeni sürümler için de yol haritaları oluşmaya başladı. Genel anlamda bu projenin amacı Türkiye’deki ve Türkçe konuşan geliştiricilerin oluşturduğu açık kaynak ekosisteminin lokomotifi olmak, insanları açık kaynak geliştirmeye motive etmek, farkındalık yaratmak ve engelleri ortadan kaldırmak. Dolayısıyla ekosistem neye ihtiyaç duyuyorsa o noktada görev almaya devam edeceğiz.
Diğer Açık Kaynak Projelerim
Tekrar kendime dönecek olursam bugünlerde acik-kaynak.org’un geliştirmesine odaklansam da diğer açık kaynak projelerime de dönem dönem ağırlık veriyorum. Bunları daha önce tanıtacak fırsatım olmamış bu nedenle belli başlı olanlardan bazıları hakkında yazarak bu eksiği kapatmak istiyorum.
Eğer ilgilenirseniz dilediğiniz projeye sizleri de katılımcı olarak ekleyebilirim. Hatta telegram üzerinden benimle iletişime geçerseniz konuyu projelendirir, ortak hedefler koyar ve projeler üzerinde birlikte çalışabiliriz.
darty: (JavaScript) Darty en temel anlamda bugünün modern web geliştiricisinin ihtiyaçlarını karşılayan bir geliştirme aracı. TypeScript compiler, Jest ve webpack kullanarak sıfır konfigurasyon ile SSR, Module Bundling, CSS Modules, Hot Reloading, Containerization ve TDD-Ready Environment sağlıyor.
Belirli darty şablonları var, “darty-react-app”i örnek verelim: içerisinde react ve semantic ui react ile birlikte geliyor. Vue, Svelte, v.b. şablonlar oluşturmak için ortada hiçbir engel yok. Bu şablonlardan birini seçip “yarn create darty-app react webapp” gibi bir komutla çalışmaya hazır bir tabanla hemen başlayabiliyorsunuz. Create React App’a göre avantajları/dezavantajları olan ancak olaya tamamiyle farklı yaklaşan bir araç darty.
evangelist: (JavaScript) Fonksiyonel programlamaya aşinaysanız ve compose, curry, decorate v.b. yapıları fazlaca kullanıyorsanız tree-shaking uyumlu bu kütüphaneyi sevebilirsiniz. loadash gibi komple bir alet çantası yerine inline edebileceğiniz sadelikte fonksiyonları size sunuyor.
senior: (JavaScript) ufak bir uygulamanız var diyelim ve buna üçüncü parti uzantı (extension) desteği yazmak istiyorsanız. bu proje npm paketleri aracılığı ile uygulamanızın uzantılarını listeleyebileceğiniz, indirip kurabileceğiniz ve kaldırabileceğiniz bir arabirim sunuyor.
consultant: (JavaScript) belirli bir parametre diziniz var ama bu parametreleri ister bir JSON girdisinden, ister komut satırından, isterseniz de kullanıcı ile iletişime geçip GUI üzerinden almak istiyorsunuz. consultant sizin için bu girdi esnekliğini sağlamaya çalışıyor.
maester: (JavaScript) loglama ve exception/error handling işlerini aynı potada eriten, hem node.js hem de browser’da aynı kod tabanı ile çalışan bir kütüphane.
enthusiast: (JavaScript) fonksiyonel yaklaşımları kullanan ancak kaynak olarak da streaming arabirimleri kullanan bir kütüphane.
ponyfills: (JavaScript) çoklukla kullanılan ancak tüm platformlarda desteklenmeyen belli başlı JavaScript foksiyonlarının eğer varsa native halini kullanan, yoksa bunların çoğunlukla mozilla developer network üzerinden alınan polyfill sürümlerini çalıştıran kütüphane.
immunity: (JavaScript) immutable veri yapılarını koruyarak array ve object gibi nesnelerinde işlemler yapmanızı sağlayan bir kütüphane.
servicemanager: (JavaScript) JavaScript için inversion of control sağlayan bir kütüphane.
cofounder: (JavaScript) Dosya sistemi ve OS işlevlerini soyutlayarak bunları implementasyondan bağımsız olarak kütüphanelerin kullanabilmesini sağlayan bir katman.
sey: (JavaScript) Bir web projesinde oldukça fazla tekrarlanan işleri bir task tool ile değil de, declarative olarak belirterek çözmenizi sağlayan bir araç.
apibone: (JavaScript) Slack, Telegram, Webhook’lar v.s. gibi ortamlardan yapılan çağrıları tekilleştirerek arkada bir bot mekanizması işletebilmenizi sağlayan, bot’dan alınan yanıtı yine ilgili katmanın kurallarını işleterek kullanıcıya ileten bir uygulama.
tassle: (.NET Standard) Konfigurasyon, Data, Fonksiyonlar, I18N, Loglama, Doğrulama gibi kütüphaneler sağlayan bir .NET paketi.
jsmake: (JavaScript) JavaScript için make, rake gibi bir task runner. Ancak kullanıcının tanımladığı taskları farklı kanallardan okuma, uzantı desteği gibi ek özelliklerle donatılmış halde.
Diğer projeler için https://github.com/eserozvataf adresini inceleyebilirsiniz.
Son Olarak
Tahminen açık kaynak üzerine çokça çalışmaya, konuşmaya (bkz: Kurumlar için Açık Kaynak Pratikleri Sunumum) ve içerik üretmeye devam edeceğim. Lütfen ortak bir şeyler yapabileceğimizi düşünüyorsanız https://t.me/acikkaynak adresinden Telegram üzerindeki “açık kaynak development” kanalına katılın, tanışalım.