28 Mart 2016 Pazartesi

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

Merhaba, geçtiğimiz hafta  Özgür Yazılım ve Linux Günleri'nin 15.'si düzenlendi. Benim de katıldığım 5. Özgür Yazılım ve Linux Günleri etkinliği oldu.  

Etkinlik, Bilgi Üniversitesi Santral Kampüsü'ndeydi. Etkinlik boyunca tek gözüme batan problem küçük bir alanda olmasıydı. Katılım oldukça fazla olduğundan sunum aralarında standları gezmek, kocaman bir toplulukla sohbet etmek bir miktar zorlaştı diyebilirim.

Her yıl olduğu gibi Çanakkale'den kalabalık bir ekiple oradaydık. ( +Necdet Yücel +Berk Güreken  +Gülşah Köse +yeliz taneroğlu  +Ayşe Melike Yurtoğlu +Kerem Hallaç +İrem Şendur +Feyza Yavuz +Kader Tarlan  +Burçin Akalın +Beyza Nur Esen ve berfin sarı)

Okulumuzun özgür yazılım gönüllüsü olan mezun öğrencileri ile de görüşüp sohbet etmek her zamanki gibi aşırı zevkliydi. [Yaşasın Kripton :)] Çok sık görüşemediğim ve sohbetini çok sevdiğim insanları böyle etkinliklerde görüp sohbet etmenin tadı da başka tabiki. \o/

Katıldığım ilk sunum, HackerSpace'den Barış Büyükakyol'un "Özgür Yazılım, Özgür Kültür" sunumuydu. Barış, özgür yazılım felsefesini ve neden doğru olanın bu yol olduğunu anlattı.

İkinci katıldığım sunum ise, bahsettiğim mezunlardan +Aydan Taşdemir'in (Reyiz)  "Pgbarman ile Posgresql Yedekleme" sunumuydu. Pgbarman, sistem yönetimi alanında kullanılan bir araç olduğundan ilgiyle dinledim. Bu araç için Aydan da bir özellik eklemiş. Sunumda bize bu özelliği de anlattı.

İkinci gün, katıldığım ilk sunum Necdet Yücel ve +Kaan Ozdincer 'in "Yine Yeniden Özgür Yazılım" sunumuydu. Evet özgür yazılım diyoruz, başkalarını da yanımıza çağırıyoruz fakat bunu yaparken neleri yanlış yapıyoruz, nelerin üzerinde durup bu çağırma işini doğru yapmalıyız soruların tüm cevapları sunumdaydı :) 

Örneğin, özgür yazılım lisansı ile lisanslanmış bir yazılıma açık kaynak diyerek, hiçbir lisansı olmayıp kodlarını görebildiğimiz yazılıma da açık kaynak diyerek yanlış yapıyoruz. "virüs yok", "bedava" diyerek de karşı tarafı yanlış taraftan ikna etmeye çalışıyoruz aslında. Şimdilerde özgür yazılım gibi görünen ama hiç de öyle olmayan yazılımlar için özgür yazılımı ve felsefesini doğru anlamalı, anlatmalı topluluğun temelini sağlam tutmalıyız. Topluluk herşeydir :) Umarım bu sunumu başka bir etkinlikte dinleme şansı bulursunuz.

Sonrasında +Halil Kaya  ve Fatih Kadir Akın(fkdev)'ın "Türkiye’de Hackathon Kültürü ve Özgür Hackathon’lar" sunumuna katıldım. Bu sunumda da Hack kültürünü, son zamanlarda gerçekleşen hacathonların temel felsefeden biraz uzaklaştıklarını ve aslında Hackathon kültürünün nasıl olması gerektiğini anlattılar.


Gelelim bizim "LibreOffice Geliştirme ve Yaygınlaştırma" toplantımıza :)
Toplantımız 2 kısımdan oluşuyordu. Öncelikle ekipten herkes gibi, ben de eylülden beri LibreOffice için nasıl özellikler eklediğimden bahsettim. Bu çalışmamın bana Mozilla tarafında nasıl bir kapı açtığını anlattım. Ekip oldukça kalabalıktı(13 kişi) ama süre azdı malesef. İçimizden arayüz ile ilgilenenlerin ne yaptıklarını sunuma eklemiştik. Merak edenler  buradan bakabilir.

2.kısımda da temel 2 soru üzerine konuştuk: "Geliştirme için bizden başka neden kimse yok, bu sayıyı nasıl arttırırız" ve "LibreOffice kullanımını nasıl arttırabiliriz?" Toplantıya katılamayıp buradan okurken bir fikri olan okuyucular da düşüncelerini paylaşırlarsa seviniriz :)

