Die Rolle von Bibliotheken in der Softwareentwicklung
Bibliotheken verbinden verschiedene Programmiersprachen und Tools für effiziente Softwareentwicklung.
― 5 min Lesedauer
Inhaltsverzeichnis
Die Nutzung von Bibliotheken in der Softwareentwicklung hilft Programmierern, Zeit und Aufwand zu sparen. Anstatt alles von Grund auf neu zu erstellen, können sie vorhandenen Code verwenden. Aber bei so vielen verschiedenen Technologien und Bibliotheken müssen Entwickler oft von einer Bibliothek zur anderen wechseln. Manchmal müssen sie ähnliche Bibliotheken finden, die mit einer neuen Programmiersprache funktionieren. Um das einfacher zu machen, veröffentlichen einige Bibliotheksersteller ihre Arbeiten an mehreren Orten.
Überblick über Software-Ökosysteme
In der modernen Softwareentwicklung werden Bibliotheken immer wichtiger. Es gibt viele Plattformen, auf denen man Bibliotheken finden kann, wie NPM für JavaScript, PyPI für Python, CRAN für R, Maven für Java und RubyGems für Ruby. Diese Plattformen hängen voneinander ab und schaffen ein Netzwerk von Bibliotheken und Tools.
Wenn ein Entwickler sich entscheidet, eine Bibliothek zu wechseln, könnte das daran liegen, dass eine neuere Version erschienen ist. Neue Versionen beheben möglicherweise Fehler oder fügen neue Funktionen hinzu. Dieser Bedarf führt zu Empfehlungen, welche Bibliotheken als Ersatz verwendet werden sollten. Allerdings kann das Wechseln von Programmiersprachen die verfügbaren Optionen für Bibliotheken einschränken.
Beispiel: Die Bokeh-Bibliothek
Nehmen wir die Bokeh-Bibliothek, die zur Erstellung von Visualisierungen in Webbrowsern verwendet wird. Diese Bibliothek ist in zwei Ökosystemen verfügbar: PyPI und NPM. Der offizielle Quellcode für Bokeh ist auf GitHub gehostet. Stand 2022 gab es über 2.900 Projekte, die von der Python-Version von Bokeh abhingen. Sie wurde erstmals 2013 veröffentlicht und wird kontinuierlich aktualisiert.
Die Bokeh-Bibliothek ist hauptsächlich in Python und TypeScript geschrieben. Die TypeScript-Version, BokehJS, ist für die Nutzung mit Webtechnologien gedacht. Bokeh hat eine grosse Anzahl von Mitwirkenden angezogen, was ihre Beliebtheit und Nützlichkeit zeigt.
Ziel der Studie
Ziel dieser Studie ist es herauszufinden, wie oft Bibliotheken in mehreren Ökosystemen veröffentlicht werden. Wir haben über 1,1 Millionen Bibliotheken aus fünf grossen Software-Ökosystemen (NPM, CRAN, Maven, RubyGems und PyPI) untersucht und versucht, Beziehungen zwischen ihnen zu identifizieren. Durch die Analyse dieser Daten wollen wir Bibliothekserstellern, Nutzern und Forschern helfen zu verstehen, wie diese verschiedenen Ökosysteme miteinander verbunden sind.
Methodik
Wir haben uns auf fünf populäre Bibliotheks-Ökosysteme konzentriert:
- NPM: Für JavaScript
- PyPI: Für Python
- CRAN: Für R
- Maven: Für Java
- RubyGems: Für Ruby
Um zu sehen, wie Bibliotheken miteinander verbunden sind, haben wir GitHub genutzt, um verschiedene Bibliotheken zu verlinken. Wenn zwei Bibliotheken dasselbe Repository auf GitHub teilen, könnten sie verbunden sein.
Wir haben alle Bibliotheken von GitHub untersucht und sie mit dem Libraries.io-Datensatz abgeglichen, um ihre Existenz in verschiedenen Ökosystemen zu bestätigen. Wir haben Daten zu diesen Bibliotheken gesammelt, um zu sehen, wie sie voneinander abhängen.
Erkenntnisse zu Bibliotheksabhängigkeiten
Unsere Analyse hat gezeigt, dass Bibliotheken oft von anderen aus verschiedenen Ökosystemen abhängen. Wir haben festgestellt, dass Bibliotheken, die NPM, Maven, PyPI und RubyGems verbinden, starke Abhängigkeiten zueinander aufweisen. Das bedeutet, dass Entwickler oft auf Bibliotheken aus mehreren Ökosystemen angewiesen sind, um ihre Projekte zu erstellen.
Bibliotheken, die in mehreren Ökosystemen verfügbar sind, haben mehr Abhängigkeiten als solche in einem einzigen Ökosystem. Das deutet darauf hin, dass plattformübergreifende Bibliotheken für Entwickler, die mit verschiedenen Technologien arbeiten, unerlässlich sind.
Verteilung der Mitwirkenden
Wir haben auch die Mitwirkenden dieser Bibliotheken untersucht, um zu sehen, woher ihre Beiträge kamen. Wir haben die Mitwirkenden in drei Gruppen eingeteilt:
- Beide: Mitwirkende, die an Bibliotheken in beiden Ökosystemen gearbeitet haben.
- Einzel: Mitwirkende, die nur innerhalb eines Ökosystems gearbeitet haben.
- Unabhängig: Mitwirkende, die an keinen Bibliotheken gearbeitet haben.
Unsere Ergebnisse haben gezeigt, dass die meisten Mitwirkenden aus einem einzigen Ökosystem stammen. Nur ein kleiner Teil hat zu Bibliotheken in mehreren Ökosystemen beigetragen. Das deutet darauf hin, dass es zwar viele Bibliotheken in verschiedenen Ökosystemen gibt, viele Mitwirkende jedoch dazu neigen, sich auf nur eines zu konzentrieren.
Auswirkungen für Bibliotheksverwalter
Angesichts unserer Ergebnisse haben wir mehrere Fragen für Bibliotheksverwalter aufgeworfen:
- Sollten sie in Erwägung ziehen, ihre Bibliotheken in mehreren Ökosystemen zu veröffentlichen?
- Was sind die Vorteile, dies zu tun?
- Wie versiert sollten Entwickler in verschiedenen Sprachen sein?
Die Ergebnisse deuten darauf hin, dass die Präsenz einer Bibliothek in mehreren Ökosystemen vorteilhaft ist, viele Mitwirkende jedoch immer noch nur einem angeschlossen sind. Das könnte bedeuten, dass Verwalter ihre Strategie bezüglich der Verbreitung ihrer Bibliothek sorgfältig überdenken müssen.
Zukünftige Forschungsrichtungen
Es gibt viele Bereiche für zukünftige Studien basierend auf unseren Ergebnissen. Einige Fragen für weitere Erkundungen sind:
- Welche Vorteile haben Bibliotheken davon, in mehr als einem Ökosystem präsent zu sein?
- Wie könnten plattformübergreifende Bibliotheken konkurrierende Bibliotheken beeinflussen?
- Wie wird das Ineinandergreifen verschiedener Ökosysteme das Management und die Governance beeinflussen?
Das Verständnis der Dynamik dieser Ökosysteme kann sich darauf auswirken, wie Bibliotheken verwaltet werden und wie Mitwirkende angezogen werden können.
Fazit
Die Studie hebt die Bedeutung von Bibliotheken hervor, die in mehreren Software-Ökosystemen agieren. Während sich die Technologie weiterentwickelt und verändert, wird der Bedarf an Bibliotheken, die sich an verschiedene Programmiersprachen und Umgebungen anpassen können, zunehmen. Indem diese Beziehungen anerkannt werden, können Entwickler besser informierte Entscheidungen darüber treffen, welche Bibliotheken sie nutzen und zu welchen sie beitragen möchten. Das kann letztendlich zu verbesserten Praktiken in der Softwareentwicklung und einer stärker vernetzten Software-Community führen.
Titel: Intertwining Communities: Exploring Libraries that Cross Software Ecosystems
Zusammenfassung: 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.
Autoren: Kanchanok Kannee, Raula Gaikovina Kula, Supatsara Wattanakriengkrai, Kenichi Matsumoto
Letzte Aktualisierung: 2023-03-16 00:00:00
Sprache: English
Quell-URL: https://arxiv.org/abs/2303.09177
Quell-PDF: https://arxiv.org/pdf/2303.09177
Lizenz: https://creativecommons.org/licenses/by/4.0/
Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.
Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.