End-user adaptation of software structure offers a potentially major benefit: giving people the means to customise a program to suit individual needs, interests and contexts. However, in their different ways, users, analysts and developers are all challenged by complexities and costs when handling structural variation. Developers and analysts struggle to understand and work with what is happening in deployments. Each user is often unsupported in understanding what changes to software structure and its use might work well in terms of either objective functionality or subjective experience.
We are building tools and infrastructure that will let people in these roles handle such systems, understand relevant design niches and use contexts, and be more innovative. This work is woven together with advances in inference methods, formal models and conceptual frameworks. Collectively, this enables our large scale real-world deployments of software applications. These deployments serve both as useful everyday applications for large numbers of users and as testbeds for our new approach—user experiences that both ground and drive our technological, methodological and conceptual advances.
Treating a software class as a varied and changing population of software instances is the overarching concept that makes this work coherent and interconnected. Drawing metaphorically from biological concepts of species and evolution, the population concept is based on accepting—or even taking advantage of—the scale, variety and dynamism possible in contemporary software.