The CLOS metaobject protocol is a high-performance extension to the CommonLisp Object System. The authors, who developed CLOS, introduce this approach to programming language design, describe its evolution and design principles and present a specification of a metaobject protocol for CLOS.