Prevedere i Contributori a Lungo Termine nel Codice Aperto
La ricerca identifica i fattori chiave che influenzano la retention dei developer nei progetti open source.
― 5 leggere min
Indice
- Comprendere le Unità di Conoscenza (KUs)
- Metodologia di Ricerca
- Raccolta Dati
- Definizione dei Collaboratori di Lungo Termine
- Ingegneria delle caratteristiche
- Costruzione del Modello
- Risultati Chiave
- Performance del Modello KULTC
- Importanza dell'Expertise degli Sviluppatori
- Combinazione di Caratteristiche per una Migliore Predizione
- Sviluppo di Modelli Economici
- Conclusione
- Fonte originale
- Link di riferimento
I collaboratori di lungo termine (LTC) sono sviluppatori che restano e contribuiscono attivamente a progetti open source per un lungo periodo. Portano valore a questi progetti condividendo le loro conoscenze e il loro codice. Tuttavia, molti sviluppatori lasciano questi progetti presto. Se possiamo prevedere quali sviluppatori sono più propensi a diventare LTC, i manutentori dei progetti possono fornire loro risorse e guida sin dall'inizio, il che può aiutare a migliorare il retention.
Di solito, gli sviluppatori si uniscono ai progetti open source per imparare e far crescere le loro competenze, in particolare nei linguaggi di programmazione. Le competenze che sviluppano possono influenzare se continuano a impegnarsi in questi progetti. Mappando le competenze nei linguaggi di programmazione degli sviluppatori e comprendendo come i progetti utilizzano questi linguaggi, possiamo identificare quali sviluppatori sono più propensi a diventare LTC. Studi precedenti si sono concentrati principalmente su altri aspetti e non hanno considerato le competenze nei linguaggi di programmazione. Questo lavoro mira a colmare quella lacuna studiando le Unità di conoscenza (KUs) nel linguaggio di programmazione Java per prevedere gli LTC.
Comprendere le Unità di Conoscenza (KUs)
Le KUs rappresentano le capacità chiave disponibili nei linguaggi di programmazione. In Java, queste includono costrutti di base e caratteristiche specifiche offerte dalle sue API, come la creazione di thread per la concorrenza. Ogni KU è un gruppo di competenze correlate che gli sviluppatori possono usare per costruire le loro applicazioni. Analizzando l'impegno degli sviluppatori con queste KU, possiamo ottenere intuizioni sulla loro esperienza e prevedere i loro contributi ai progetti open source.
Metodologia di Ricerca
Raccolta Dati
Per condurre questo studio, abbiamo selezionato 75 progetti Java attivi da GitHub che avevano un numero significativo di follower. Ci siamo concentrati sulla raccolta di dati sulle commit e informazioni sulle pull request per questi progetti.
Il primo passo è stato raccogliere dati sugli sviluppatori che hanno contribuito a questi progetti. Abbiamo collegato con attenzione i dettagli dei loro account GitHub con i nomi usati nelle loro commit per mantenere l'accuratezza. Questo passaggio ha assicurato che considerassimo solo sviluppatori con un impegno verificabile nei progetti studiati.
Definizione dei Collaboratori di Lungo Termine
Un sviluppatore è classificato come LTC se commette una quantità sostanziale di codice e rimane impegnato con un progetto nel tempo. Per questo studio, abbiamo esaminato le attività degli sviluppatori su diversi periodi: 1 anno, 2 anni e 3 anni.
Ingegneria delle caratteristiche
Abbiamo costruito un modello predittivo chiamato KULTC che utilizza caratteristiche basate sulle KU su cinque diverse dimensioni. Queste dimensioni includono:
- Expertise degli Sviluppatori nei Progetti Studiati: Questo si riferisce alle competenze che gli sviluppatori mostrano nei primi giorni dei loro contributi ai progetti studiati.
- Expertise degli Sviluppatori nei Progetti Precedenti: Questo tiene conto delle competenze che gli sviluppatori hanno acquisito da altri progetti prima di unirsi a quelli studiati.
- Expertise dei Collaboratori nei Progetti Studiati: Questo cattura le competenze dei collaboratori degli sviluppatori negli stessi progetti, evidenziando l'impatto di lavorare accanto a sviluppatori esperti.
- Caratteristiche dei Progetti Studiati: Questa dimensione descrive le caratteristiche dei progetti quando nuovi sviluppatori si uniscono, illustrando il loro allineamento con gli interessi degli sviluppatori.
- Caratteristiche dei Progetti Precedenti: Questo riflette i progetti precedenti degli sviluppatori e come si relazionano alle competenze necessarie nei progetti studiati.
Costruzione del Modello
Abbiamo usato l'Algoritmo Random Forest per creare il modello KULTC basato sulle caratteristiche raccolte durante la nostra ricerca. Questo approccio di machine learning è noto per la sua efficacia nei compiti di classificazione. Abbiamo valutato la capacità del modello di prevedere gli LTC usando una misura nota come Area Sotto la Curva (AUC), con un punteggio più alto che indica migliori performance predittive.
Risultati Chiave
Performance del Modello KULTC
Il modello KULTC è riuscito a ottenere un AUC mediano di almeno 0.75, indicando una forte performance predittiva. Rispetto ai modelli esistenti, KULTC ha superato gli altri, specialmente nella previsione degli LTC nei primi due anni di contributo ai progetti.
Importanza dell'Expertise degli Sviluppatori
L'analisi ha mostrato che il livello di competenza degli sviluppatori nel primo mese di impegno in un progetto è il fattore più cruciale nel determinare se diventeranno LTC. La dimostrazione precoce di expertise nei linguaggi di programmazione ha fatto una differenza significativa nella loro probabilità di continuare a contribuire.
Combinazione di Caratteristiche per una Migliore Predizione
Combinare le caratteristiche di KULTC con quelle di altri modelli ha prodotto un modello predittivo ancora più forte chiamato KULTC+BAOLTC. Questo modello combinato ha ulteriormente migliorato le previsioni in vari contesti, ottenendo un miglioramento dell'AUC fino al 16.5% in alcuni casi.
Sviluppo di Modelli Economici
Creare modelli con ampie gamme di caratteristiche può essere dispendioso in termini di risorse. Per affrontare questo problema, abbiamo sviluppato un modello più economico, KULTCDEVEXP+BAOLTC, che si concentra su una singola dimensione delle caratteristiche pur superando i modelli precedenti. Questo approccio semplifica il processo di ingegneria delle caratteristiche e riduce i carichi operativi mantenendo una buona capacità predittiva.
Conclusione
Questo studio dimostra l'efficacia dell'uso delle KU nei linguaggi di programmazione per prevedere i collaboratori di lungo termine nei progetti open source. I risultati evidenziano l'importanza delle competenze e dell'expertise degli sviluppatori nei linguaggi di programmazione, offrendo preziose intuizioni per i manutentori dei progetti. Identificando potenziali LTC precocemente nel loro coinvolgimento, i progetti possono prendere misure proattive per supportare la loro crescita e retention.
La ricerca futura dovrebbe mirare a espandere l'uso delle KU in altri linguaggi di programmazione e esplorare ulteriori caratteristiche che potrebbero migliorare le predizioni del modello. Questo approccio può aiutare a migliorare la sostenibilità dei progetti open source e a supportare meglio la comunità degli sviluppatori.
Titolo: Predicting long time contributors with knowledge units of programming languages: an empirical study
Estratto: Predicting potential long-time contributors (LTCs) early allows project maintainers to effectively allocate resources and mentoring to enhance their development and retention. Mapping programming language expertise to developers and characterizing projects in terms of how they use programming languages can help identify developers who are more likely to become LTCs. However, prior studies on predicting LTCs do not consider programming language skills. This paper reports an empirical study on the usage of knowledge units (KUs) of the Java programming language to predict LTCs. A KU is a cohesive set of key capabilities that are offered by one or more building blocks of a given programming language. We build a prediction model called KULTC, which leverages KU-based features along five different dimensions. We detect and analyze KUs from the studied 75 Java projects (353K commits and 168K pull requests) as well as 4,219 other Java projects in which the studied developers previously worked (1.7M commits). We compare the performance of KULTC with the state-of-the-art model, which we call BAOLTC. Even though KULTC focuses exclusively on the programming language perspective, KULTC achieves a median AUC of at least 0.75 and significantly outperforms BAOLTC. Combining the features of KULTC with the features of BAOLTC results in an enhanced model (KULTC+BAOLTC) that significantly outperforms BAOLTC with a normalized AUC improvement of 16.5%. Our feature importance analysis with SHAP reveals that developer expertise in the studied project is the most influential feature dimension for predicting LTCs. Finally, we develop a cost-effective model (KULTC_DEV_EXP+BAOLTC) that significantly outperforms BAOLTC. These encouraging results can be helpful to researchers who wish to further study the developers' engagement/retention to FLOSS projects or build models for predicting LTCs.
Autori: Md Ahasanuzzaman, Gustavo A. Oliva, Ahmed E. Hassan
Ultimo aggiornamento: 2024-05-22 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2405.13852
Fonte PDF: https://arxiv.org/pdf/2405.13852
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.
Link di riferimento
- https://shorturl.at/dpKU4
- https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
- https://drive.google.com/drive/folders/1uaN8IUjrkhxcAT0lTyJbo_d72CB7hs1F?usp=share_link
- https://github.com/eclipse-jdt/eclipse.jdt.core/blob/master/org.eclipse.jdt.core.compiler.batch/grammar/java.g
- https://api.github.com/users/github-user-name/repos?per
- https://scholar.google.ca/citations?hl=en&pli=1&user=7H2HIWgAA
- https://www.gaoliva.com
- https://sail.cs.queensu.ca
- https://docs.github.com/en/rest/reference
- https://api.github.come/repos/elastic/elasticsearch/pulls?state=all
- https://api.github.com/users/username
- https://github.com/awsm-research/Rnalytica