Etkinlikte bolca sticker topladığım, bir tane LoL tişörtü ve bardak altlığı edindiğim bilgisini ekleyeyim :)


Yazıyı bitirmeden önce Chris Stephenson hocayı da gördüğüme çok sevindiğimi söylemek isterim. Hoş kalın :)

23 Mart 2016 Çarşamba

Mozilla Çalışmalarım 1


Herkese merhaba, bir miktar harikalı haber ile geldim :)

Bir önceki yazımda Mozilla'nın bir ürünü olan Balrog üzerinde çalıştığımdan bahsetmiştim.

Balrog, "backend server" ve "admin ui" şeklinde 2 bölümden oluşuyor. Admin-ui kısmı Github'da Balrog projesinin bir alt modülü şeklinde duruyor.

Ben de birkaç gün önce arayüz ile ilgili olan hata kaydıyla ilgili çalıştım. Kısaca istenen , Balrog'a eklenen kuralların  ID bilgisinin de arayüzde görünmesiydi.




İstediklerini yapıp Github'dan PR yolladım. Birkaç dakika içinde PR'in kabul edilmesinin yanında balrog-ui deposuna yazma hakkı da verildi. Arkasından da Balrog proje geliştiricisi tarafından onaylanıp, mozillian oldum.

Bu da halaya davet fotoğrafı ^-^



Mozilla tarafında işlerin benim açımdan hızlı ilerlemesinin en büyük kaynağının, öncesinde LibreOffice ve Linux Kernel gibi uluslararası projelere katkıda bulunmuş olmam olduğunu düşünüyorum.

Daha güzel haberler vermek üzere, hoş kalın :)

20 Mart 2016 Pazar

Balrog Nedir? Nasıl Çalıştırılır?

Balrog, Firefox'un ve diğer mozilla ürünlerinin kullandığı uygulama güncelleme servisi(AUS).  Veritabanı modeli "Rules(Kurallar)"  ve "Release(Sürüm)"  şeklinde 2 grupta toplanıyor. Bu 2 grubun da alabildiği tipler ve özellikler var. Burada çok güzel bahsedilmiş. Ben makinama nasıl kurup ayağa kaldırdım kısaca ondan bahsedeceğim.

Geliştiriciler github'ı aktif kullanıyor. Proje "backend server" ve "admin ui" olmak üzere 2 kısıma ayrılmış şekilde bulunuyor. Depoyu yerelimize çektikten sonra (" $ git clone https://github.com/mozilla/balrog")  ui ile ilgileneceksek alt modülü başlatıp ui kaynak kodunu da projeye eklemeliyiz.

$ git submodule init
$ git submodule update

Ayrıca ui için gerekli modülleri de indirmeliyiz.

$ npm install
$ npm install -g lineman

Son olarak Balrog'u ayağa kaldırmak için "docker-compose up" komutunu vermeliyiz. Bu komutla gerekli olan 3 conteiner (balrog_balrogdb_1, balrog_balrogadmin_1 vebalrog_balrogpub_1) oluşturulup başlatılıyor. uwsgi, dizinindeki run.py çalışırken kontrol çıktısının

 "balrogpub_1   | Python auto-reloader enabled

olduğunu görebildiysek "http://127.0.0.1:8080" den balrog admin sayfasını görebiliriz. Görüşmek üzere.


17 Mart 2016 Perşembe

Kaynak Koddan Firefox Kurulumu ve Firefox İçin Yama Göndermek

Özgür yazılım dünyasının 3 büyük projesinden(Linux Kernel, LibreOffice, Firefox) birisi de Firefox. Herkesin de bildiği ve kullandığı gibi Mozilla Vakfı tarafından geliştirilen özgür bir ağ tarayıcısı.
Geçtiğimiz cuma, biraz da Firefox ile ilgileneyim diyip kolları sıvadım :) Bu birkaç günde neler öğrendiğimi sizlerle paylaşmak istedim.

Büyük bir projeye katkı vermeden önce kaynak kodundan 1 defa derleyip o halini kullanmak, o projeye katkı vermeden önce yapılması mantıklı bir iş. Deponun geliştirilmekte olan halini kullanmak eklenen-çıkarılan kısımları görüp hatalı yerleri raporlama ya da bu kısımlarla ilgili ters giden yerleri düzeltebilme imkanı sağlıyor.

DERLEMEYE HAZIRLIK:

