THE READING ROOM / BOOK GUIDE
The art of the metaobject protocol
A book by Gregor Kiczales about metaobject protocols in Common Lisp, written for programmers who want to understand how a language's object system can be opened up and redesigned from within.
About the book
The Art of the Metaobject Protocol examines a design idea in Common Lisp: letting a program inspect and change the behavior of its own object system. The book grew out of CLOS implementation work and treats the metaobject protocol as an engineering artifact, something to specify, argue about and build. It sits where object-oriented programming meets language design, at the point where the boundary between a program and the language running it becomes a decision someone has to make.
Kiczales writes for readers already comfortable with Lisp and with reflective programming concepts. The presentation is specification-style, with commentary on why the protocol takes the shape it does. Passages are dense and reward slow reading and repeated returns. The design arguments ask you to weigh tradeoffs instead of accepting a single implementation.
Its central concern is control: who decides how classes, methods and generic functions behave, and how much of that machinery a programmer should be able to replace. That question keeps the book relevant beyond any one Lisp system.
How to read it
Read with a Lisp environment at hand if possible. Small experiments against an implementation make the specification portions more concrete, since you can see the objects being described. Keep notes on terms as they appear; the vocabulary is specialized and builds on itself.
This is not a tutorial that walks from first principles to working code. Normative description and design rationale are interleaved, and the two strands need separate attention. Read the rationale for the reasoning and the specification for precision, and skip ahead when a section assumes familiarity you do not yet have.
Who it suits
This book suits programmers who already know Common Lisp and want to understand reflective object systems at a deeper level. It also serves readers interested in language design who want a detailed case study of how an object protocol can be specified and justified. Anyone building or extending a CLOS implementation will find the design discussion directly relevant. Readers new to Lisp or to metaprogramming will struggle without groundwork first.
Reading considerations
The book is tied to Common Lisp and to the implementation landscape of its time, so some details may not match current systems. Check which CLOS implementation you intend to use and compare its documented behavior against the book's specification rather than assuming agreement. The density is real; plan for a slow read rather than a quick survey.
Follow the HN conversation
38 different recommenders are recorded in the upstream dataset. These are AI-classified source counts, not an independent rating.
Search HN comments about this book ↗
Explore videos on the same subject ↗
Book notes prepared with DeepSeek, using catalogue records and Open Library subject information. They are reading guidance, not a personal review or a verified chapter-by-chapter account. Book details can vary by edition. HN data methodology · Book metadata and covers.
