How do open source developers implement variability in their system?

Page content

Context

Variability in software refers to the ability to instantiate different variants of a program by selecting from a range of features and options. This concept is crucial for tailoring software to meet diverse user needs and contexts. Research in this area aims to grasp and control the complexities that come with the numerous possible combinations of features and to ensure that each software variant operates correctly. However, empirical research has almost exclusively focused on solution space variability that relies on the C preprocessor, while little is known about how variability is implemented in other ecosystems.

Motivation

Due to this strong focus on the C preprocessor, it is unclear whether our models and assumptions match the practice outside of this scope. Many other variability mechanisms have been discussed in a scientific context, but there is little evidence that they are employed in practice.

Goal

  • Search for evidence that other variability mechanisms are used in open source projects
  • Implement a GitHub miner that scans open source repositories for selected variability mechanisms (e.g., Rust feature flags)
  • Analyze usages of selected variability mechanisms
  • Discuss how identified instances are similar to/ different from the C preprocessor
  • Discuss whether existing research matches these use cases

Requirements

Recommended:

  • You know what a software product line is and have attended the corresponding lecture
  • You feel comfortable with git
  • You know your way around GitHub

Essential:

  • You feel confident with either Java, Python, or Rust
  • You are excited about learning new things and ready to face obstacles

Pointers

Contact

Alexander Schultheiß, alexander.schultheiss@students.unibe.ch