The MEF composition engine operates on (composes) abstractions called ComposableParts. By default, parts are implemented as simple .NET classes annotated with MEF attributes (ExportAttribute and ImportAttribute). But, we envision that some parts will be implemented through variety of different mechanisms. For example, parts can be .NET types annotated with external files, DLR objects, XAML files, etc. We call such alternative means of specifying parts “custom programming models.”

In v1 of MEF, we focused on getting the default programming model super easy to use (most MEF users need to only understand a handful of types) and getting the ComposablePart abstractions right (making it possible to create custom programming models). We did not focus on making it easy to create custom programming models (quite advanced scenario).

Andreas stepped in and filled in that hole. He created a MEF contrib project which is a set of helper libraries that make it quite easy to create custom programming models. For all those who like to play around with internals of technologies like MEF, I recommend looking at the library.