Understanding Variability in Software Ecosystems
Software ecosystems are vibrant communities of developers and users supported by a shared platform and building on each others solutions. Examples of such communities are the Linux kernel, eCos, Debian, Eclipse, and Android. A major factor complicating the development, testing, and evolution of these ecosystems is variability---the diversity of systems they offer, supporting different hardware platforms and user features (functionalities). Effectively, variability replaces the development of a single system with the simultaneous development of a huge number of system variants.
The aforementioned ecosystems offer vast variability, yet approach it in radically different ways. At one end of the spectrum, Linux maintains a centralized representation of its mostly static and closed variability, similar to feature models. At the other end, Android distributes variability information across apps, offering dynamically-reconfigurable and open end-user systems, supported by a service-based infrastructure.
This talk will compare the different approaches to variability, correlating them to the growth of the ecosystems, their module dependency structures, and application domain characteristics. The study of these ecosystems offers new insights on the applicability and limitations of current variability models and languages and suggests future directions for variability management research.
This work is done in collaboration with Thorsten Berger, Helge Pfeiffer, Reinhard Tartler, Steffen Dienst, Andrzej Wasowski, and Steven She.