Reflective programming languages are those where users' programs are a
llowed to customize in an organized way the behavior of the language t
o their own needs. For ten years now, most of the work on reflection r
evolved around the definition and the implementation of metaobject pro
tocols which express this organization. No methodologies have been pro
posed for reflective programming per se. This paper proposes a first o
ne aiming at the design of composable metaobjects. Given two independe
ntly developed reflective customizations, this methodology proposes pr
inciples to be observed in their design such that they can be composed
using standard base-level aggregation or specialization. While this p
aper focuses on a simple MOP and illustrates the methodology on specif
ic examples, this methodology can be generalized to other languages wi
th different MOPs. For instance, we discuss how to adapt it to CLOS.