El papel de las bibliotecas en el desarrollo de software
Las bibliotecas conectan varios lenguajes de programación y herramientas para un desarrollo de software más eficiente.
― 5 minilectura
Tabla de contenidos
Usar Bibliotecas en el desarrollo de software ayuda a los programadores a ahorrar tiempo y esfuerzo. En lugar de crear todo desde cero, pueden usar código que ya existe. Pero con tantas tecnologías y bibliotecas diferentes, los desarrolladores a menudo necesitan cambiar de una biblioteca a otra. A veces, tienen que encontrar bibliotecas similares que funcionen con un nuevo lenguaje de programación. Para hacer esto más fácil, algunos creadores de bibliotecas están publicando su trabajo en varios lugares.
Resumen de Ecosistemas de Software
En el desarrollo de software moderno, las bibliotecas se están volviendo esenciales. Hay muchas plataformas donde se pueden encontrar bibliotecas, como NPM para JavaScript, PyPI para Python, CRAN para R, Maven para Java y RubyGems para Ruby. Estas plataformas dependen entre sí, creando una red de bibliotecas y herramientas.
Cuando un desarrollador decide cambiar de biblioteca, podría ser porque ha salido una nueva versión. Las nuevas versiones pueden corregir errores o agregar nuevas características. Esta necesidad lleva a trabajar en recomendaciones sobre qué bibliotecas usar como reemplazos. Sin embargo, cambiar de lenguaje de programación puede limitar las opciones de bibliotecas disponibles.
Ejemplo: La Biblioteca Bokeh
Considera la biblioteca Bokeh, que se usa para crear visualizaciones en navegadores web. Esta biblioteca tiene versiones disponibles en dos ecosistemas: PyPI y NPM. El código fuente oficial de Bokeh está alojado en GitHub. A partir de 2022, había más de 2,900 proyectos que dependían de la versión de Python de Bokeh. Se lanzó por primera vez en 2013 y ha tenido actualizaciones continuas.
La biblioteca Bokeh está escrita principalmente en Python y TypeScript. La versión en TypeScript, BokehJS, está destinada a usarse con tecnologías web. Bokeh ha atraído a un gran número de contribuyentes, mostrando su popularidad y utilidad.
Objetivo del Estudio
Este estudio tiene como objetivo averiguar con qué frecuencia las bibliotecas se publican en múltiples ecosistemas. Analizamos más de 1.1 millones de bibliotecas de cinco ecosistemas de software importantes (NPM, CRAN, Maven, RubyGems y PyPI) e intentamos identificar relaciones entre ellas. Al analizar estos datos, queremos ayudar a los creadores de bibliotecas, usuarios e investigadores a entender cómo se relacionan estos diferentes ecosistemas.
Metodología
Nos enfocamos en cinco ecosistemas de bibliotecas populares:
- NPM: Para JavaScript
- PyPI: Para Python
- CRAN: Para R
- Maven: Para Java
- RubyGems: Para Ruby
Para ver cómo están interconectadas las bibliotecas, usamos GitHub como una forma de vincular diferentes bibliotecas. Si dos bibliotecas comparten el mismo repositorio en GitHub, podrían estar conectadas.
Revisamos todas las bibliotecas de GitHub y las cotejamos con el conjunto de datos de Libraries.io para confirmar su existencia en los ecosistemas. Recopilamos datos sobre estas bibliotecas para ver cómo dependen unas de otras.
Hallazgos sobre Dependencias de Bibliotecas
Nuestro análisis mostró que las bibliotecas a menudo dependen de otras de diferentes ecosistemas. Descubrimos que las bibliotecas que conectan NPM, Maven, PyPI y RubyGems mostraron fuertes dependencias entre ellas. Esto significa que los desarrolladores a menudo confían en bibliotecas de múltiples ecosistemas para construir sus proyectos.
Las bibliotecas que estaban disponibles en múltiples ecosistemas tenían más dependencias que aquellas en un solo ecosistema. Esto sugiere que las bibliotecas de cruce de ecosistemas son esenciales para los desarrolladores que trabajan con varias tecnologías.
Distribución de Contribuidores
También analizamos a los contribuyentes de estas bibliotecas para ver de dónde venían sus contribuciones. Clasificamos a los contribuyentes en tres grupos:
- Ambos: Contribuyentes que trabajaron en bibliotecas en ambos ecosistemas.
- Único: Contribuyentes que solo trabajaron dentro de un ecosistema.
- Independiente: Contribuyentes que no trabajaron en ninguna biblioteca.
Nuestros hallazgos mostraron que la mayoría de los contribuyentes provenían de un solo ecosistema. Solo una pequeña porción contribuyó a bibliotecas en múltiples ecosistemas. Esto sugiere que, aunque hay bibliotecas disponibles en muchos ecosistemas, muchos contribuyentes tienden a enfocarse solo en uno.
Implicaciones para Mantenedores de Bibliotecas
Dada nuestra información, planteamos varias preguntas para los mantenedores de bibliotecas:
- ¿Deberían considerar publicar sus bibliotecas en múltiples ecosistemas?
- ¿Cuáles son las ventajas de hacerlo?
- ¿Qué tan competentes deberían ser los desarrolladores en varios lenguajes?
Los resultados sugieren que, aunque la presencia de una biblioteca en múltiples ecosistemas es beneficiosa, muchos contribuyentes aún están afiliados a solo uno. Esto podría significar que los mantenedores necesitan pensar cuidadosamente en su estrategia respecto a la distribución de bibliotecas.
Direcciones para Investigación Futura
Hay muchas áreas para futuros estudios basados en nuestros hallazgos. Algunas preguntas para una exploración adicional incluyen:
- ¿Qué beneficios obtienen las bibliotecas de estar presentes en más de un ecosistema?
- ¿Cómo podrían las bibliotecas de cruce de ecosistemas afectar a las bibliotecas competidoras?
- ¿Cómo afectará la interconexión de diferentes ecosistemas a la gestión y gobernanza?
Entender la dinámica de estos ecosistemas puede afectar cómo se mantienen las bibliotecas y cómo se puede atraer a los contribuyentes.
Conclusión
El estudio resalta la importancia de las bibliotecas que operan en múltiples ecosistemas de software. A medida que la tecnología continúa creciendo y cambiando, la necesidad de bibliotecas que puedan adaptarse a diferentes lenguajes de programación y entornos irá en aumento. Al reconocer estas relaciones, los desarrolladores pueden tomar decisiones más informadas sobre las bibliotecas que eligen usar y contribuir. Esto puede llevar a prácticas de desarrollo de software mejoradas y a una comunidad de software más interconectada.
Título: Intertwining Communities: Exploring Libraries that Cross Software Ecosystems
Resumen: Using libraries in applications has helped developers reduce the costs of reinventing already existing code. However, an increase in diverse technology stacks and third-party library usage has led developers to inevitably switch technologies and search for similar libraries implemented in the new technology. To assist with searching for these replacement libraries, maintainers have started to release their libraries to multiple ecosystems. Our goal is to explore the extent to which these libraries are intertwined between ecosystems. We perform a large-scale empirical study of 1.1 million libraries from five different software ecosystems, i.e., PyPI, CRAN, Maven, RubyGems, and NPM, to identify 4,146 GitHub repositories. As a starting point, insights from the study raise implications for library maintainers, users, contributors, and researchers into understanding how these different ecosystems are becoming more intertwined with each other.
Autores: Kanchanok Kannee, Raula Gaikovina Kula, Supatsara Wattanakriengkrai, Kenichi Matsumoto
Última actualización: 2023-03-16 00:00:00
Idioma: English
Fuente URL: https://arxiv.org/abs/2303.09177
Fuente PDF: https://arxiv.org/pdf/2303.09177
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.