Here's a nice wiki post on metamodeling:
http://en.wikipedia.org/wiki/Metamodeling.
Metamodeling, or meta-modeling in software engineering and systems engineering among other disciplines, is the analysis, construction and development of the frames, rules, constraints, models and theories applicable and useful for modeling a predefined class of problems. As its name implies, this concept applies the notions of meta- and modeling.
"Metamodeling" is the construction of a collection of "concepts" (things, terms, etc.) within a certain domain. A model is an abstraction of phenomena in the real world; a metamodel is yet another abstraction, highlighting properties of the model itself. A model conforms to its metamodel in the way that a computer program conforms to the grammar of the programming language in which it is written.
In software engineering, the use of models is more and more recommended. This should be contrasted with the classical code-based development techniques. A model always conforms to a unique metamodel. One of the currently most active branch of Model Driven Engineering is the approach named model-driven architecture proposed by OMG.
This is a high level description of the actual approach to developing clouds from scratch. In the Force.com platform, the Java-like Apex (controller) and HTML/Javascript Visualforce (view) are actually scripts that execute within a particular model, that is described by metamodel data. So rather than actually executing compiled code, or managed code, or even interpreting a script directly, the Apex/Visualforce code gets to learn what the model even is, or the specifics of the environment it will execute in - at runtime. A custom built Java virtual machine handles the processing of the code such that the governor limits are respected properly within their multitenant architecture. Although Salesforce was originally written in Java, most of their standard CRM is written in Apex/Visualforce and all will be converted to that platform soon.
Why is this important? Because they realized in hindsight that the better way to approach cloud architecture is to begin with metamodeling, meta-metadata, and various levels of virtualization,
not with standard programming such as model-view-controller. Someday when most all programming is done within clouds and not on personal computers, which is basically inevitable, the only model view controller paradigms will be those that exist within them. So within a described bubble designed to facilitate MVC execution (conforming to it's metamodel, with metadata and meta-metadata), is where we will see our traditional programming world that today exists as a hard-wired, domain specific technology. The traditional programming model will no longer make sense in the world of
utility computing.
There will be Java-like virtual machines hosting any number of completely different types of virtual machines within them. Furthermore these nested virtual machines will have the ability to alter the behavior of levels above and levels below them, with appropriate controls such that a truly polymorphic and yet protected environment is ensured.
Oh wait - that's already happening! SaaS maturity level 4 multitenancy
