Previsão de Contribuidores de Longo Prazo em Código Aberto
Pesquisas identificam os fatores principais que influenciam a retenção de desenvolvedores em projetos de código aberto.
― 5 min ler
Índice
Contribuintes de longa data (LTCs) são desenvolvedores que ficam e contribuem ativamente em projetos de código aberto por um bom tempo. Eles trazem valor para esses projetos compartilhando seu conhecimento e código. Mas, muitos desenvolvedores saem desses projetos cedo. Se a gente conseguir prever quais desenvolvedores têm mais chances de se tornarem LTCs, os mantenedores dos projetos podem dar a eles recursos e orientações desde o começo, o que pode ajudar a melhorar a retenção.
Os desenvolvedores costumam entrar em projetos de código aberto para aprender e aprimorar suas habilidades, principalmente em linguagens de programação. As habilidades que eles desenvolvem podem influenciar se continuarão ou não se envolvendo com esses projetos. Ao mapear as habilidades em linguagens de programação dos desenvolvedores e entender como os projetos utilizam essas linguagens, podemos identificar quais desenvolvedores têm mais chances de se tornarem LTCs. Estudos anteriores geralmente focaram em outros aspectos e não consideraram as habilidades em linguagens de programação. Este trabalho visa preencher essa lacuna estudando Unidades de Conhecimento (KUs) na linguagem de programação Java para prever LTCs.
Compreendendo as Unidades de Conhecimento (KUs)
KUs representam as principais capacidades disponíveis nas linguagens de programação. Em Java, isso inclui construções básicas e recursos específicos oferecidos por suas APIs, como criação de threads para concorrência. Cada KU é um grupo de habilidades relacionadas que os desenvolvedores podem usar para construir suas aplicações. Analisando o engajamento dos desenvolvedores com essas KUs, conseguimos obter insights sobre sua expertise e prever suas contribuições para projetos de código aberto.
Metodologia de Pesquisa
Coleta de Dados
Para conduzir este estudo, selecionamos 75 projetos ativos de Java no GitHub que tinham um número significativo de seguidores. Focamos em coletar dados de commits e informações de pull requests desses projetos.
O primeiro passo foi reunir dados sobre os desenvolvedores que contribuíram para esses projetos. Ligamos cuidadosamente os detalhes das contas deles no GitHub com os nomes usados em seus commits para manter a precisão. Esse passo garantiu que considerássemos apenas desenvolvedores com engajamento verificável nos projetos estudados.
Definindo Contribuintes de Longo Prazo
Um desenvolvedor é classificado como LTC se ele commit um volume substancial de código e continua engajado com um projeto ao longo do tempo. Para este estudo, analisamos as atividades dos desenvolvedores em diferentes períodos: 1 ano, 2 anos e 3 anos.
Engenharia de Características
Criamos um modelo de previsão chamado KULTC que usa características baseadas em KUs em cinco dimensões diferentes. Essas dimensões incluem:
- Expertise do Desenvolvedor nos Projetos Estudados: Refere-se às habilidades que os desenvolvedores mostram nos primeiros dias de suas contribuições para os projetos estudados.
- Expertise do Desenvolvedor em Projetos Anteriores: Isso leva em conta as habilidades que os desenvolvedores adquiriram em outros projetos antes de se juntarem aos estudados.
- Expertise dos Colaboradores em Projetos Estudados: Captura as habilidades dos colaboradores dos desenvolvedores nos mesmos projetos, destacando o impacto de trabalhar ao lado de desenvolvedores experientes.
- Características dos Projetos Estudados: Essa dimensão descreve os atributos dos projetos quando novos desenvolvedores entram, ilustrando sua compatibilidade com os interesses dos desenvolvedores.
- Características de Projetos Anteriores: Reflete os projetos anteriores dos desenvolvedores e como eles se relacionam com as habilidades necessárias nos projetos estudados.
Construindo o Modelo
Usamos o algoritmo de floresta aleatória para criar o modelo KULTC com base nas características coletadas ao longo da nossa pesquisa. Essa abordagem de aprendizado de máquina é conhecida por sua eficácia em tarefas de classificação. Avaliamos a capacidade do modelo de prever LTCs usando uma medição conhecida como Área sob a Curva (AUC), com uma pontuação mais alta indicando melhor desempenho preditivo.
Principais Descobertas
Desempenho do Modelo KULTC
O modelo KULTC conseguiu atingir uma AUC mediana de pelo menos 0.75, indicando forte desempenho preditivo. Quando comparado a modelos existentes, o KULTC superou eles, especialmente em prever LTCs nos primeiros dois anos de contribuição dos projetos.
Importância da Expertise do Desenvolvedor
A análise mostrou que o nível de habilidade dos desenvolvedores no primeiro mês de engajamento em um projeto é o fator mais crucial para determinar se eles se tornariam LTCs. A demonstração precoce de expertise em linguagens de programação fez uma diferença significativa na probabilidade de continuarem contribuindo.
Combinando Características para Melhorar a Predição
Combinar as características do KULTC com as de outros modelos produziu um modelo preditivo ainda mais forte chamado KULTC+BAOLTC. Esse modelo combinado melhorou ainda mais as previsões em várias configurações, alcançando uma melhoria na AUC de até 16,5% em alguns casos.
Desenvolvimento de Modelo Custo-Efetivo
Criar modelos com uma ampla gama de características pode ser intensivo em recursos. Para resolver isso, desenvolvemos um modelo mais custo-efetivo, KULTCDEVEXP+BAOLTC, que foca em uma única dimensão de características enquanto ainda supera modelos anteriores. Essa abordagem simplifica o processo de engenharia de características e reduz as cargas operacionais, mantendo boa capacidade preditiva.
Conclusão
Este estudo demonstra a eficácia de usar KUs em linguagens de programação para prever contribuintes de longo prazo em projetos de código aberto. As descobertas destacam a importância das habilidades e expertise dos desenvolvedores em linguagens de programação, oferecendo insights valiosos para os mantenedores de projetos. Ao identificar potenciais LTCs cedo em seu engajamento, os projetos podem tomar medidas proativas para apoiar seu crescimento e retenção.
Pesquisas futuras devem buscar expandir o uso de KUs em outras linguagens de programação e explorar características adicionais que poderiam melhorar as previsões do modelo. Essa abordagem pode ajudar a melhorar a sustentabilidade dos projetos de código aberto e apoiar melhor a comunidade de desenvolvedores.
Título: Predicting long time contributors with knowledge units of programming languages: an empirical study
Resumo: 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.
Autores: Md Ahasanuzzaman, Gustavo A. Oliva, Ahmed E. Hassan
Última atualização: 2024-05-22 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2405.13852
Fonte PDF: https://arxiv.org/pdf/2405.13852
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.
Ligações de referência
- 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