  Many user studies of home automation, as the most familiar representative of
the Internet of Things, have shown the difficulty of developing technology that
users understand and like. It helps to state requirements as
largely-independent features, but features are not truly independent, so this
incurs the cost of managing and explaining feature interactions. We propose to
compose features at runtime, resolving their interactions by means of priority.
Although the basic idea is simple, its details must be designed to make users
comfortable by balancing manual and automatic control. On the technical side,
its details must be designed to allow meaningful separation of features and
maximum generality. As evidence that our composition mechanism achieves its
goals, we present three substantive examples of home automation, and the
results of a user study to investigate comprehension of feature interactions. A
survey of related work shows that this proposal occupies a sensible place in a
design space whose dimensions include actuator type, detection versus
resolution strategies, and modularity.
