In the past 20 years, AI researchers in knowledge representation (KR) have implemented over 50 frame knowledge representation systems (FRSs). KR researchers have explored a large and surprisingly diverse space of alternative FRS designs. This paper surveys the FRS design space in search of design principles for FRSs. The FRS design space is defined by the set of alternative features and capabilities ? such as the representational constructs and inheritance mechanisms ? that an FRS designer might choose to include in a particular FRS, as well as the alternative implementations that might exist for a particular feature. The paper surveys the architectural variations explored by different system designers for the frame, the slot, the knowledge base, for the inheritance operation, and for access-oriented programming and object-oriented programming. We also discuss the classification operation in detail. We find that few design principles exist to guide an FRS designer as to how particular design decisions will affect qualities of the resulting FRS, such as its worst-case and average-case theoretical complexity, its actual performance on real-world problems, the expressiveness and succinctness of the representation language, the runtime flexibility of the FRS, the modularity of the FRS, and the effort required to implement the FRS.