LibreOffice Developer Bootcamp (C++) - Hafta 6 Raporu, LibreOffice’e İlk Yamayı Gönderme, Ödevler ve Daha Fazlası
Beşinci haftada LibreOffice geliştirme süreçlerine giriş yapmış ve derleme/inşa için gereksinimleri kurmuştuk. Ödev ise herkesin LibreOffice derlemesini tamamlayıp QTCreator kurulumunu yaparak gelmesiydi.
Bu hafta, LibreOffice geliştirmeye başlangıç için gerekli kurulumları ve ayarları tamamladık, gereken yerlere üye olduk ve ilk yamalarımızı (commit/patch) gönderdik. Ayrıntılar, slaytlar ve ödevler aşağıda. ;)
Neler Yaptık?
Öncelikle, LibreOffice core kod deposunun bir kopyasını bilgisayarımıza indirdik (git ile klonladık).
git clone https://gerrit.libreoffice.org/core
Bu işlem biraz zaman alacağı için, bu sırada diğer üyelik ve kurulum ayarlarımızı tamamladık ve üzerinde çalışacağımız bir easyHack seçtik. (yeni başlayan geliştirici adayları için seçilmiş/hazırlanmış, katkıda bulunma sürecine aşinalık kazandırmaya yönelik, çok kolay hata kayıtlarına easyHack diyoruz.)
Üyelikler:
- TDF kullanıcı kaydı (Gerrit, TDF Wiki vb. birçok platforma bu kullanıcı hesabıyla giriş yapabileceğiz)
- TDF Bugzilla kaydı (Hata kayıt sistemindeki kayıtlara yorum yapabilmek ve seçtiğimiz bir hata kaydını kendimize atayabilmek için bu üyeliğe ihtiyacımız var)
Gerrit ve İlk Ayarlar
TDF Gerrit, LibreOffice kod tabanına katkıda bulunan geliştiricilerin gönderdikleri yamaların testlerden geçip incelendiği ve kod deposuna işlendiği platformdur. TDF kullanıcı hesabımızla buraya giriş yapabiliyoruz fakat ilk girişte bazı ayarlar yapmamız gerekiyor.
Giriş yaptıktan sonra sağ üstte ismimizin yazdığı yerden Settings/Ayarlar seçeneğine tıklıyoruz ve açılan profil sayfamızda öncelikle kendimize bir kullanıcı adı belirliyoruz. (Dikkat! Bu adı daha sonra değiştiremezsiniz. TDF hesabınızda kullandığınız kullanıcı adıyla aynı olması mantıklı olabilir.)
Daha sonra yine soldaki menüden SSH Public Keys seçeneğine tıklıyoruz ve açılan sayfadaki kutucuğa, SSH açık anhtarımızın (id_rsa.pub) içeriğini yapıştırıp kaydediyoruz. Bu anahtar, Gerrit’e yamalarımızı/commitlerimizi gönderirken kimliğimizi doğrulamamıza yarayacak. (SSH anahtarı nasıl oluşturulur?)
logerrit İlk Ayarlar ve Test
Gerrit’e yamalarınızı/commitlerinizi göndermeyi (ve bunun yanında daha birçok işlemi) kolaylaştırmak için yazılmış, logerrit (LibreOffice Gerrit) adlı bir betiğimiz var ve klonladığınız deponun içinde geliyor. Kullanmaya başlamadan önce bazı ayarlar yapmamız gerekiyor.
Öncelikle şu komutla (terminalde, klonladığımız core dizininin içindeyken) kurulumu başlatın ve ekrandaki yönergeleri dikkatlice okuyarak gereğini yapın:
./logerrit setup
Size gerrit profilinizde belirlediğiniz kullanıcı adını soracak ve aşağıdakine benzer bir çıktı verecektir.
Burada söylendiği gibi, ev (home) dizininiz altındaki .ssh dizini içinde (eğer yoksa) config adlı bir dosya oluşturup ekranda verilen çıktıyı olduğu gibi oraya yapıştırıyoruz ve kaydedip kapatıyoruz. (Host diye başlayan satırın başından, HostName gerrit.libreoffice.org diye biten satırın sonuna kadarki kısım kopyalanıp yapıştırılacak.)
Şimdi de kurulumumuzu sınayalım. Yine uçbirim (terminal) üzerinde core dizinine gidiyoruz ve şu komutu çalıştırıyoruz (ssh anaharınızın parolasını sorarsa giriyoruz ve ilk kez bağlandığı için Gerrit makine kimliğini kaydedip kaydetmek istemediğinizi sorarsa da yes deyip geçiyoruz):
./logerrit test
Eğer herşey yolunda giderse, şuna benzer bir sonuç görmelisiniz:
Bu noktada, LibreOffice derlemesini bitirdiğinizi varsayıyorum.
easyHack Bulmak ve Çözmek
Bütün easyHackler, TDF wiki sayfalarında, beceriye, alana ve zorluk düzeyine göre gruplandırılmış olarak listeleniyor: LibreOffice Easy Hacks by required Skill
Biz bunlardan C++ kategorisi altındaki kolay gruptan (beginner easyHacks), Use pragma once instead of include guards başlıklı olanı seçtik.
Hata kaydı sayfasını dikkatlice okuyup örnek commitleri inceledikten sonra, birkaç dosya seçip değişikliklerimizi yaptık ve make
ve make check
komutları ile sorunsuzluklarından emin olduktan sonra gönderme adımına geçmeye hazır hale geldik.
Git Ayarları ve İlk Commit
Git, özellikle birçok geliştiricinin ortak çalıştığı projelerde sürüm denetimi ve koordinasyonun sağlanması için kullanılan yazılımdır. Gönderdiğimiz yamalarda (başka bilgilerle birlikte) adımız, soyadımız ve e-posta adresimiz bulunur. Bu bilgileri, ilk commitimizden önce belirlememiz gerekiyor. Sırasıyla şu komutları veriyoruz uçbirim üzerinde:
git config --global user.name "Adım Soyadım"
git config --global user.email "eposta@adresim.com"
Şimdi de değişikliklerimizi commitleyelim (yerel kod deposuna işleyelim):
git commit -a -m "tdf#124176: Use pragma once instead of include guards"
Bu komuttaki -a
, dosyalarda yaptığımız tüm değişikliklerin bu işleme dahil edileceği anlamına gelir. -m
ise commit mesajını belirtmek içindir.
Bekle Beni Gerrit!
Şimdi de değişikliklerimizi, otomatik testlerden geçip tecrübeli geliştiriciler tarafından değerlendirilerek LibreOffice kod deposuna işlenmesi için Gerrit’e gönderelim. Uçbirim (terminal) ekranında, core dizini içindeyken:
./logerrit submit master
Tebrikler! LibreOffice’e ilk kod katkınızı göndermiş oldunuz. Şimdi yamamızın testlerden ve değerlendirmeden geçmesini bekleme zamanı. Peki bu arada boş mu duruyoruz? Tabii ki hayır! Hemen bir sonraki easyHack’iniz üzerinde çalışmaya başlayabilirsiniz. :)
Lisans Bildirimini Unutmayın!
Fakat öncelikle, gönderdiğiniz yamanın kod deposuna işlenebilmesi için, ilk yamanızla birlikte bir kereliğine, lisans bildirimi göndererek, kodlarınızın özgür ve açık kaynak lisanslarla dağıtılabileceğini onaylamanız gerekiyor. Bu bildirimi, dünyadaki tüm LibreOffice geliştiricilerinin haberleşme kanalı olan, geliştirici e-posta listesine gönderiyoruz. Burası aynı zamanda, karmaşık bir sorunla karşılaştığımızda derli topluca derdimizi anlatıp yardım isteyeceğimiz yer oluyor.
Listeye abone olmak için: https://lists.freedesktop.org/mailman/listinfo/libreoffice
Lisans metninin nasıl gönderileceği: https://wiki.documentfoundation.org/Development/GetInvolved#License_statement
İletişim Kanalları
- Geliştirici E-posta Listesi: https://lists.freedesktop.org/mailman/listinfo/libreoffice
- Geliştirici IRC Kanalı: FreeNode üzerinde #libreoffice-dev kanalı (bağlanmak için, polari IRC istemcisini kullanabilirsiniz)
- LibreOffice Türkiye Telegram Grubu: https://t.me/LibreOfficeTurkiye
- LibreOffice Geliştirme (Türkçe) Telegram Grubu: https://t.me/LibreOfficeDevTR
Slaytlar
Daha önce ODTÜ Kuzey Kıbrıs Kampüsünde düzenlediğimiz atölye çalışmasının slaytlarını çok fazla bir güncellemeye ihtiyaç olmadan kullandık. Şuradan edinilebilir: LibreOffice Development Workshop Slides - METU NCC
Daha Fazla Ayrıntı ve Asıl Kaynak
LibreOffice geliştirmeye yeni başlayan herkesin baştan sona okuması ve ilgili kısımlarını uygulaması gereken LibreOffice geliştirmeye başlangıç wiki sayfası: https://wiki.documentfoundation.org/Development/GetInvolved
Öğrenci Notları
Sürecin çeşitli aşamalarında çoğunlukla öğrenciler tarafından, benim verdiğim cevapların bir araya getirilmesiyle oluşturulmuş notları şurada bulabilirsiniz (çeşitli komutlar ve açıklamalar): LibreOffice Developer Bootcamp - LibreOffice Geliştiriciliğine Giriş Kursu - İlk Yama için Öğrenci Notları
Ödev
Bundan sonra her hafta bir okuma (ve/veya izleme) ödevi, bir de küçük bir kodlama ödevi vereceğiz. Derste ise her hafta, LibreOffice özelinde ve genel olarak yazılım geliştirmede işe yaraması umulan konular üzerinde durmaya ve zaman yeterse küçük bir uygulama yapmaya çalışacağız. (Bir hata kaydının çözülmesi ya da arayüzde küçük bir değişiklik yapılmasının canlı uygulaması gibi.)
- Okuma ödevleri genel olarak şuradan gelecek: http://www.icce.rug.nl/documents/cplusplus/
- Kodlama ödevleri genel olarak şuradan gelecek: https://www.hackerrank.com
Okuma Ödevi
- http://www.icce.rug.nl/documents/cplusplus/cplusplus03.html
- http://www.icce.rug.nl/documents/cplusplus/cplusplus04.html
- http://www.icce.rug.nl/documents/cplusplus/cplusplus05.html