Applying Open Source Software Principles in Product Lines

Product line engineering improves the management of variability and reuse in embedded systems. It helps to exploit mass customisation leading to individualised products to the customer. It has lead to heavy development processes and many global planning for a complete range of products (a product line). Open source development does not have a strong impact in embedded systems companies, partially because the culture of open source developers that do not adhere to global planning and heavy processes. However, both developments need (often) distributed development, and here is the point where software product lines and open source of them can profit from achievements of each other. This paper investigates several options of using open source and its methodology in product line development to reduce the problems of distributed development and to increase the quality. A small part of the paper discusses to options for open source development to benefit from variability management of software product lines and in this way improve the possibility to customise the resulting products. keywords: software product lines, open source software, inner source, variation management, commodification, Introduction In the last decades, embedded systems providers have introduced product line engineering in order to improve the management of the diversity of their product and to reduce development effort. The move towards software product line engineering is usually strongly based on large-scale reuse, leading to cost and time-to-market reduction and quality improvement and maintenance cost reduction. Software product line engineering is a means to develop software applications using platforms and mass customisation. Mass-customisation enables the fast and efficient production of an individualised product to the customer. The artefacts used in different products have to be sufficiently adaptable to fit into the different systems produced in the product line. This means management of variability in all artefacts of the product line. In particular a product line often defines a platform of architecture, components and supporting tools to provide efficient standardised mechanisms to manage variability. Other trends in software engineering do not always relate to software product lines, whereas their application in an organisation doing product lines may be beneficial. Vice versa, other approaches towards software engineering may benefit from the introduction of product line principles. In particular, this holds for open source development, since it appears to be a profitable way to obtain good software. Open source development has many different forms, but the prime aspect of it is that a distributed group of people work together to produce a piece of software. However, it is a different from doing distributed development than what is presently in use within most companies doing product lines. Open source communities work for their own motivations, often related to the drive to produce a piece of functionality and to share this with others. There is not only a benefit of open source for product line engineering. Because of the diverse use of open source software, product line practices can be attractive for open source communities. However, many characteristics of product line engineering do not match to present day practices in open source development. For instance the managed processes are not always feasible or accepted. It is profitable to combine the benefits of both approaches it is necessary overcome these differences. Presently, there is limited interaction between the open source and product line development communities, although its interest is already stated in literature : “. Studying the identified problems in more detail and evaluating the proposed alternative approaches more carefully is a goal of future work in this area. ” This paper investigates the relationship between open source and product line development. It is based on results obtained in the ITEA project COSI . The following observations can be made: Software product lines needs usually large investments, long term planning, explicit variability management, and often this means large, thus distributed development. The IT industry uses open source in a profitable way to obtain good software. It helps to reduce the costs through effort sharing. It helps to reduce the lead time through agile development. And it is an intrinsically distributed way of developing systems. This parallel concern for distributed development is the main inspiration for trying to combine open source and product line practices, to the benefit for all involved.