In an OO language such as C++, Java, and hopefully vcc; A meta-object protocol is a standard way to extend the object ("class") system so that things like multiple-inharitance, multimethods ("works with more than one class") and alternate orders of evaluation can be implemented in a strait-forward manner.<br><br>The book "The Art of the Meta-Object Protocol" explains all about it + I'm sure you can find info. about Meta-Object Protocols (MOPs) on the web.<br><br>The MOP deals with implementing metaclasses (classes that control how standard classes work) and metamethods (methods that control how the class system works) and be defined or extended upon.<br><br>The use of the MOP is to make it easier to implement system tools such as class browsers, GUIs (like Smalltalk-80), new OO features, different OO techniques, etc.) or any other "system tool" more easily.