in Yazılım

Laravel projesine katkı sağlarken edindiğim tecrübeler

Bu yakınlarda açık kaynak kodlu Laravel projesine katkıda bulundum. Bu yazıda bununla ilgili tecrübelerimi paylaşmak istiyorum.

Proje kurulumu

Öncelikle Laravel/Framework projesini fork etmeniz gerekmektedir. Fork işlemini gerçekleştirdikten sonra sizin için oluşturulmuş olan proje kopyasını bilgisayarınıza çekiniz (git clone). Projeyi çektikten sonra projenin bağlı olduğu kütüphaneleri de çekmek amacıyla composer’i çalıştırınız.

Burada özellikle –dev şeklinde bir kullanım olduğunu gözden kaçırmayın. Bu parametre geliştirme ortamı için gerekli olan bir çok farklı bağımlılıkları da indirmenizi sağlayacaktır.

Testleri çalıştırma

Daha sonra testleri çalıştırmanız gerekmektedir. Bunun için de ilgili proje dizinine gelerek aşağıdaki komutu çalıştırmanız yeterlidir. Sisteminizde phpunit yüklü değil ise öncelikle phpunit yüklemeniz gerekmektedir.

Komutu çalıştırdıktan sonra donanımınıza bağlı olarak testler 5 ile 30 saniye arasında çalıştıktan sonra herhangi bir hata yok ise yeşil ışık yanacaktır. Böylece geliştirme ortamınız hazır, artık katkı sağlamaya başlayabilirsiniz.

Ne yapacağınıza karar verin

Ben Str isimli string işlemleri yapan bir sınıfın eksik unit testlerini yazmak gibi ufak bir katkı sağlamıştım. Siz de aklınızdan geçen değişiklikleri gönderebilirsiniz. Burada önemli bir ayrım gönderdiğiniz şeyin bug fix mi yoksa yeni bir özellik mi olduğu. Buna göre branch oluşturmanız gerekecek. Ayrıca hangi branch’a pull request yapacağınızı da belirleyen etken yaptığınız değişikliğin türüne bağlı olacaktır.

Branch oluşturma

Branch ismi şu formattadır prefix/açıklayıcı-bir-isim. Eğer bir hata giderecekseniz prefix bug olacak. Ancak yeni bir özellik ekleyecekseniz prefix feature olacak. Prefixden sonraki kısmı ise sorununuzu en kısa ve açıklayıcı anlatacak bir isim ile tamamlayınız.

Örneğin benim oluşturduğum branchda eksik testleri tamamladığım için bunu yeni bir özellik değil de bir eksiklik olarak görüp branch prefixini bug olarak belirledim. branch ismim tam olarak şöyleydi bug/added-unit-tests-for-str-class.

Standartlar önemli

Branch isminize de karar verdikten sonra ilgili branch’a geçerek kodlarınızı konuşturun. Ancak ufak tefek bazı şeylere dikkat edin. Kendi yaptığım hatalardan örnek vereyim. Yazdığım test metodları arasında tek boşluk bırakmışım ancak çift boşluk bırakmam gerekiyormuş. Bunun dışında string kullanırken ‘ (tek tırnak) yerine ” (çift tırnak) kullandığım için bunu düzeltmemi istediler. Kısacası söylemek istediğim sizin önemsiz görebileceğiniz noktaları adamlar çok önemsiyorlar ve biraz uğraştırabilirler. Bunu çok da takdir ediyorum çünkü standartlar kesinlikle çok önemli.

İşinizi bitirdikten sonra testleri topluca çalıştırarak bir yerleri bozmadığınızdan emin olunuz. Tabiki yaptığınız değişiklikler ile ilgili yeni testler eklemeyi de ihmal etmeyiniz.

İş ile ilgili issue’yu oluşturalım

Yaptığınız değişiklikleri yollamadan önce bir issue açarak orada yaptığınız değişikliklerden bahsediniz. Eğer hata gidermişseniz hatayı en ufak ayrıntılarına kadar anlatınız. Kullandığınız işletim sistemi vs. gibi bilgileri de aktarmayı ihmal etmeyin. Değişikliğiniz bir geliştirme ise de bunun neden gerekli olduğunu en iyi şekilde ifade etmeye çalışın. Aslında yapacağınız işe bağlı olarak bu adımı en başta yapmanız gerekebilir. Belki de sizin önerdiğiniz değişiklik daha önce de önerilmiş ve mantıklı bir sebepten dolayı reddedilmiştir. Bu sebeple issue oluşturmadan önce oluşturulmuş önceki issueları gözden geçirmeniz faydalı olacaktır. Aynı şekilde hata olarak gördüğünüz şeyler de hata olmayabilir.

Değişikliklerimizi commit edelim

Daha sonra yaptığınız değişiklikleri açıklayıcı bir commit mesajıyla commit ediniz. Commit mesajınıza açtığınız issue numarasını eklemeyi unutmayın (#34 gibi). Bu ilgili değişikliklerin issue içerisinde linklenmesini sağlayarak kodunuzu code review eden kişilere kolaylık sağlayacaktır. Kodunuzu commit ettikten sonra aynı isimli remote branch’a push ediniz.

Commit işlemleriyle ilgili şöyle bir sıkıntı yaşadım. Benden 2 kez değişiklik yapmam istendiği için toplamda 3 commit yapmıştım. Bunları tek commit haline getirmem istendi. Bu işlemi nasıl yapacağınızı şuradan öğrenebilirsiniz.

Continuous Integration engelini aşalım

Push işlemini de yaptıktan sonra fork ederek oluşturduğunuz kopya repoya gelerek burada pull request tuşuna basınız. Böylece pull request oluşturmuş olacaksınız. Pull request oluşturduktan sonra kodlarınız Continuous Integration sunucusunda test edilecek. Burada test edilecek derken aklınıza farklı şeyler gelmesin sadece projenin unit testleri topluca çalıştırılacak. Bir hata var ise pull requestiniz kabul edilmeyerek testleri çalışır duruma getirmeniz istenecek (Otomatik bir mail alacaksınız bununla ilgili)

Code Review

Testlerde herhangi sıkıntı yok ise pull requestiniz merge edilebilir duruma gelecek ve bu aşamada projenin yetkili abileri tarafından review edilecek. Bu kısım en çok sevdiğim kısım çünkü gerçekten kaliteli yazılımcılar sizin yazdığınız kodları okuyor. Burada size yaptıkları eleştirileri kesinlikle kişisel algılamayın yeni bir şeyler öğrendiğiniz için mutlu olun.

Sonuç

Pull Requestiniz kabul edilirse tebrikler Laravel projesinde contributor oldunuz! Edilmezse de üzülmeyin tekrar deneyiniz :) Herşeyden önce projeye katkı sağladığımız gibi, proje de bize katkı sağlayacaktır. Dünya çapında kabul görmüş bir projenin kaynak kodlarını okurken ufkunuzun genişlediğini hissedeceksiniz. Bu bizim aklımıza niye gelmedi diyeceğiniz bir çok kod göreceksiniz. Böylece kendinizi geliştirmiş olacaksınız.