shallow focus photography of computer codes

Paket/Repository Seçerken Dikkat Edilmesi Gerekenler

Yazılımlar günümüzde paketlerin doğrudan ya da özelleştirildikten sonra kullanımının üzerine inşa edilmekte. Peki ama her paketi projeye doğrudan dahil etmek doğru mu? Tabii ki hayır…

Nasıl evimize her kapıdan geçeni almıyorsak, paketleri seçerken çok daha özenli ve dikkatli olmalıyız. Zira zamandan tasarruf edip fayda sağlayacakken, gelecekte bizim için geliştirmeyi engelleyici baş belası ayak bağları olabilirler.

Devam etmeden önce aşağıdaki yazımı okumanızı şiddetle tavsiye ederim.

Peki paket seçiminde doğru karar verebilmek için nelere dikkat etmeliyiz?

Öncelikle belirtmek isterim ki bu öneriler benim şahsi görüşümdür. Ben bu kriterlere olabildiğince dikkat ederek paket seçiyorum sizler bunların tamamına katı şekilde uymak vs. durumunda değilsiniz öneri niteliğindedir 🙂 10 küsür yıllık geliştirme hayatımda (Yıl: 2020) bunların tamamının kusursuz olduğu bir pakete henüz denk gelmedim, kıyaslarken hangi paket daha fazla artıya sahipse onu tercih etmekteyim. Belirttiğim kriterler önem derecesine göre sıralanmamıştır.

Açık Kaynak Olması
Açık kaynak olması ihtiyaç duyarsanız kişiselleştirebilmemiz, bir topluluk oluşabilmesi ve güvenliğimiz için önemlidir. İyi niyetimizi bozmamakla beraber kapalı paketlerin içerisinden ne çıkacağını bilemeyiz. Bu nedenle açık kaynak olmayan paketleri kullanırken bu riskleri üstlendiğimizi unutmamamız gerekir.

Döküman + Örnek Yeterliliği
Dökümanının ya da örnek kullanımlarının olması zaten vazgeçilmez fakat bunların ne kadar yeterli olduğunu değerlendirmeliyiz. Dökümanları ya da örnekleri eksik paketlerde kullanımları keşfetmek ciddi zaman maliyetleri doğurabilir.

Testlerinin/Test Edilebilir Olması
Tercih edeceğimiz paketlerin en azından birim testlerinin (unit tests) olması iyi olacaktır. Bu bize paketin yayınlayan kişi/kurumun test edilebilir kod yazdığını ve en azından test kültürü hakkında bilgi sahibi olduğunun sinyalini verir. Bu durum paketin kod kalitesi için bir gösterge olur.

Değişiklik Kayıtları (Change Logs)
Varsa; geçmiş sürüm yükseltmelerindeki değişiklik kayıtlarını incelememiz faydalı olacaktır. Bu kayıtlardan sürüm yükseltmelerinde bozan değişiklikler (breaking changes) ile karşılaşıp/karşılaşmayacağımız hakkında bilgi edinebiliriz. Ayrıca bu kayıtların döküman kalitesi ortaya konulan işin kalitesine bir gösterge niteliğindedir.

Güncellenme Sıklığı
Paketin en son ne zaman güncellendiği, ne sıklıkla güncellendiği önemli bir göstergedir. Bu gelecekte olası sürüm yükseltme engelleri ile karşılaşmayacağınıza dair güven arttıran bir sinyaldir.

Takipçi/Kullanıcı + Fork Sayısı
Paketi kaç kişinin takip ettiği ve kullandığı önemli bir referanstır. Eğer büyük bir paketten bahsediyorsak kullanan ya da takip eden kişilerin profillerine bakıp referans alabiliriz. Alternatiflerine göre çok tercih edilen paketler topluluk gücü bakımından daha avantajlıdır. (Yeni yayınlanan paketlerde bunu göz ardı etmeniz gerekebilir.)

Talep Durumları
Kullanıcıların açtığı geliştirme talepleri, vaka sayısı yine önemli bir referanstır. Hatta bu taleplerin çözümlenme süreleride yine anlam ifade eden bir göstergedir. Eğer kullanıcı talepleri sayısı çok ve geçmişte açılan talepler hızlı kapanmışsa bu reponun dinamik olduğuna bir işarettir.

Katkıda Bulunan Geliştirici Sayısı
Eğer paket bir kişi tarafından geliştiriliyorsa bu tüm taleplerin vs. yine tek bir kişi tarafından eritilebileceği anlamına gelir. Bu durumda talepler yavaş karşılık bulabilir ya da güncellenme sıklığı seyrek olabilir. Birden fazla kişinin katkıda bulunduğu paketler nispeten daha iyidir.


Katkıda Bulunan Geliştiriciler
Buna çok nadirde olsa bakıyorum. Bu pakette hangi geliştiricinin kaç commiti var, kendi profillerindeki repolar nasıl vs. Bu geliştiricilerin kod stilleri ve kaliteleri hakkında ön bilgi edinmemizi sağlar.

Commit/Release İçeriği ve Sayısı
Pakete atılan commitlerin içeriği ve release içerikleri hassas noktalardır. Atılan commit mesajlarının anlaşılabilir olması, içeriğinin anlamlı olması gelecekte pakete katkı sağlayabilmemiz ve geliştirebilmemiz için önemlidir.

Lisans Durumu
Eğer ilgili paketin lisansı ticari kullanımlara/değişikliklere vs. izin vermiyor, ise ve siz ticari bir ürün geliştiriyorsanız başınızı ağrıtabilir. Bu nedenle dikkat etmekte fayda vardır.

Stack Overflow Durumu
Stack Overflow’da paket adıyla aramalar yapıp insanların karşılaştığı sorunları ve sorunun çözümünü sağlayan yanıtın geldiği zamanları değerlendirmek başınız dara düştüğünde sorununuzun ne kadar hızlı çözülebileceği ile ilgili bir sinyaldir.

İçinize sinen paketleri bulabildiğiniz ve eksik gördüğünüz noktaları tamamladığınız Pull Request’lerin kabul gördüğü günler görmeniz dileğiyle 🙂