Açık kaynak dağıtık kod geliştirme ortamları için metrik önerileri
Proposing metrics for open source distributed code development platforms
Yazar: ABDULKADİR ŞEKER
Danışman: PROF. DR. BANU DİRİ
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Doktora, 2021
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Ö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 odaklanılmamış olan, açık kaynak kod versiyonlama platformları için proje önerisi problemi ortaya çıkmaktadır.

Geliştirici metriklerinin üretilmesinde, genellikle geliştiricinin geçmiş 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ı geliştirici metriği önerilmiştir. 

Önerilen söz konusu metriklerin proje-geliştirici 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, değerlendirme 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ğını 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.

Abstract:
GitHub offers a collaborative environment of millions of developers and code hosting and repository for over 100 million projects. In the code development processes in this environment, it is provided that various information about the developers is obtained from the activities carried out by the developers and their relationships in the platforms. Thanks to its wide variety of features, researchers benefit from the GitHub platform to solve a wide range of software development challenges.

Within the scope of this thesis, an open source dataset called GitDataSCP, which can be used for different software engineering challenges, is easy to access, small in size in terms of implementations, and comprehensive in terms of data.

On platforms like GitHub with millions of projects, it is very difficult for developers to discover projects that they will be interested in or contribute to. Projects are run and expanded by volunteer developers, especially when considering large open source projects. Being able to find the correct projects by the developers will not only help the developer with the problems they have in their projects but also contribute to the projects they discover. At this point, the problem of project recommendation arises for open source code versioning platforms, which is not so much focused in the literature due to some disadvantages.

Past activities of the developers are often used to generate developer metrics. Within the scope of this thesis, it is aimed to produce developer metrics from the activities carried out by the developers in the GitHub environment from the issue, commit, pull request processes. In order to determine candidate developer metrics from these activities, the usage rates of the activities in the GitHub environment were examined. In addition, a survey was conducted with 130 developers to determine the importance of the activities. After these stages, 40 different developer metrics were proposed using various approaches.

In order to evaluate the contribution of the proposed metrics in terms of project-developer relationship, GitHub project recommender system was developed. The parameter that makes the GitHub project recommender system more challenging than ordinary recommender systems is the lack of a fundamental truth for evaluation. Within the scope of this thesis, two different evaluation methods, which we named as community relationship and language experience, are proposed in order to determine the accuracy of the recommender system.

According to the results of the recommender system, the successes of the metrics obtained with different approaches have been revealed. The results of the metrics associated with comments made in different processes show that on projects, as well as coding, also commenting strongly represents the project-developer connection. In addition, the success of the metrics obtained from the activities performed in the issue and pull request processes shows the importance of these two features.

From the proposed metrics, combining certain types of activities, developer metrics called fusion metrics have proved to surpass others. Furthermore, binary fusion metrics that ignore the amount of activity, based only on whether it exists in a project, have also yielded surprisingly successful results. The developer metrics proposed in this thesis are thought to be improvable and applicable to different software engineering problems.