MEF going MS-PL, the little engine that could.


MEF is going MS-PL!!!

Several weeks ago, we shipped our first drop of MEF on CodePlex. The source license for that drop was MS-LPL or the Microsoft Limited Permissive License. This license enables the source to be freely used on the Windows Platform.  Obviously, we don’t ship everything under MS-PL. In the case of MEF, it was our long-term plan because it made sense for us to do so, especially because it had the potential for universal appeal, including for cross-platform use.  Shipping MS-LPL was the easiest way for us to quickly get MEF out the door as we worked through some details.

Once we shipped we heard a bunch of feedback from the .NET community, including from Miguel De Icaza, founder of Mono. The crux of the feedback was that they wanted MEF licensed under an OSI-approved license, such as the MS-PL.  We have listened to the community feedback and are accelerating our efforts. Thanks for caring!

When / How?

It’s already done! As a matter of fact if you check CodePlex, you’ll see we’re already there, and have released new source. There are two caveats to this move.

  • There is a piece of code that MEF currently depends on which we are not planning to ship as part of MEF’s official release in the framework. For the current drop we have ripped this source into a separate System.ComponentModel.StructuredValues.dll which the new MEF source references and which is still under the MS-LPL license. The rest of the source that references the dll (which is 99% of MEF) is now MS-PL.

  • In order to put the new license in place, we’ve needed to purge the old releases and source. This is because Codeplex projects can’t have source drops with 2 different licenses simultaneously.  Fortunately you can have one release that has 2 licenses as this one does. 🙂  – Special thanks to Sara Ford and Pete Coupland for their last-minute after-hours fire-fighting jedi skills to get the purge done and the license change so we could get out the door.

We are doing this interim drop with the dll as a stop-gap measure. In the next full drop, which will be in about 3 to 4 weeks,  this dll dependency will be removed from MEF completely and the entire drop will be MS-PL.

Why not wait?

We could have waited and not done this interim drop. That would have been the easiest, and we would have had less explaining to do 😉 We chose not to wait based on your feedback. We want you to know that we heard you and are doing something about it. We want to show you sooner rather than later that we mean business.

What does all this mean?

It means you can grab MEF’s source and use it on whichever platform you like!

If you take the source you are also free to fork it. MEF ships in the .NET Framework so we are going to be super responsive to customer asks. We hope that forking is not needed however it’s nice to know that it’s an option if necessary.

Go get it here:

Comments (11)

  1. Mike Strobel says:

    Well done, Glenn!  I’m always quite pleased to see Microsoft going the open-source route on their new frameworks.  I’ve been having lots of fun working with Composite WPF lately, and I’m looking forward to digging into MEF as well.  Even the best product documentation leaves a lot of unanswered questions, but being able to actually inspect the code yourself makes the prospect much more attractive.  Thanks for your efforts!

    Best regards,


  2. Thanks Mike, glad you guys are seeing benefit from it 🙂

  3. rex says:

    Non starter.

    Going forward I’ll release all my changes to open-source products on my own LPL. My LPL does not permit my code to be used under Windows.

  4. Anthony Tarlano says:

    Great job! I will try it out on Mono ASAP!

  5. @Anthony

    I recommend waiting until the next code drop in a few weeks. Currently the MEF source still has a dependency on a dll which is under MS-LPL (mentioned in my post). We are fixing this in the next code drop at which point that dll will no longer be needed, and the MS-PL source will be sufficient.

    Thanks for your patience!

  6. Hi Rex

    As I mentioned in the post and the comment above, the source is now pure MS-PL, but the dll dependency is not. By the next source drop nothing will be under MS-LPL.



  7. Bernard says:


    Wrong blog post there, mate. 😉

    Thanks for this, Glenn. The MS-LPL is a waste of time, so this is great to see. 🙂

  8. I know, I’m evil to ask that, but since you posted this more than "about 3 to 4 weeks" have past, so is there a fresh MEF drop waiting to be released anytime soon (like, tomorrow-soon?)

  9. @Krzysztof

    Not evil. We’re a bit behind but working on getting a drop out the door. I’ll be working to get this done now.

  10. Como siempre, cuando estás de buceo por la red, te encuentras cosas muy interesantes, y esto es