Adopting Free/Libre/Open Source Software Practices, Techniques and Methods for Industrial Use*

Article excerpt

Abstract

Today's software companies face the challenges of highly distributed development projects and constantly changing requirements. This paper proposes the adoption of relevant Free/Libre/Open Source Software (FLOSS) practices in order to improve software development projects in industry. Many FLOSS projects have proven to be very successful, producing high quality products with steady and frequent releases. This study aims to identify FLOSS practices that can be adapted for the corporate environment. To achieve this goal, a framework to compare FLOSS and industrial development methodologies was created. Three successful FLOSS projects were selected as study targets (the Linux Kernel, the FreeBSD operating system, and the JBoss application server), as well as two projects from Ericsson, a large telecommunications company. Based on an analysis of these projects, FLOSS best practices were tailored to fit industrial development environments. The final results consisted of a set of key adoption opportunities that aimed to improve software quality and overall development productivity by importing best practices from the FLOSS environment. The adoption opportunities were then validated at three large corporations.

1. Introduction

To structure the software development process, organizations generally adopt a software development methodology. Avison and Fitzgerald (2003) define a software development methodology as "a recommended collection of phases, procedures, rules, techniques, tools, documentation, management and training used to develop a system." There are many available software development methodologies that an organization can follow to drive its projects, ranging from the traditional waterfall model to more modern ones that adopt an agile approach. For example, Ericsson AB, one of the major software producers of telecommunication systems and the site of the present study, uses a software development methodology called Streamline. Created by and for Ericsson, this methodology is widely implemented in-house with some project-specific variations.

In parallel with the development of formal methodologies, over the past twenty-five years Free/Libre/Open Source Software (FLOSS) communities have evolved a distinctive way of producing software. Noticing the success of several FLOSS projects, industry has shown particular interest in understanding how the massively distributed development teams commonly found in FLOSS communities manage to deliver high quality software. Distributed development poses significant challenges for software developers, but FLOSS teams often seem to be able to overcome these challenges. Based on the hypothesis that industry can benefit from adopting some practices from FLOSS development, the aim of this study is to collect, identify and analyse relevant FLOSS software development practices and then transform them to general adoption opportunities.

Free/Libre/Open Source Software has been an object of research for some years. FLOSS projects have been analysed mainly from two perspectives: as a product or as a development methodology. Studies investigating FLOSS as a product focus on measurable characteristics of the software or projects, such as defect density, software packaging statistics, software growth or number and type of contributors. Target projects of such studies have included the Apache httpd server (Paulson et al., 2004), the Linux kernel (Paulson et al, 2004), the GCC compiler (Paulson et al., 2004), the Debian Linux distribution (Amor et al., 2005; González-Barahona et al., 2001), OpenBSD (Li et al., 2005), and the Eclipse development environment (Herraiz et al., 2007). In the second group, we find studies investigating FLOSS as a way of producing software. These studies can be broadly categorised by their focus on community culture (e.g., Glass, 2003), organisational models (e.g., Gacek and Arief, 2004; Lattermann and Stieglitz, 2005) or processes and methods (e. …