Abstract: We have developed a new model for coupling the user-interfaces of a multi-user program. It is based on a multi-user program model that allows users to view programs as active data that can be concurrently edited by multiple users. It consists of a semantic model, a specification model, and an implementation model. The semantic model determines which properties of interaction entities created for a user are shared with corresponding interaction entities created for other users and when changes to a property of an interaction entity are communicated to other users sharing it. It divides the properties of an interaction entity into multiple coupling sets and allows users to share different coupling sets independently. It supports several criteria for choosing when a change made by a user to a shared property is communicated to other users including how structurally complete the change is, how correct it is, and the time at which it was made. The specification model determines how users specify the desired semantics of coupling. It associates interaction entities with inheritable coupling attributes, allows multiple users to specify values of these attributes, and does a runtime matching of the coupling attributes specified by different users to derive the coupling among their user-interfaces. The implementation model determines how multi-user programs implement user-customizable coupling. It divides the task of implementing the coupling between system-provided modules and application programs. The former support a predefined semantic and specification model which can be incrementally extended by the latter. We have implemented the coupling model as part of a system called Suite. This paper describes and motivates the model using the concrete example of Suite, discusses how aspects of it can be implemented in other systems, compares it with related work, discusses its shortcomings, and suggests directions for future work.