How do open source developers implement variability in their system?
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
- Preprocessor-based variability in open source and industrial software systems: An empirical study
- Software variability in service robots
- Variability mechanisms in software ecosystems
Contact
Alexander Schultheiß, alexander.schultheiss@students.unibe.ch