Derlemeden önce bağımlılıklar için geliştiricilerin yazdığı python dosyasını buradan çekip çalıştırmamız gerekiyor.
$ wget -q <link> && python bootstrap.py
ya da
$ curl -O <link> && python bootstrap.py

KAYNAK KODU YEREL DEPOYA ÇEKERKEN:

Firefox, mercurial sürüm takip sistemini kullanıyor. Git ile entegre çalışıyor. Ben öğreneyim diye mercurial ile depoyu çektim. Mercurial kullanımıyla ilgili buraya bakabilirsiniz.

$ hg clone https://hg.mozilla.org/mozilla-central


YAPILANDIRMA:

 Dilerseniz derleme sırasında bazı özellikleri etkinleştirmek/devre dışı bırakmak için "mozconfig" dosyası oluşturup içini istediğiniz şekilde yapılandırabilirsiniz:
ac_add_options --enable-debug
ac_add_options --disable-optimize
DERLEME: 
$ ./mach mercurial-setup
$ ./mach build 
ÇALIŞTIRMA:
$ ./mach run






YAMA YOLLARKEN: 
İlk aşamada yama yollarken mercurial ile bir yama dosyası oluşturup, hangi hata kaydı için düzeltme yaptıysanız *.patch dosyasını ekleyebilirsiniz.

Yama dosyası hazırlarken de kullanacağımız komut "$ hg qnew *.patch " ve değişiklikleri yama dosyasına eklemek için de "hg export . > *.patch" komutları. 


Yardımcı linkler:

- Derleme ile ilgili ayrıntılı bilgi için tıklayın.

- Kaynak kodda arama yapmak için tıklayın.

- Mozilla hata kaydı sayfası için tıklayın.


Güzel haberler vermek dileğiyle hoş kalın :)

15 Mart 2016 Salı

Mercurial vs Git

Bir proje üzerinde çalışırken, sürüm takip sistemi kullanmak projenin sağlığı açısından çok büyük öneme sahip. Kullanınca ne oluyormuş ya, diyenler için:

* Masaüstünüzdeki "proje_son.*", "valla_bu_son.*", "valla_son_v2.*" gibi dosyaların çoğalmasını engelleyip masaüstü arkaplanınızı net görebilmenize yardımcı olur.
* İşletim sisteminize birşey olsa da (bilgisayarınıza kahve dökseniz bile) projeniz uzak depoda da bulunduğu için içiniz bir miktar rahat olur.
* Projenin önceki versiyonlarına rahatça dönebilirsiniz.
* Dünyanın bir ucundaki proje ortaklarınız ile rahatça çalışabilirsiniz.

Kısacası yukarıda "Yıl olmuş 2016 sürüm takip sistemi kullanmayan mı kaldı" demek istiyorum.

Mercurial da bir sürüm takip sistemi aracı. Çok büyük kısmı Python ile yazılmış. GNU/Linux, Unix-benzeri sistemler, FreeBSD, Mac OS X ve MS Windows işletim sistemlerinde kullanılabiliyor.
 
Ben şimdiye kadar hep Git kullanmıştım. Git, dünyada çok yaygın şekilde kullanılan, oldukça marifetli bir araç. Linux çekirdek geliştiricileri kendi ihtiyaçları doğrultusunda geliştirmiş ve büyük bir kitlenin kullanıldığı bir araç hale gelmiş.

Mercurial'ı öğrenmek için belgelerini okurken şunu gördüm; eğer bir araç gerçekten ne işe yaradığını bilerek, iyi kullanılıyorsa, aynı işi yapan başka bir araca çok az zamanda uyum sağlanıyor. 

Ubuntu 15.04 mercurial kurulumu için: 

    $sudo apt-get install mercurial meld

GİT(git)                       MERCURİAL(hg)

git pull hg pull -u
git fetch hg pull
git reset --hard hg update -C
git revert <commit> hg backout <cset>
git add <new_file> hg add <new_file>
git grep <search> hg grep <search>
git commit -a hg commit
git commit --amend hg commit --amend
git blame hg blame or hg annotate
git blame -C (closest equivalent): hg grep --all
git bisect hg bisect
git rebase --interactive hg histedit <base cset>
git stash hg shelve
git merge hg merge
git cherry-pick <commit> hg graft <cset>
git rebase <upstream> hg rebase -d <cset>
git checkout HEAD hg update
git log -n hg log --limit n
git push hg push


Ayrıntılı karşılaştırmaya buradan ulaşabilirsiniz.
Görüşmek üzere :)