Please use this identifier to cite or link to this item:
doi:10.22028/D291-42157
Title: | Emerging organizational patterns in evolving open-source software projects : an analysis of developer activity and coordination |
Author(s): | Bock, Thomas Josef |
Language: | English |
Year of Publication: | 2024 |
DDC notations: | 004 Computer science, internet 600 Technology |
Publikation type: | Dissertation |
Abstract: | Many popular and widely-used software projects are organized and developed as open-source software (OSS) projects. Their source code is publicly available and everyone can contribute. Thus, many OSS projects are able to attract a high number of contributors, who develop the source code of the project or participate in the public communication channels of the project. It is almost folklore that, when multiple developers contribute to the source code of a project simultaneously, proper coordination between the developers is necessary to avoid unexpected interactions between the simultaneously changed source-code parts and to reduce the risk of introducing new bugs. As indicated by previous research, software bugs are often caused by a lack of coordination and by problems in the organizational structure of the project. However, while there is a clearly defined organizational hierarchy among the developers in commercial, closed-source software projects, this does not necessarily apply to OSS projects, which sometimes are seen as self-organizing communities. Consequently, to improve developer coordination in OSS projects, it is essential to understand the organizational structure of these projects. For this purpose, we analyze the organizational structure of OSS projects and how it evolves over time, by means of five different empirical studies on widely-used and well-known OSS projects. This way, we aim at obtaining an understanding of developer activity and coordination, which shall serve as a first step toward improved coordination processes and, in turn, toward less flawed software products. In particular, we address three different aspects: the evolution of developer collaboration and communication, the identification of developer roles, and the relation between organizational events and developer-network characteristics. First, to obtain insights into the evolution of developer collaboration (i.e., mutual editing of a source-code artifact) and developer communication (i.e., mutual commenting on the same issue or in the same mailing-list thread), we investigate how collaboration and communication are temporally and content-wise related, as previous work has proposed that collaboration and communication activities should align due to their common tasks. Therefore, we take a conversation-based view and develop a method to measure the synchronicity of collaboration and communication activities. Moreover, we also take a developer-network perspective to examine whether developers form stable group structures and how they evolve over time. To that aim, we devise a modular, multi-step measuring and modeling framework based on canonical tensor decomposition to detect developer groups and predict interactions among developers. This way, we are able to identify stable groups as well as distortions in the group structure. In addition, we propose a method to detect hierarchical structures, and we report on insights from an empirical study regarding the presence and evolution of hierarchical structures in developer networks as well as regarding the roles developers take with respect to their position in the hierarchy. These insights provide the basis for future investigations on the organizational structure of OSS projects and shall help to guide project governance. Second, as developers in OSS projects perform different tasks and take different roles, core developers play an important part with respect to coordination within the organizational structure of an OSS project. While peripheral developers contribute only occasionally to the project (e.g., provide a bug fix), core developers steadily contribute and work on central maintenance tasks. While there is a growing corpus of research that attempts to identify core developers, the performance of such identification methods is largely unclear. Therefore, we propose an automatic method to identify core developers based on privileged role permissions in GitHub issues and pull requests. In a validation study, we validate our derived set of privileged developers with official, publicly available maintainers lists. Moreover, we perform an assessment of the accuracy of state-of-the-art developer-role classification methods. Beside devising an automated method for core developer identification, our results help researchers and practitioners to choose an appropriate classification method. Third, we investigate the relation between organizational events (such as the creation of forks or company acquisitions) and developer-network characteristics, as organizational events can dramatically influence the organizational structure and, thus, the collaboration and communication between developers of OSS projects. An analysis of developer-network characteristics can reveal potentially unobserved changes in the organizational structure. Based on observations from an exploratory study on eight case studies, we develop hypotheses regarding which network characteristics are promising indicators for detecting organizational events that affect the structure of developer networks. This way, we lay the foundations for future work on developing measures to detect organizational events that may potentially threaten the sustainability of an OSS project. In summary, our work comprehensively studies developers’ programming and communication activities in OSS projects. For this purpose, we provide multiple methods to analyze the collaboration and communication activities of developers with respect to evolutionary organizational structures. We demonstrate the applicability of the proposed methods and provide valuable insights from different empirical studies on the coordination processes in OSS projects. The insights we obtain shall enable devising guidelines and developing improved processes for developer coordination in the future. Viele populäre und weit verbreitete Softwareprojekte werden als Open-Source-Software-Projekte (OSS-Projekte) organisiert und entwickelt, deren Quellcode öffentlich zugänglich ist und zu dem jeder beitragen kann. Daher weisen viele OSS-Projekte eine hohe Anzahl an Mitwirkenden auf, die den Quellcode des Projekts entwickeln oder sich an den öffentlichen Kommunikationskanälen des Projekts beteiligen. Wenn mehrere Entwickler gleichzeitig zum Quellcode eines Projekts beitragen, ist eine angemessene Koordinierung zwischen den Entwicklern notwendig, um unerwartete Interaktionen zwischen den gleichzeitig geänderten Teilen des Quellcodes zu vermeiden und das Risiko der Einführung neuer Fehler zu verringern. Wie frühere Untersuchungen gezeigt haben, werden Softwarefehler häufig durch mangelnde Koordinierung zwischen den Entwicklern und durch Probleme in der Organisationsstruktur des Projekts verursacht. Während es in kommerziellen, nicht-quelloffenen Softwareprojekten eine klar definierte organisatorische Hierarchie unter den Entwicklern gibt, gilt dies nicht unbedingt für OSS-Projekte, die manchmal als selbstorganisierende Gemeinschaften angesehen werden. Um die Koordinierung der Entwickler in OSS-Projekten zu verbessern, ist es daher wichtig, die Organisationsstruktur dieser Projekte zu verstehen. Zu diesem Zweck analysieren wir in fünf verschiedenen empirischen Studien an weit verbreiteten und bekannten OSS-Projekten deren Organisationsstruktur und wie sie sich im Laufe der Zeit entwickelt hat. Auf diese Weise wollen wir ein Verständnis über die Entwickleraktivität und -koordinierung erlangen, das ein erster Schritt zu verbesserten Koordinierungsprozessen sein soll und damit zu weniger fehlerhaften Softwareprodukten führen soll. Wir befassen uns insbesondere mit drei verschiedenen Aspekten: der Entwicklung der Zusammenarbeit und Kommunikation von Entwicklern über die Zeit, der Identifizierung von Entwicklerrollen und der Beziehung zwischen organisatorischen Ereignissen und Eigenschaften von Entwicklernetzwerken. 1. Um Einblicke in die Entwicklung der Zusammenarbeit (d.h., die wechselseitige Bearbeitung eines Quellcode-Artefakts) und der Kommunikation (d.h., das wechselseitige Kommentieren im selben Issue oder im selben Mailinglisten-Thread) von Software-Entwicklern zu erhalten, untersuchen wir zunächst, wie Zusammenarbeit und Kommunikation zeitlich und inhaltlich miteinander verbunden sind. Frühere Arbeiten haben vorgeschlagen, dass die Zusammenarbeit und Kommunikation von Entwicklern aufgrund ihrer gemeinsamen Aufgaben aufeinander abgestimmt werden sollten. Daher nehmen wir eine konversationsbasierte Sichtweise ein und entwickeln eine Methode, um die Synchronität von Zusammenarbeit und Kommunikation zu messen. Darüber hinaus untersuchen wir mit Hilfe von Entwicklernetzwerken, ob Entwickler stabile Gruppenstrukturen bilden und wie diese sich im Laufe der Zeit entwickeln. Zu diesem Zweck erarbeiten wir ein modulares, mehrstufiges Mess- und Modellierungs-Framework basierend auf kanonischer Tensor-Dekomposition, um Entwicklergruppen zu erkennen und Interaktionen zwischen den Entwicklern vorherzusagen. Auf diese Weise sind wir in der Lage, sowohl stabile Gruppen als auch Verzerrungen in der Gruppenstruktur zu identifizieren. Darüber hinaus schlagen wir eine Methode vor, um hierarchische Strukturen zu erkennen. Damit gewinnen wir aus einer empirischen Studie Erkenntnisse über das Vorhandensein und die Entwicklung von hierarchischen Strukturen in Entwicklernetzwerken sowie über die Rollen, die Entwickler in Bezug auf ihre Position in der Hierarchie einnehmen. Diese Erkenntnisse bieten die Grundlage für zukünftige Untersuchungen zur Organisationsstruktur von OSS-Projekten und sollen dabei helfen, die Projektführung zu steuern. 2. Da die Entwickler in OSS-Projekten unterschiedliche Aufgaben und Rollen übernehmen, spielen die Kernentwickler eine wichtige Rolle bei der Koordinierung innerhalb der Organisationsstruktur eines OSS-Projekts. Während periphere Entwickler nur gelegentlich zum Projekt beitragen (z.B. einen Bugfix liefern), tragen Kernentwickler kontinuierlich zum Projekt bei und übernehmen zentrale Wartungsaufgaben. Es gibt zwar eine wachsende Zahl von Forschungsarbeiten, die versuchen, die Kerntwickler zu identifizieren, aber die Genauigkeit solcher Identifizierungsmethoden ist weitgehend unklar. Aus diesem Grund entwickeln wir eine automatische Methode zur Identifizierung von Kernentwicklern, die auf privilegierten Rollen-Berechtigungen in GitHub-Issues und Pull-Requests basiert. In einer Validierungsstudie gleichen wir unsere extrahierte Gruppe von privilegierten Entwicklern mit offiziellen, öffentlich zugänglichen Maintainer-Listen ab. Außerdem führen wir eine Bewertung der Genauigkeit etablierter Methoden zur Klassifizierung von Entwicklerrollen durch. Neben der Entwicklung einer automatisierten Methode zur Identifizierung von Kernentwicklern sollen unsere Ergebnisse Forschern und Praktikern bei der Auswahl einer geeigneten Klassifizierungsmethode helfen. 3. Schließlich untersuchen wir die Beziehung zwischen organisatorischen Ereignissen (wie z.B. der Gründung von Abspaltungen eines Projekts oder Firmenübernahmen) und den Eigenschaften von Entwicklernetzwerken, da organisatorische Ereignisse die Organisationsstruktur von OSS-Projekten und somit auch die Zusammenarbeit der Entwickler und die Kommunikation zwischen den Entwicklern dramatisch beeinflussen können. Eine Analyse des Entwicklernetzwerks eines Projekts ist dazu in der Lage, Veränderungen in der Organisationsstruktur aufzudecken, die bislang potenziell unbeobachtet waren. Auf der Grundlage von Beobachtungen aus einer explorativen Studie mit acht Fallstudien entwickeln wir Hypothesen darüber, welche Netzwerkeigenschaften vielversprechende Indikatoren sein könnten für die Erkennung organisatorischer Ereignisse, die die Struktur von Entwicklernetzwerken beeinflussen. Auf diese Weise legen wir den Grundstein für die zukünftige Entwicklung von Maßnahmen zur Erkennung jener organisatorischer Ereignisse, welche möglicherweise die nachhaltige Entwicklung eines OSS-Projekts gefährden können. Diese Arbeit untersucht die Programmier- und Kommunikationsaktivitäten von Entwicklern in OSS-Projekten auf verschiedene Weise. Einerseits erarbeiten wir mehrere Methoden zur Analyse der Zusammenarbeit und Koordinierung von Entwicklern im Hinblick auf evolutionäre Organisationsstrukturen, und andererseits zeigen wir auch die Anwendbarkeit der erarbeiteten Methoden mit Hilfe verschiedener empirischer Studien. Die Erkenntnisse, die wir aus unseren Studien gewinnen, sollen es schließlich ermöglichen, Richtlinien zu erarbeiten und verbesserte Prozesse für die zukünftige Entwicklerkoordinierung zu entwickeln. |
Link to this record: | urn:nbn:de:bsz:291--ds-421572 hdl:20.500.11880/37837 http://dx.doi.org/10.22028/D291-42157 |
Advisor: | Apel, Sven |
Date of oral examination: | 4-Jun-2024 |
Date of registration: | 10-Jun-2024 |
Third-party funds sponsorship: | Deutsche Forschungsgemeinschaft (DFG), Projekt "Congruence" |
Sponsorship ID: | AP 206/14-1 |
Faculty: | MI - Fakultät für Mathematik und Informatik |
Department: | MI - Informatik |
Professorship: | MI - Prof. Dr. Sven Apel |
Collections: | SciDok - Der Wissenschaftsserver der Universität des Saarlandes |
Files for this record:
File | Description | Size | Format | |
---|---|---|---|---|
dissertationThomasBock.pdf | Dissertation | 3,6 MB | Adobe PDF | View/Open |
Items in SciDok are protected by copyright, with all rights reserved, unless otherwise indicated.