Özet:
GitHub, milyonlarca geliştiricinin işbirliği yaptığı bir ortam ve 100 milyondan
fazla proje için kod barındırma ve depo hizmeti sunmaktadır. Bu ortamdaki
kod geliştirme süreçlerinde geliştiricilerin yürüttüğü aktivitelerden ve ortamdaki
ilişkilerinden, geliştiriciler hakkında farklı bilgilerin elde edilmesi sağlanmaktadır.
Çok çeşitli özellikleri sayesinde araştırmacılar, geniş yelpazedeki yazılım geliştirme
zorluklarını çözmek için GitHub platformundan yararlanmaktadır.
Bu tez kapsamında, farklı yazılım mühendisliği zorlukları için kullanılabilecek, erişimi
kolay, uygulama açısından küçük boyutlu ve veri bakımından kapsamlı olan ve
GitDataSCP adı verilen açık kaynaklı bir veri kümesi tarafımızdan üretilmiştir.
GitHub gibi milyonlarca projenin bulunduğu platformlarda geliştiricilerin ilgi
duyacakları veya katkı sağlayacaklar projeleri keşfedebilmeleri oldukça zordur.
Özellikle açık kaynaklı büyük projeler ele alındığında, projeler gönüllü geliştiriciler
tarafından yürütülmekte ve genişletilmektedir. Geliştiricilerin doğru projeleri
bulabilmesi hem geliştiriciye kendi projelerinde takıldığı sorunlarda yardımcı olacak,
hem de keşfettiği projelere katkı vermesini sağlayacaktır. Bu noktada, bazı
dezavantajlarından dolayı literatürde çok fazla odaklanmamış olan, açık kaynak kod
versiyonlama platformları için proje önerisi problemi ortaya çıkmaktadır.
Gelistirici metriklerinin üretilmesinde, genellikle gelistiricinin geçmi¸s aktiviteleri
kullanılmaktadır. Bu tez kapsamında, GitHub ortamındaki geliştiricilerin issue, commit, pull request süreçlerinde yürüttüğü aktivitelerden geliştirici metrikleri üretmek
amaçlanmıştır. Bu aktivitelerden aday geliştirici metriklerini tespit edebilmek için
aktivitelerin GitHub ortamındaki kullanım oranları incelenmiştir. Ayrıca aktivitelerin
önemini tespit edebilmek için 130 geliştirici ile bir anket çalışması da yapılmıştır.
Bu aşamalardan sonra, çeşitli yaklaşımlar kullanılarak 40 farklı gelistirici metriği önerilmiştir.
Önerilen söz konusu metriklerin proje-gelistirici ilişkisi açısından katkısının
değerlendirilmesi için, bir GitHub proje öneri sistemi geliştirilmiştir. GitHub
proje sistemini sıradan öneri sistemlerinden daha zorlu kılan taraf, degerlendirme için
temel bir gerçeğin olmamasıdır. Bu tez kapsamında, öneri sisteminin doğruluğunun
tespit edilebilmesi için topluluk ilişkisi ve dil deneyimi olarak isimlendirdiğimiz 2
farklı değerlendirme yöntemi önerilmiştir.
Öneri sisteminin sonuçlarına göre farklı yaklaşımlar ile elde edilmiş metriklerin
başarıları ortaya konulmuştur. Farklı süreçlerde yapılan yorumlar ile ilişkili metriklerin
sonuçları, bir projede kod yazmanın yanı sıra yorum yapmanın da proje-geliştirici
bağımı güçlü bir ¸şekilde temsil ettiğini göstermektedir. Ayrıca, issue ve pull request
süreçlerinde yapılan aktivitelerden elde edilen metriklerin başarısı da bu iki özelliğin önemini göstermektedir.
Önerilen metriklerden, belirli türdeki aktivitelerin birleştirilmesinden oluşan, füzyon
metrikler adı verilen geliştirici metriklerinin, diğerlerine oranla daha üstün geldiği
görülmüştür. Ayrıca, bir aktivitenin miktarını göz ardı eden, sadece bir projede var
olup olmadığını baz alan ikili füzyon metrikleri de ¸şaşırtıcı derecede başarılı sonuçlar
vermiştir. Bu tezde önerilen geliştirici metriklerinin iyileştirilebilir ve farklı yazılım
mühendisliği problemlerine de uygulanabilir olduğu düşünülmektedir.