We are presently witnessing a rapid paradigm change in software engineering: from objects to models. This chapter discusses some aspects of the emerging domain of model engineering, mainly those related to meta-modelling and uniform representation of models and meta-models. This much recalls the discussions on classes and objects that were taking place in the early eighties. In the last period, the issue of code interoperability has been dealt with such acceptable solutions as CORBA or the associated IDL language. But we are now witnessing the multiplication of non-executable models, as part of the evolving software development practice. In order to cope with this increasing complexity, a general and regular framework has to be defined. This is being achieved, in environments like the OMG, where all the new models are based on a precise meta-model and where all the meta-models are based on a common and unique meta-meta-model called the MOF. The MOF is rapidly gaining practical importance, between UML and XML, in the industrial strategy of several important companies. It is playing the role of a knowledge bus for all kind of models, object models or legacy models, product models or process models, existing models or yet to be defined models. In particular it is helping to provide a smooth transition from objects and components models to the business processes, workflows and service models that are becoming key elements in the area of Web services.