We seek to support the development of open, distributed applications from patible software abstractions. In order to rigorously specify these abstractions, we are elaborating a formal object model for software composition in which objects and related software abstractions are viewed as patterns of communicating processes. The semantic foundation is Milner's calculus, and the starting point for our object model is Pierce and Turner's encoding of objects as processes in the experimental PICT programming language. Our experience shows that common object-oriented programming abstractions such as dynamic binding, inheritance, genericity, and class variables are most easily modelled when metaobjects are explicitly reified as first class entities (i.e., processes). Furthermore, various roles that are typically merged (or confused) in object-oriented languages such as classes, implementations, and metaobjects, each show up as strongly-typed, first class processes. Keywords. Componen...