Simple Science

Scienza all'avanguardia spiegata semplicemente

# Informatica# Ingegneria del software

Il Ruolo delle Librerie nello Sviluppo Software

Le librerie collegano vari linguaggi di programmazione e strumenti per uno sviluppo software efficace.

― 5 leggere min


Librerie nei variLibrerie nei variecosistemi softwaresviluppo efficiente.linguaggi di programmazione per unoLibrerie essenziali collegano vari
Indice

Usare librerie nello sviluppo software aiuta i programmatori a risparmiare tempo e fatica. Invece di creare tutto da zero, possono usare codice già esistente. Ma con così tante tecnologie e librerie diverse, i programmatori spesso devono passare da una libreria all'altra. A volte, devono trovare librerie simili che funzionino con un nuovo linguaggio di programmazione. Per rendere tutto questo più facile, alcuni creatori di librerie pubblicano il loro lavoro in più posti.

Panoramica sugli Ecosistemi Software

Nello sviluppo software moderno, le librerie stanno diventando essenziali. Ci sono molte piattaforme dove si possono trovare librerie, come NPM per JavaScript, PyPI per Python, CRAN per R, Maven per Java e RubyGems per Ruby. Queste piattaforme dipendono l'una dall'altra, creando una rete di librerie e strumenti.

Quando un programmatore decide di cambiare libreria, potrebbe essere perché è uscita una versione più recente. Le nuove versioni possono correggere errori o aggiungere nuove funzionalità. Questa necessità porta a lavorare su raccomandazioni per quali librerie usare come sostituti. Tuttavia, cambiare linguaggio di programmazione può limitare le opzioni per le librerie disponibili.

Esempio: La Libreria Bokeh

Consideriamo la libreria Bokeh, che si usa per creare visualizzazioni nei browser. Questa libreria ha versioni disponibili su due ecosistemi: PyPI e NPM. Il codice sorgente ufficiale di Bokeh è ospitato su GitHub. Nel 2022, c'erano oltre 2.900 progetti che dipendevano dalla versione Python di Bokeh. È stata rilasciata per la prima volta nel 2013 e ha ricevuto aggiornamenti continui.

La libreria Bokeh è principalmente scritta in Python e TypeScript. La versione TypeScript, BokehJS, è destinata all'uso con tecnologie web. Bokeh ha attratto un gran numero di contributori, dimostrando la sua popolarità e utilità.

Obiettivo dello Studio

Questo studio mira a scoprire quanto spesso le librerie vengono pubblicate in più ecosistemi. Abbiamo esaminato oltre 1,1 milioni di librerie da cinque importanti ecosistemi software (NPM, CRAN, Maven, RubyGems e PyPI) e cercato di identificare le relazioni tra di esse. Analizzando questi dati, vogliamo aiutare i creatori di librerie, gli utenti e i ricercatori a capire come questi diversi ecosistemi siano legati.

Metodologia

Ci siamo concentrati su cinque ecosistemi di librerie popolari:

  • NPM: Per JavaScript
  • PyPI: Per Python
  • CRAN: Per R
  • Maven: Per Java
  • RubyGems: Per Ruby

Per vedere come le librerie siano interconnesse, abbiamo usato GitHub come modo per collegare diverse librerie. Se due librerie condividono lo stesso repository su GitHub, potrebbero essere collegate.

Abbiamo esaminato tutte le librerie su GitHub e le abbiamo incrociate con il dataset di Libraries.io per confermarne l'esistenza negli ecosistemi. Abbiamo raccolto dati su queste librerie per vedere come dipendono l'una dall'altra.

Risultati sulle Dipendenze delle Librerie

La nostra analisi ha mostrato che le librerie spesso dipendono da altre di ecosistemi diversi. Abbiamo scoperto che le librerie che collegano NPM, Maven, PyPI e RubyGems presentano forti dipendenze tra di loro. Questo significa che i programmatori si affidano spesso a librerie di più ecosistemi per costruire i loro progetti.

Le librerie disponibili su più ecosistemi avevano più dipendenze di quelle in un singolo ecosistema. Questo suggerisce che le librerie cross-ecosistema sono essenziali per i programmatori che lavorano con varie tecnologie.

Distribuzione dei Contributori

Abbiamo anche esaminato i contributori di queste librerie per vedere da dove provenivano le loro contribuzioni. Abbiamo categorizzato i contributori in tre gruppi:

  1. Entrambi: Contributori che hanno lavorato su librerie in entrambi gli ecosistemi.
  2. Singolo: Contributori che hanno lavorato solo in un ecosistema.
  3. Indipendenti: Contributori che non hanno lavorato su nessuna libreria.

I nostri risultati hanno mostrato che la maggior parte dei contributori proveniva da un singolo ecosistema. Solo una piccola parte ha contribuito a librerie in più ecosistemi. Questo suggerisce che, mentre ci sono librerie disponibili in molti ecosistemi, molti contributori tendono a concentrarsi su uno solo.

Implicazioni per i Manutentori di Librerie

Date le nostre scoperte, abbiamo posto diverse domande per i manutentori di librerie:

  • Dovrebbero considerare di pubblicare le loro librerie in più ecosistemi?
  • Quali sono i vantaggi di farlo?
  • Quanto dovrebbero essere competenti i programmatori in vari linguaggi?

I risultati suggeriscono che, sebbene la presenza di una libreria in più ecosistemi sia vantaggiosa, molti contributori sono ancora affiliati a uno solo. Questo potrebbe significare che i manutentori devono riflettere attentamente sulla loro strategia riguardo alla distribuzione delle librerie.

Direzioni per la Ricerca Futura

Ci sono molte aree per futuri studi basati sui nostri risultati. Alcune domande per ulteriori esplorazioni includono:

  • Quali benefici ottengono le librerie dall'essere presenti in più di un ecosistema?
  • In che modo le librerie cross-ecosistema possono impattare le librerie concorrenti?
  • Come influenzerà l'intreccio di diversi ecosistemi la gestione e la governance?

Comprendere le dinamiche di questi ecosistemi può influenzare come vengono mantenute le librerie e come possono essere attratti i contributori.

Conclusione

Lo studio mette in evidenza l'importanza delle librerie che operano attraverso più ecosistemi software. Man mano che la tecnologia continua a crescere e cambiare, la necessità di librerie che possano adattarsi a diversi linguaggi di programmazione e ambienti aumenterà. Riconoscendo queste relazioni, i programmatori possono prendere decisioni più informate riguardo alle librerie che scelgono di usare e a cui contribuiscono. Questo può portare, in ultima analisi, a pratiche di sviluppo software migliorate e a una comunità software più interconnessa.

Fonte originale

Titolo: Intertwining Communities: Exploring Libraries that Cross Software Ecosystems

Estratto: 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.

Autori: Kanchanok Kannee, Raula Gaikovina Kula, Supatsara Wattanakriengkrai, Kenichi Matsumoto

Ultimo aggiornamento: 2023-03-16 00:00:00

Lingua: English

URL di origine: https://arxiv.org/abs/2303.09177

Fonte PDF: https://arxiv.org/pdf/2303.09177

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.

Altro dagli autori

Articoli simili