Mert Kahyaoğlu, MSKÜ Bilgisayar Mühendisliği Bölümü’nün en başarılı öğrencilerinden. Bu yazıda özgür yazılım projelerine olan katkısından, web teknolojilerinden ve “google summer of code” (google’da kodlama – google’da staj) kabul olmasından sözedeceğiz.
Öncelikle bu röportaj için teşekkür ediyorum. Mert, MSKÜ Bilgisayar Mühendisliği 2016 mezunlarımızın birincisi. Sadece bölüm birincisi değil, aynı zamanda üniversite birincisi. Mert geçtiğimiz cuma günü bölümde arkadaşlarına güzel bir sunum yaptı. Arkadaşlarına ilettiği güzel önerileri var, onlara da burada değinelim istedim.
Selamlar, öncelikle kendini tanıtır mısın?
Selamlar, ben Mert Kahyaoğlu. Muğla, Marmaris doğumluyum. Eğitimimi üniversiteye kadar Marmaris’te tamamladım. Üniversitede de fazla uzaklara gitmeyip Muğla Sıtkı Koçman Üniversitesi’ni tercih ettim. Daha sonrasında birkaç yatay geçiş girişimim oldu ama, seçilmeme rağmen gitmedim. Verdiğim en radikal kararlardan biridir. İyi ki de üniversitemi bırakmamışım diyorum. Kendimi geliştirebileceğim çok iyi bir ortamı kaçırmamış oldum.
Ben, web teknolojileri ile uğraşan birisiyim. Web ortamında uygulama geliştirmeyi, yeni teknolojileri keşfetmeyi ve tabi ki açık kaynaklı projelere katkı sağlamayı seviyorum. Bana kişisel web sayfamdan ulaşabilir, açık kaynaklı projelerime yine buradan göz atabilirsiniz.
Google Yaz Kodlaması (Google Summer of Code – GSoC)’ndan nasıl haberiniz oldu?
Summer of Code’tan 2 sene önce, bölüm hocalarımın bahsetmesiyle haberim oldu. Bu programın özgür yazılımı destekleyen çok prestijli global çapta bir program olduğundan ve seçilen öğrencilerin bu alanda üst seviyeye gelebilmek adına çok önemli bir adım daha atmış olacağını söylediler. Google’ın öğrencilere, kendilerini geliştirebilecekleri, gerçek hayatla birebir örtüşen projelerde çalışabilecekleri ve aynı zamanda da para kazanabilecekleri böyle güzel bir ortam sunması çok hoşuma gitmişti. Beni çok heyecanlandırdı ve neden olmasın dedim.
Programa 2014 senesinde de başvuracaktım. Hatta birkaç projeye göz attım. Ama kendimi yetersiz hissettim. O zamanlar özgür yazılıma yeni yeni atılmaya başlamıştım. Github’ta ki projelere olan kod katkılarım da çok fazla değildi. Ama program hakkında iyi bir derecede bilgi sahibi olmuş oldum.
Özgür yazılım tecrübenizi bize özetleyebilir misiniz?
Özgür yazılım serüvenine yaklaşık iki buçuk sene önce atıldım. Bu serüven tamamen Github‘ı tanımam ile başladı diyebilirim. Herhangi bir yazılımcının ilgisini çeken herhangi bir projenin kodlarına direk olarak erişim sağlaması, hatta projeyi kendi projesi gibi benimseyip geliştirmeye çalışması bana çok ilginç gelmişti. Bu dünyada yaptığınız en küçük kod katkısının bile büyük minnetle karşılanması ve Github’ın özgür yazılıma teşvik eden o arayüzü beni bu serüvene başlatan başlıca nedenlerden. O zamanlar tabi ki de çok büyük katkılarım olmuyordu. Bir projenin dökümantasyonunu güncellemek, harf hatalarını düzeltmek, tekrar eden kodları silmek gibi küçük görünebilecek şeyler bile bana büyük haz veriyordu. Bir yerden başlamak adına bu tür şeyleri yapmamız gerekiyor diye düşünüyorum. Devamında büyük katkılar kendiliğinden geliyor zaten. Çünkü bir zaman sonra alışkanlık haline geliyor ve yapmazsanız birşeyler eksik gibi hissediyorsunuz. Hatta bugün öncelikli kullandığım sosyal medya aracı Facebook değil, Github’tır diyebilirim. Her gün girip hangi projeler popüler, hangi yazılımcılar neler yapmış diye bakıyorum. Sadece okuyucu olarak bile çok fazla şeyler öğrenebileceğiniz bir ortam var. Alanında en iyi yazılımcıları takip etmek size çok şey katabiliyor.
Bu zamana kadar özgür yazılım olarak hangi projelere katkıda bulunduğunu ve projelerde yaptıklarından bahseder misin?
İlk stajımdan sonra web alanına yönelmemle beraber, özgür yazılımı daha da aktif olarak kullanmaya başladım. O zamanlar WordPress kullanarak içerik yönetimli siteler oluşturuyorduk. Sitelerin ön yüzünde kullandığımız bütün jQuery eklentiler açık kaynaklıydı. Bu açık kaynaklı eklentiler sayesinde çalıştığım şirket ve birçoğu para kazanıyordu. Bu eklentileri yapan yazılımcılara gerçekten borçlu olduğumuzu düşünüyorum. Çünkü hiçbir beklenti olmadan paylaşılan bu yazılımlar birçok insanın hayatını kolaylaştırıyor. O yüzden sadece kullanıcı olmaktan öteye geçip bizim de katkıda bulunmamız gerektiğinin farkına o zamanlar vardım. Github’ta paylaştığım ilk projeler genelde animasyon efekleri olan jQuery eklentileriydi. Çünkü projelerimde ihtiyaç duyduğum şeylere belki başkalarınında ihtiyacı olur diye düşünüyordum.
Daha sonraları Node.js ile tanıştım. Javascript kullanarak web server yaratmak çok ilgimi çekmişti. Çünkü o zamanlar Javascript’i sadece web sitelerinin ön yüzü için kullanıyordum (genellikle jQuery) ve arka planda PHP kullanmak bir zaman sonra işkence gibi gelmeye başlamıştı. Her iki taraf içinde Node.js kullanmak kulağa hoş geliyordu. Daha sonraları Node.js ekosistemini tanıdıkça işler daha da zevkli hale geldi. Bu sefer jQuery eklentileri paylaşmak yerini Node modülleri paylaşmaya başladım. Node.js’in paket yöneticisi olan NPMsayesinde Javascript’e built-in olarak gelmeyen özellikleri yazıp tüm dünya ile paylaşabiliyorsunuz ya da ihtiyacınız olan herhangi birşeyi baştan yazmak yerine daha önce başka bir geliştirici tarafından yazılmış olanı kullanabiliyorsuz. Bu modüller tek bir satırdan da oluşabilir yüzlerce satırdan da. Paylaştığınız modüllerin birçok insan tarafından kullanıldığını görmekte size ayrı bir zevk veriyor. Bir yandan da modüler yazılım geliştirmeyi öğreniyorsunuz.
Hazır Javascript ile içli dışlı olmuşken Github’tan da Javascript projelerine katkı sağlamaya başladım. O zamanlar Github’ın Atom Text Editör‘ü yeni çıkmıştı ve Sublime’a göre birçok eksiği vardı. Yaptığım ilk katkılar dökümantasyonları düzeltmek, tekrar eden if-else ifadelerini düzeltmek oldu. Daha sonra genel kod yapısını anladıktan ve diğer insanların kodlarını inceledikten sonra arayüz iyileştirmeleri yapmaya başladım. Sublime’da olup Atom’da olmayan özellikleri ekleyip gerekli testleri yapıp dökümante edebilecek hale geldim. Hatta Github, Atom 1.0 versiyonuna ulaştığında benim gibi Atom’a katkı sağlayan geliştiricilere bir teşekkür olarak, özel yapım bir arma ve teşekkür notu gönderdi. San Francisco’dan size bir teşekkür mektubunun gelmesi gerçekten çok sevindirici ve teşvik edici. Github’ın özgür yazılımı bu denli desteklemesi beni özgür yazılıma daha da yaklaştırdı.
Daha sonraları ise Atom eklentileri oluşturmaya başladım. Bunlardan bir tanesi Atom kullanıcıları ile gerçek zamanlı chat yapmanızı sağlayan Atom Chat eklentisiydi. Bunun bir üst versiyonu olan Atom Video Chat’ide bitirme tezi olarak seçtim.
Katkıda bulunduğum bir diğer proje ise Facebook’un açık kaynak olarak paylaştığı Javascript kütüphanesi olan React.js. Facebook’un kendi sitesinde de kullanmış olduğu React.js’in web uygulama geliştirmeye yeni bir bakış açısı getirdiğini düşünüyorum. Yine bu projeye yaptığım katkıları kod yapısının iyileştirilmesi, testlerin düzeltilmesi, dökümantasyonların güncellenmesi olarak sıralayabilirim.
Bunların dışında kendi projelerimde kullandığım teknolojilerde bir eksik gördüğümde de o projelere olabildiğimce katkı sağlamaya çalışıyorum.
Başvuru sürecinde ne tür elemeler oldu, proje danışmanları nelere dikkat ederek seni seçti?
Geçen seneki Summer of Code’a yeterince hazırlanamadığım için başvuramadım. Bu senekine hazırlanmam için yeterince zamanım oldu. Github ile aram iyi olduğundan ve Atom projesine yeterince katkı sağladığımdan dolayı açıkcası bu sene Atom’dan bir projeye seçilirim diye düşünüyordum. Ama Github ekibi Summer of Code için diğer projelerine önem vermeyi seçmiş. Öncelikleri Jekyll ve Classroom gibi projeler olmuş. Biraz ümitsizliğe düşsem de yine de proje listelerine bir göz attım. Github proje listelerini kendi üzerinden bir repository (depo) açarak issue’lar şeklinde paylaşmış. Diğer organizasyonlar kendi siteleri üzerinden yayınlıyorlar. Göz gezdirirken arada “Administrative GUI” kelimeleri direk dikkatimi çekti. Projede istenen Jekyll için bir admin paneli oluşturmaktı. Şu anki Jekyll’ı kullanabilmeniz için “komut satırı”‘nı kullanabiliyor olmanız gerekiyor. Jekyll ekibi daha genel bir kitleye ulaşabilmek için WordPress’teki admin paneli gibi bir arayüz geliştirilmesi gerektiğini düşünmüş.
WordPress ile onlarca site oluşturmuş ve ön yüzlerini tasarlamış biri olarak bu proje tam benlik dedim ve nasıl yaparım diye düşünmeye başladım. Bu sıralar Electron (Github’ın web teknolojileri ile her platformda masaüstü uygulama geliştirmenizi sağlan bir frameworkü) veReact.js ile haşır neşir olduğum için bu projede rahatlıkla kullanabileceğimi düşündüm. Hatta bir adım ileriye gidip bir demo uygulamasını kodlamaya başladım. Bir aylık başvuru sürecinin bir haftasını demoya ayırdım. Seçildikten sonra öğrendim ki Github’taki mentorlarımdan biri bu demoyu çok beğenmiş. Seçilmemde büyük katkısı olduğunu düşünüyorum.
Başvuru sürecinde bir diğer önemli kısım ise “Proposal“, başvuru metni. Buna gerçekten çok önem vermeniz gerekiyor. Hatta bölüm hocalarınızdan geri dönüş almanız sizin başvurunuzu çok daha ileri seviyeye getirmenizi sağlayacaktır. Buradan danışman hocam Yrd.Doç.Dr. İzzet Pembeci‘ye de teşekkürlerimi iletmek istiyorum. Kendisi başvuru metnimi geliştirmemde bana çok yardımcı oldu. Kısaca özetlemekgerekirse; bir giriş kısmı (projeye ne kadar hakim olduğunuzu göstereceğiniz, genel bilgiler verdiğiniz yer), neler yapmak istediğiniz kısmı (yaratıcılığınızı göstereceğiniz yer), nasıl yapacağınız kısmı (teknik bilgilerden bahsedeceğiniz kısım), zaman çizelgesi (projeyi gerçekten planladığınızı ve bitirebilecek bilgiye sahip olduğunuzu gösteren yer) ve son olarak da “neden ben?” kısmı olarak başvuru metnimi oluşturdum. “Neden ben?” bölümünde geçmişte yaptığınız açık kaynak katkılarından, projelerinizden bahsetmeniz sizi bir adım öne atıyor. Benim bir artımda Atom’a yaptığım katkılardan dolayı Github’ta çalışan yazılımcılar ile yakınlığım oldu. Çünkü birçoğu ile zaten emailleşip chatleşiyorduk, Github üzerinden tartışıyorduk. Ayrı bir ekip olsada onların referans olduğunu düşünüyorum. Verebileceğim bir tavsiye de ilgilendiğiniz projenin mentorları ile mail listesi ve ya chat kanalları ile direk iletişime geçmeniz sorular sormanız olur. Böylece isminiz hafızalarına yerleşmiş olacak ve sizin ne kadar istekli olduğunuzu görmüş olacaklar.
GSoC’a katılmak isteyecek kişiler, sence öncelikle kendilerini hangi konuda yetiştirmeliler?
İlk önce kendi ilgi alanlarını belirleyip sevdikleri bir dilde açık kaynaklı projeler oluşturmak ve projelere katkıda bulunmak iyi bir başlangıç olabilir. Github bunun için çok iyi bir ortam. Bu katkılar harf hatalarını düzeltmek kadar küçük de olabilir. Çünkü yapacağınız her türlü katkı insanlar tarafından oldukça güzel ve teşvik edici bir şekilde karşılanıyor.
Programlama dili konusunda şu dilleri bilseniz daha iyi olur demem yanlış olur. Size uyan bir dili çok iyi bilmek zaten diğer dilleri öğrenmenizi kolaylaştıracaktır. Ben Java ile başladım, Python’a geçtim ve şimdi çoğunlukla Javascript kullanıyorum. Bence algoritmaları, veri yapılarını, tasarım desenleri iyi bilmek ve nesneye dayalı yazılım geliştirebiliyor olmak, çok dil bilmekten daha önemli.
Güncel teknolojileri takip etmek bir diğer önemli nokta. Twitter, Reddit, HackerNews benim güncel kalabilmek adına kullandığım başlıca platformlar. Ayrıca İngilizce’mi geliştirmemde de çok büyük faydasını gördüm. İngilizce, Summer of Code için en önemli faktörlerden biri. Hem seçilme sürecinde hem de seçildikten sonra İngilizce’yi çok iyi bir şekilde kullanabiliyor olmanız gerekiyor. Çünkü seçildikten sonra mentorlarınızla sürekli chatleşmeniz ve hatta videolu görüşme yapmanız bile gerekebilir.
GSoC’a katılacak kişiler için önerilerin?
Geçen senelerde kabul edilen projeleri inceleyip neler yapılmış fikir sahibi olun. İlginizi çeken açık kaynaklı projelere katkıda bulunmaya çalışın. Kişisel bir websiteniz olsun. Orada projelerinizi gösterebilirsiniz. Github gibi platformlarda paylaşıp sitenizden link verebilirsiniz. Blog yazmaya çalışın. Bunlar derslerde yaptığınız projeler ya da hobi projeleri hakkında olabilir. Bilgi aktarma yeteneğinizi geliştirecektir. İngilizcenizi geliştirin. Son olarak da güncel kalmaya çalışın.
Hindistan’dan birçok kişinin GSoC’a başvurduğunu söylemiştin, sence nasıllar ve Türk arkadaşların başvurularında onları geçmek için neler yapmalı?
Benim gözlemlediğim, çok hırslılar ve ilgililer. Mentorlarla sürekli iletişim halindeler. Mail listesinde ve chat ortamlarında çok aktifler. Yazılım konusunda çok çalışkanlar. Her türlü projeye atıldıklarını söyleyebilirim. Benim önerim onlardan daha aktif olmaya çalışmak, olabildiğince çok proje üretebilmek, projelere büyük-küçük katkılarda bulunmak ve iyi derecede İngilizce bilmek olurdu.
Eklemek istediklerin …
Umarım benden sonra başvuracak arkadaşlara faydalı olur. Ben deneyimlerimi yabancı kaynaklardan edinmek zorunda kalmıştım. Bu röportaj ile bu imkanı sağladığınız için teşekkür ederim hocam.
Çok güzel bir paylaşım oldu. Çok güzel öneriler var, çok teşekkürler.
Hep gurur duyduğumuz bir öğrencimiz oldun, başarılarının devamını bekliyoruz.
Kaynak:
https://enisden.wordpress.com/
Türkiye'den seçilen tüm projeler için
tıklayınız.