Typical Development Processes of Free and Open
Total Page:16
File Type:pdf, Size:1020Kb
FAKULTÄTFÜRINFORMATIK Technische Universität München Master’s Thesis in Informatics TYPICALDEVELOPMENTPROCESSESOFFREE ANDOPENSOURCESOFTWAREPROJECTS daniel g. siegel FAKULTÄTFÜRINFORMATIK Technische Universität München Master’s Thesis in Informatics TYPICALDEVELOPMENTPROCESSESOFFREE ANDOPENSOURCESOFTWAREPROJECTS author: daniel g. siegel supervisor: univ.-prof. dr. peter hubwieser advisor: marcus bitzl date: may 15th , 2012 DECLARATION I assure the single handed composition of this master’s thesis only supported by declared resources. Munich, May 15th, 2012 Daniel G. Siegel iii ABSTRACT Free and Open Source Software is a research subject which has con- stantly been gaining importance for modern digital life over the past 20 years. The World Wide Web as we know it today would have been impossible without the free availability of source code, vivid develop- ment communities and consequent support for open standards. De- spite these facts, there has been little research about the particular similarities or differences in the development processes and struc- tures of Free and Open Source Software projects. This thesis aims to provide an introduction into the development processes and project management strategies of Free and Open Source Software projects. To accomplish this, a project analysis catalogue is established with which Free and Open Source Software can be ana- lyzed systematically and satisfactorily for the goals of this thesis. Fol- lowing this catalogue several Free and Open Source Software projects are analyzed in order to identify concertedly models and processes. The results corroborate suggestions that especially large and ma- ture Free and Open Source Software projects have established similar structures and processes. This includes very hierarchical structures with akin roles, similar release cycles and analogical development processes which cannot be resembled with traditional or agile soft- ware engineering methods. iv CONTENTS 1 introduction1 1.1 Problem and Motivation . 1 1.2 Outline of the Thesis . 2 2 theoretical background3 2.1 Grounded Theory . 3 2.2 Qualitative Content Analysis . 4 2.3 Application in Computer Science . 5 2.4 Software Engineering Comparison Models . 6 2.4.1 Traditional Software Engineering Models . 6 2.4.2 Agile Software Engineering Models . 8 3 related work 10 3.1 Project Structure . 10 3.2 Motivation . 11 3.3 Software Engineering . 11 3.4 Case Studies . 12 4 methodology 13 4.1 Project Selection . 13 4.1.1 Category . 13 4.1.2 Popularity . 13 4.1.3 Project Age . 13 4.1.4 Activity . 14 4.1.5 Community . 14 4.2 Final Selection . 15 4.3 Visualization of Project Data . 15 4.3.1 Commits by Author . 16 4.3.2 Commits by Year . 17 4.3.3 Time Based View . 17 4.3.4 Commits by Month . 18 4.3.5 Authors by Month . 19 5 development process analysis 21 5.1 Drupal Project Analysis . 21 5.1.1 History . 21 5.1.2 Community . 21 5.1.3 Release Process . 24 5.1.4 Development . 26 5.2 Plone Project Analysis . 27 5.2.1 History . 28 5.2.2 Community . 28 5.2.3 Release Process . 30 v contents vi 5.2.4 Development . 31 5.3 Python Project Analysis . 34 5.3.1 History . 34 5.3.2 Community . 34 5.3.3 Release Process . 37 5.3.4 Development . 38 5.4 PHP Project Analysis . 41 5.4.1 History . 41 5.4.2 Community . 42 5.4.3 Release Process . 44 5.4.4 Development . 45 5.5 GNOME Project Analysis . 47 5.5.1 History . 48 5.5.2 Community . 49 5.5.3 Release Process . 51 5.5.4 Development . 54 5.6 KDE Project Analysis . 54 5.6.1 History . 55 5.6.2 Community . 55 5.6.3 Release Process . 57 5.6.4 Development . 61 5.7 Proposition for a Project Analysis Catalogue . 62 5.7.1 Description of the Project . 62 5.7.2 Project Category . 62 5.7.3 Scope of Analysis . 62 5.7.4 License . 62 5.7.5 History . 62 5.7.6 Community . 63 5.7.7 Release Process . 63 5.7.8 Development . 64 5.8 PostgreSQL Project Analysis . 65 5.8.1 Project Category . 65 5.8.2 Scope of Analysis . 65 5.8.3 License . 65 5.8.4 History . 65 5.8.5 Community . 65 5.8.6 Release Process . 66 5.8.7 Development . 67 5.9 MySQL/MariaDB Project Analysis . 68 5.9.1 Project Category . 68 5.9.2 Scope of Analysis . 68 5.9.3 License . 69 5.9.4 History . 69 5.9.5 Community . 69 5.9.6 Release Process . 70 5.9.7 Development . 71 contents vii 5.10 Fedora Project Analysis . 72 5.10.1 Project Category . 72 5.10.2 Scope of Analysis . 72 5.10.3 License . 72 5.10.4 History . 72 5.10.5 Community . 73 5.10.6 Release Process . 74 5.10.7 Development . 74 5.11 Debian Project Analysis . 75 5.11.1 Project Category . 75 5.11.2 Scope of Analysis . 75 5.11.3 License . 75 5.11.4 History . 76 5.11.5 Community . 76 5.11.6 Release Process . 77 5.11.7 Development . 77 6 comparison of development processes 79 6.1 Project Origin . 79 6.2 Community . 80 6.2.1 Community Size . 80 6.2.2 Communication . 81 6.2.3 Conferences . 82 6.2.4 Roles . 82 6.2.5 Project Founders . 84 6.3 Release Process . 85 6.3.1 Versioning Scheme . 85 6.3.2 Release Schedule . 86 6.4 Development . 89 6.4.1 Development Lead . 89 6.4.2 Development Workflow . 90 6.4.3 Feature Inclusion Process . 90 7 discussion 93 7.1 Project Origin . 93 7.2 Community . 93 7.3 Release Process . 95 7.4 Development . 95 8 conclusion 97 bibliography 100 Appendix 105 a comparison of project graphs 106 b project resources 111 b.1 Drupal . 111 b.2 Plone . 111 contents viii b.3 Python . 112 b.4 PHP.............................. 113 b.5 GNOME . 114 b.6 KDE.............................. 115 b.7 PostgreSQL . 115 b.8 MySQL/MariaDB . 116 b.9 Fedora . 117 b.10 Debian . 118 LISTOFFIGURES Figure 2.1 Grounded Theory Process . 3 Figure 2.2 Inductive Qualitative Content Analysis Process 4 Figure 2.3 Original Waterfall Model . 6 Figure 2.4 Spiral Model . 7 Figure 2.5 Extreme Programming Model . 8 Figure 2.6 Scrum Model . 8 Figure 4.1 The Commits by Author Graph . 16 Figure 4.2 The Commits by Year Graph . 17 Figure 4.3 The Time Based View Graph . 17 Figure 4.4 The Commits by Month Graph . 18 Figure 4.5 The Authors by Month Graph . 19 Figure 5.1 Commits by Most Active Authors, Drupal . 22 Figure 5.2 Commits by Year, Drupal . 24 Figure 5.3 Major Releases of Drupal . 24 Figure 5.4 Time Based View on Commits, Drupal . 25 Figure 5.5 Drupal Release Process Phases . 25 Figure 5.6 Commits by Month, Drupal . 26 Figure 5.7 Authors by Month, Drupal . 27 Figure 5.8 Commits by Most Active Authors, Plone . ..