Contribution Barriers to Free/Libre and Open Source Software Development Projects
Total Page:16
File Type:pdf, Size:1020Kb
Der Fakultät für Wirtschaftswissenschaften der Universität Duisburg-Essen, Campus Essen, vorgelegte Dissertation zum Erwerb des Grades Dr. rer. nat. Contribution Barriers to Open Source Projects Dipl.-Inform., Dipl.-Math. Christoph Hannebauer, geboren in Offenbach am Main Datum der mündlichen Prüfung: 2016-10-19 Erstgutachter: Prof. Dr. Volker Gruhn Zweitgutachter: Prof. Dr. Klaus Echtle Abstract Contribution barriers are properties of Free/Libre and Open Source Software (FLOSS) projects that may prevent newcomers from contributing. Contribution barriers can be seen as forces that oppose the motivations of newcomers. While there is extensive research on the motivation of FLOSS developers, little is known about contribution barriers. However, a steady influx of new developers is connected to the success of a FLOSS project. The first part of this thesis adds two surveys to the existing research that target contribution barriers and motivations of newcomers. The first exploratory survey provides the indications to formulate research hypotheses for the second main survey with 117 responses from newcomers in the two FLOSS projects Mozilla and GNOME. The results lead to an assessment of the importance of the identified contribution barriers and to a new model of the joining process that allows the identification of subgroups of newcomers affected by specific contribution barriers. The second part of the thesis uses the pattern concept to externalize knowledge about tech- niques lowering contribution barriers. This includes a complete categorization of the existing work on FLOSS patterns and the first empirical evaluation of these FLOSS patterns and their relationships. The thesis contains six FLOSS patterns that lower specific important contribution barriers identified in the surveys. Wikis are web-based systems that allow its users to modify the wiki’s contents. They found on wiki principles with which they minimize contribution barriers. The last part of the thesis explores whether a wiki, whose content is usually natural text, can also be used for software development. Such a Wiki Development Environment (WikiDE) must fulfill the requirements of both an Integrated Development Environment (IDE) and a wiki. The simultaneous compliance of both sets of requirements imposes special challenges. The thesis describes an adapted contribution process supported by an architecture concept that solves these challenges. Two components of a WikiDE are discussed in detail. Each of them helps to lower a contribution barrier. A Proof of Concept (PoC) realization demonstrates the feasibility of the concept. II Contents Abstract II Contents III List of Definitions VII 1 Introduction1 1.1 Models of FLOSS Communities.........................1 1.1.1 The Onion Model.............................2 1.1.2 Joining Scripts..............................3 1.1.3 Steinmacher et al.’s Model........................4 1.1.4 Technical Aspects of the Joining Process................5 1.2 Contributor Motivation..............................8 1.2.1 Theoretical Works............................8 1.2.2 Empirical Works.............................8 1.2.3 Attractiveness............................... 10 1.3 Contribution Barriers............................... 10 1.3.1 Rationale of the Definition........................ 11 1.3.2 Specific Contribution Barriers...................... 12 1.3.3 New Developers in General Software Development Projects...... 13 1.3.4 Joining FLOSS Projects......................... 14 1.3.5 Exploring Contribution barriers..................... 15 1.3.6 Summary of Contribution Barriers.................... 19 1.3.7 The Effect of Lowered Contribution Barriers.............. 20 1.4 Research Goals.................................. 22 1.4.1 Identification of Contribution Barriers.................. 23 1.4.2 Lowering Contribution Barriers..................... 23 1.4.3 Wiki Development Environments.................... 24 2 Contribution Barriers to FLOSS Projects 25 2.1 Exploratory Survey................................ 25 2.1.1 Demography............................... 26 2.1.2 Developers’ Motivation.......................... 27 2.1.3 Contribution Barriers........................... 30 2.1.4 Discussion................................ 32 2.1.5 Conclusion................................ 33 2.2 Main Survey.................................... 34 2.2.1 FLOSS Projects.............................. 35 III Contents 2.2.2 Research Hypotheses........................... 36 2.2.3 Participant selection........................... 38 2.2.4 Demography............................... 42 2.3 Contributor Motivation.............................. 46 2.3.1 Usage Motivation............................. 46 2.3.2 Open Question on Modification Motivation............... 47 2.3.3 Closed Question on Modification Motivation.............. 49 2.3.4 Open Question on Submission Motivation................ 50 2.3.5 Closed Question on Submission Motivation............... 52 2.3.6 Comparison to Related Work....................... 53 2.4 Contribution Barriers............................... 54 2.4.1 Open Question on Modification Barriers................. 55 2.4.2 Closed Question on Modification Barriers................ 56 2.4.3 Open Question on Submission Barriers................. 58 2.4.4 Closed Question on Submission Barriers................ 60 2.4.5 Discussion................................ 61 2.5 Improvement Suggestions............................. 63 2.5.1 Results.................................. 64 2.5.2 Discussion................................ 66 2.6 Analysis...................................... 66 2.6.1 Language and Contribution Barriers................... 66 2.6.2 Experience and Contribution Barriers.................. 67 2.6.3 Projects and Contribution Barriers.................... 69 2.6.4 Own Need, Motivation, and Occupation................. 69 2.6.5 Motivation and Contribution Barriers.................. 72 2.7 Threats to Validity................................. 76 2.7.1 Construct Validity............................ 76 2.7.2 Content Validity............................. 77 2.7.3 Internal Validity............................. 77 2.7.4 External Validity............................. 79 2.8 A New Model for Joining FLOSS Projects.................... 79 2.9 Conclusion.................................... 80 3 FLOSS Pattern Languages 82 3.1 Introduction.................................... 83 3.1.1 Classification of FLOSS Patterns..................... 83 3.1.2 Related Work on Pattern Languages and Pattern Maps......... 84 3.1.3 Pattern Maps for the FLOSS Pattern Language............. 85 3.2 Categories of FLOSS Patterns.......................... 86 3.2.1 Integrate FLOSS Assets......................... 89 3.2.2 Start a New Project from Scratch..................... 91 3.2.3 Publish Closed Sources.......................... 92 3.2.4 Licensing................................. 94 3.2.5 Architecture................................ 96 IV Contents 3.2.6 Cultivate a User Community....................... 98 3.2.7 Tools for New Developers........................ 102 3.2.8 Empower the Most Suitable....................... 105 3.3 Patterns Lowering Contribution Barriers..................... 108 3.3.1 Low Contribution Barriers........................ 109 3.3.2 Preconfigured Build Environment.................... 113 3.3.3 Unit Tests for Contributors........................ 117 3.3.4 Low-hanging Fruit............................ 120 3.3.5 Bazaar Architecture........................... 123 3.3.6 Exposed Architecture........................... 128 3.4 Evaluation..................................... 132 3.4.1 Mozilla Firefox.............................. 133 3.4.2 Rack................................... 138 3.4.3 Ruby on Rails............................... 141 3.4.4 Spree................................... 144 3.4.5 Rake................................... 148 3.5 Discussion..................................... 151 3.5.1 FLOSS Patterns and the Success of FLOSS Projects.......... 151 3.5.2 Validation of Relationships........................ 154 3.5.3 Newly Observed Relationships...................... 157 3.6 Conclusion.................................... 158 4 Wiki Development Environments 160 4.1 WikiDE Concept................................. 160 4.1.1 Requirements............................... 160 4.1.2 Existing Wiki Systems for Programming................ 165 4.1.3 WikiDE Contribution Process...................... 169 4.1.4 Architecture................................ 170 4.2 CI Services.................................... 175 4.2.1 Current Limits of FLOSS CI....................... 176 4.2.2 Security Analysis of CI Systems..................... 178 4.2.3 Secure Build Servers........................... 182 4.2.4 Validation................................. 186 4.2.5 Limitations................................ 187 4.2.6 Related Work............................... 188 4.2.7 Summary................................. 188 4.3 Reviewer Recommendations........................... 189 4.3.1 Related Work............................... 190 4.3.2 Expertise Explorer............................ 195 4.3.3 Empirical Evaluation........................... 199 4.3.4 Results.................................. 201 4.3.5 Threats to Validity............................ 206 4.3.6 Conclusion and Future Work on Reviewer Recommendations..... 208 V Contents 4.4 Proof of Concept Realization........................... 209 4.4.1 Environment Overview.......................... 209 4.4.2 Software Forge.............................. 209 4.4.3 Immediate Feedback..........................