28 Nisan 2014 Pazartesi

Muğla Özgür Yazılım Semineri - 2014

Bu yıl yine Muğla Sıtkı Koçman Üniversitesi'nde özgür yazılımlar hakkında konuşmak için gittik. İlk konuşmayı Necdet hoca yaptı. Sonrasında ben "Bilgisayar Mühendisliği Öğrencilerine Tavsiyeler" konulu bir sunum yaptım. 4 yıl boyunca karşılaştığım şeyleri ve nasıl yapsak daha iyi olacağından bahsettim.

Konuşma sırasında birkaç yeri atlamışım. Eksik kaldığını düşündüğüm yerleri ara verdiğimizde arkadaşlarla bir araya gelerek konuştum. Benim bahsetmediğim yerlerden Doruk Fişek benden sonraki sunumunda bahsetti. Atladığım alt başlıklar kendimizi geliştirmeyi sadece iş imkanı olarak görmemek, yapacağımız işte heyecanlı olmak, severek çalışmak ve birkaç şey daha. Heyecanlı olmak kısmını ise konuşurken uygulamalı bir şekilde gösterdim bence :) Sunumun slaytlarına buradan ulaşabilirsiniz.

Aybüke ve Gülşah birlikte çekirdeğe katkı sürecinden bahsetti. Aslında daha çok git kullanımından bahsettiler.

Muğla'da üç gün kaldık. Esra ve ailesi hepimizi evinde misafir etti. Hafta sonu Aydan, Simge ve Merve geldiler. Bol bol gezdik, eğlendik ve ilk vine videomuzu çekmiş olduk :). Aslında her şey Aybüke'nin kaza ördek demesiyle demesiyle başladı. "O ördek değil kaz" konulu videomuza buradan ulaşabilirsiniz.

Bu dönem çok sıkılmıştım benim için çok güzel bir etkinlik ve devamında tatil oldu. Esra'ya bizi evinde misafir ettiğinden, Necdet hoca ve Enis hocaya etkinliği düzenlediklerinden çok teşekkür ediyorum.

Bunlar da etkinlikten birkaç kare :)




23 Nisan 2014 Çarşamba

Yeni Başlayanlar İçin Linux Kernel Araçları

Yorucu bir vize haftasının ardından tekrar kendimi geliştirmek için çalıştığım şeylere devam ediyorum. Aslında devam etmeye çalışıyorum çünkü gerçekten çok yorulmuşum :(. Bir de son sınıf olunca sanırım insan kendini daha çok yorulmuş hissediyor.

Linux Kernel için okuduğum şeylere devam ediyorum. Bugünlerde çekirdek geliştiricisi olmanın ne kadar güç bir şey olduğunu anlamam konusunda zirveye ulaşıyorum. Linux Kernel'a yeni başlayanlar için hazırlanan sitelerde hep bu resmin olması da bana bir işaret olabilir :)



Elbette çekirdek geliştiriciliğinin kolay bir şey olmadığının herkes gibi biliyorum. Ancak okuduğum bir yazıyı anlamak için bir kaç kere okumak, her belgenin çok uzun olması, bir çok satırda ne söylenilmek istenildiğini tam anlayamayıp on tane daha yere bakmak biraz yorucu. Bir de hatanın hangi durumlarda oluştuğunu anlayıp, o kod içerisinde oluştuğunu anlayamamak bir problem. Örneğin paylaşımlı veri yapıları ile ilgili problemleri çözebiliriz ancak o veri yapısı paylaşımlı mı nasıl anlayacağız :) gibi.

Aslında geliştiricilik olmasa bile daha güzel katkılar vermek istiyorum. Çünkü çalıştığım ilk bir ayda checkpatch.pl, sparse ve çok az coccinelle kullandım. Bunlar statik ve en temel araçlar.

checkpatch.pl ile gönderilen yamalar geliştiricilerin de okumaktan biraz sıkıldığı yamalar. Sparse ise derleme sırasında hata vermeyen ancak statik yazılım denetimi yapan ve Torvalds tarafından başlatılan bir proje. 

Coccinelle ise tüm bunlardan daha farklı. Kendine özel Smpl (Semantic Patch Languange) ile yazılan anlamsal betiklerden oluşuyor. Cocci kullanırken kendimiz bir hata tipi seçiyoruz. Bu hata tipi sparse, checkpatch.pl ya da başka bir araçla alınan ya da kendi belirlediğimiz bir hata tipi olabilir. Sparse hatalarını .cocci betikleriyle düzeltmek zor. Çünkü Sparse hatalarını çözmek için tek bir standart yok ancak checkpatch.pl öyle değil. Belirlediğimiz bu hata tipi için genelde formal diller adı altında geçen statement, expression, identifier gibi kavramlarla bir şablon oluşturuyoruz. Bu hatanın çözümü için ise yine kendimiz başka bir şablon oluşturuyoruz. Aslında betikte hem hatayı hem de çözümü bir şablon halinde belirtmiş oluyoruz.

Çalıştığım bir aylık süreçte bu üç aracı öğrendim diyebilirim. Bir de smatch var ama ben kendisini hiç kullanmadım :) Bugünlerde ise modüller için dinamik test etme araçlarına bakmaya karar verdim. Hangi araçlar olduğu ve nasıl kullanıldıkları hakkında henüz bir fikrim yok :) ama standart olarak hiç fikrimin olmadığı şeylere en baştan bakıyorum. Bir de çekirdek geliştiricileri çok yoğun olduklarından çok fazla cevap atmıyorlar listelerde ya da irc'de. Bir de sanırım bu kural gibi, sana verilen bir işi listelerde sormadan kendin yapmalısın.

Geçen gün Linux Kernel katkıcısı olmak için düzenlenen Eudyptula Challenge sürecini gördüm. Aslında ortada bir challange yok :) Kendimiz basitten karmaşığa driver yazmaya başlıyoruz. Bu süreçte de her işi kendin yapmalısın ve listelerde ya da irc'de sormayın diye kesin bir şekilde belirtmişler. Bu Opw için de geçerli miydi bilmiyorum. 

Önümüzdeki günlerde Muğla ve Eskişehir'de sunum yapacağım. Döndükten sonra Linux Kernel ile ilgili okuduğum şeylere devam etmeyi ve Sparse, Cocci kullanımının nasıl olduğunu burada yazmayı düşünüyorum.