Prediciendo Contribuidores a Largo Plazo en Open Source
La investigación identifica los factores clave que influyen en la retención de desarrolladores en proyectos de código abierto.
― 6 minilectura
Tabla de contenidos
- Entendiendo las Unidades de Conocimiento (KUs)
- Metodología de Investigación
- Recolección de Datos
- Definiendo Contribuyentes a Largo Plazo
- Ingeniería de características
- Construyendo el Modelo
- Hallazgos Clave
- Rendimiento del Modelo KULTC
- Importancia de la Experiencia del Desarrollador
- Combinando Características para una Mejora en la Predicción
- Desarrollo de Modelos Rentables
- Conclusión
- Fuente original
- Enlaces de referencia
Los contribuyentes a largo plazo (LTCs) son desarrolladores que se quedan y contribuyen activamente en proyectos de código abierto durante un período prolongado. Aportan valor a estos proyectos compartiendo su conocimiento y código. Sin embargo, muchos desarrolladores abandonan estos proyectos temprano. Si podemos predecir qué desarrolladores tienen más probabilidades de convertirse en LTCs, los mantenedores de proyectos pueden proporcionarles recursos y orientación desde el principio, lo que puede ayudar a mejorar la retención.
Los desarrolladores suelen unirse a proyectos de código abierto para aprender y mejorar sus habilidades, especialmente en lenguajes de programación. Las habilidades que desarrollan pueden influir en si siguen participando en estos proyectos. Al mapear las habilidades en lenguajes de programación de los desarrolladores y entender cómo utilizan estos lenguajes los proyectos, podemos identificar a qué desarrolladores es más probable que se conviertan en LTCs. Estudios anteriores se han centrado principalmente en otros aspectos y no han considerado las habilidades en lenguajes de programación. Este trabajo tiene como objetivo cerrar esa brecha estudiando Unidades de Conocimiento (KUs) en el lenguaje de programación Java para predecir LTCs.
Entendiendo las Unidades de Conocimiento (KUs)
Las KUs representan las capacidades clave disponibles en los lenguajes de programación. En Java, incluyen construcciones básicas y características específicas que ofrecen sus APIs, como crear hilos para concurrencia. Cada KU es un grupo de habilidades relacionadas que los desarrolladores pueden usar para construir sus aplicaciones. Al analizar el compromiso de los desarrolladores con estas KUs, podemos obtener información sobre su experiencia y predecir sus contribuciones a proyectos de código abierto.
Metodología de Investigación
Recolección de Datos
Para llevar a cabo este estudio, seleccionamos 75 proyectos activos de Java en GitHub que tenían un número significativo de seguidores. Nos enfocamos en recopilar datos de commits e información de pull requests para estos proyectos.
El primer paso fue recopilar datos sobre los desarrolladores que contribuyeron a estos proyectos. Vinculamos cuidadosamente los detalles de las cuentas de GitHub con los nombres utilizados en sus commits para mantener la precisión. Este paso aseguró que solo consideráramos a desarrolladores con un compromiso verificable en los proyectos estudiados.
Definiendo Contribuyentes a Largo Plazo
Un desarrollador se clasifica como LTC si comitea una cantidad sustancial de código y se mantiene involucrado con un proyecto a lo largo del tiempo. Para este estudio, analizamos las actividades de los desarrolladores en diferentes marcos de tiempo: 1 año, 2 años y 3 años.
Ingeniería de características
Creamos un modelo de predicción llamado KULTC que utiliza características basadas en KUs a través de cinco dimensiones diferentes. Estas dimensiones incluyen:
- Experiencia del Desarrollador en Proyectos Estudiados: Esto se refiere a las habilidades que los desarrolladores muestran en los primeros días de sus contribuciones a los proyectos estudiados.
- Experiencia del Desarrollador en Proyectos Anteriores: Esto toma en cuenta las habilidades que los desarrolladores adquirieron de otros proyectos antes de unirse a los estudiados.
- Experiencia de los Colaboradores en Proyectos Estudiados: Esto captura las habilidades de los colaboradores de los desarrolladores en los mismos proyectos, destacando el impacto de trabajar junto a desarrolladores experimentados.
- Características de los Proyectos Estudiados: Esta dimensión describe los atributos de los proyectos cuando se unen nuevos desarrolladores, ilustrando su alineación con los intereses de los desarrolladores.
- Características de Proyectos Anteriores: Esto refleja los proyectos previos de los desarrolladores y cómo se relacionan con las habilidades necesarias en los proyectos estudiados.
Construyendo el Modelo
Usamos el algoritmo de bosques aleatorios para crear el modelo KULTC basado en las características recopiladas a lo largo de nuestra investigación. Este enfoque de aprendizaje automático es conocido por su efectividad en tareas de clasificación. Evaluamos la capacidad del modelo para predecir LTCs utilizando una medida conocida como el Área Bajo la Curva (AUC), con una puntuación más alta indicando un mejor rendimiento predictivo.
Hallazgos Clave
Rendimiento del Modelo KULTC
El modelo KULTC logró alcanzar una AUC mediana de al menos 0.75, lo que indica un fuerte rendimiento predictivo. En comparación con modelos existentes, KULTC los superó, especialmente en la predicción de LTCs dentro de los primeros dos años de su contribución a proyectos.
Importancia de la Experiencia del Desarrollador
El análisis mostró que el nivel de habilidad de los desarrolladores dentro del primer mes de participación en un proyecto es el factor más crucial para determinar si se convertirían en LTCs. La demostración temprana de experiencia en lenguajes de programación marcó una diferencia significativa en su probabilidad de seguir contribuyendo.
Combinando Características para una Mejora en la Predicción
Combinar las características de KULTC con las de otros modelos produjo un modelo predictivo aún más fuerte llamado KULTC+BAOLTC. Este modelo combinado mejoró aún más las predicciones en varios contextos, logrando una mejora en AUC de hasta un 16.5% en algunos casos.
Desarrollo de Modelos Rentables
Crear modelos con un amplio rango de características puede consumir muchos recursos. Para abordar esto, desarrollamos un modelo más rentable, KULTCDEVEXP+BAOLTC, que se enfoca en una sola dimensión de características mientras sigue superando a modelos anteriores. Este enfoque simplifica el proceso de ingeniería de características y reduce las cargas operativas, manteniendo una buena capacidad de predicción.
Conclusión
Este estudio demuestra la efectividad de usar KUs en lenguajes de programación para predecir contribuyentes a largo plazo en proyectos de código abierto. Los hallazgos destacan la importancia de las habilidades y la experiencia de los desarrolladores en lenguajes de programación, ofreciendo valiosos insights para los mantenedores de proyectos. Al identificar a los posibles LTCs temprano en su participación, los proyectos pueden tomar medidas proactivas para apoyar su crecimiento y retención.
La investigación futura debería buscar expandir el uso de KUs a otros lenguajes de programación y explorar características adicionales que podrían mejorar las predicciones del modelo. Este enfoque puede ayudar a mejorar la sostenibilidad de los proyectos de código abierto y apoyar mejor a la comunidad de desarrolladores.
Título: Predicting long time contributors with knowledge units of programming languages: an empirical study
Resumen: 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 actualización: 2024-05-22 00:00:00
Idioma: English
Fuente URL: https://arxiv.org/abs/2405.13852
Fuente PDF: https://arxiv.org/pdf/2405.13852
Licencia: https://creativecommons.org/licenses/by/4.0/
Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.
Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.
Enlaces de referencia
- 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