Eric Hexter and Jeffery Palermo are the founders of MVC Contrib, an open source extension to Microsoft's ASP.NET MVC. MVC Contrib is slightly more than a year old and is nearing its first production-grade release.
1. Gentlemen, for our readers unfamiliar with the project, can you explain what MVC Contrib has to offer?
Eric:
Mvc Contrib is an open source community run project that is meant to supplement the ASP.Net MVC Framework by providing add ons to the framework. It includes helpers to generate html in the views, test helpers to make testing the mvc less verbose, it includes integrations to Dependency Injection Frameworks, it include alternative view engines, it includes strongly typed helpers around route configuration and some additional debug helpers.
2. Why did you first start developing it as a formal project?
Eric:
We started the MvcContrib project the day that the first public MVC Community Technology Preview was available, I think it was November of 2007.
Jeffery:
I was probably the very first non-Microsoft adopters of the ASP.NET MVC Framework. I first deployed partywithpalermo.com on Scott Guthrie's prototype build even before the ASP.NET MVC product team started on CTP1. I knew that I was going to want to extend it and share my extensions, and I knew I wasn't alone. Eric and I were at an internal Software Design Review at Microsoft for the ASP.NET MVC Framework as well as some other ASP.NET technologies, and it was there that we decided how to organized the project. We wanted to have a well-known place for developers everywhere to share their extension to the framework. Since this framework is pluggable by nature (a first for DevDiv), lots of extensions have cropped up.
3. Much of MVC Contrib was developed in parallel with ASP.NET MVC itself. Did you get much support from Microsoft during that time or were you pretty much on your own?
Eric:
We did not get help parse, but we took code and patches from everyone in the community. This includes prototypes from blogs of the MVC Team Members. We really built extensions to the Framework and the one aspect that helped us was the fact that the ASP.Net MVC team released their source code as part of the CTP releases. If there was a point where it we needed more information about how an extension point worked, we could go right to the source code. This was really a ground breaking change in terms of how Microsoft delivers parts of its framework. Other groups in Microsoft like the Patterns and Practices team made their source code available, but it is important to know that the P&P team does not write the .Net framework. They deliver reference implementations, sample applications, and guidance. So the MVC source code release really was a First in terms of transparency during the product development cycle.
4. Are there any other projects that you see as competing with or complementing MVC Contrib? Would you be interesting in combing them if the opportunity presented itself?
Eric:
The real goal for a large portion of the MVC Contrib project is to have our functionality to be implemented in the MVC Framework itself. On every release of the framework we have gone through each namespace and decided if we are duplicating functionality and if we were; we delete our implementations. As far as competing projects, we do not look at it that way. While we have a number of view engines, we maintained Spark and nhaml for a time and when each of those view engines were getting enough popularity we jointly decided to split those projects out so that they could get the proper support and maintenance. So our goal is not to have an enormous tool box of widgets. We would rather focus on extensions to the framework that make it easier to create maintainable software projects rather than trying to include the kitchen sink.
5. What do you see as ASP.NET MVC's biggest strength? Or its biggest weakness?
Eric:
The biggest strength of the MVC framework is the fact that it is a web ui framework that can stay out of your way as a developer. There are a number of extension points so if the framework is missing something, it is easy to create an extension. The biggest weakness is that the MVC Team provided a number of different scenarios rather than sticking to some solid guidance. This may not be a weakness if you consider that if they did stick to one way to they may have chosen a way that I might not like...
Jeffery:
- It's biggest strength is that it is a framework - that's it. It doesn't try to do to much. It lays the foundation and stays out of the way of "feature" development. ASP.NET, over the years, has accumulated so many "features" that they get in the way when using the framework itself. ASP.NET has become a product, with Membership, Personalization, etc. ASP.NET MVC laid the foundation, based on simple interfaces. Now, the community will share extensions "features", and the good ones will be used, and the bad ones won't have to be supported for 10+ years because of being shipped with a product.
- It's biggest weakness is the story to get started and the guidance around it. Every ASP.NET MVC Framework presentation I've seen has shown the basics, but they have also shown bad practices. People are going to do what you tell them to do, bad practices and all. I'm hoping to help that in my book, ASP.NET MVC in Action along with my co-authors Ben Scheirman and Jimmy Bogard.