ASP.NET MVC Samples, Oxite, and Community
I am writing this sitting on a plane between Joburg and Cape Town, on the way to a User Group meeting to talk about ASP.NET MVC. As I said at the Joburg User Group meeting, ASP.NET MVC is young and we (that is, we the community, not just We, the Microsoft) are still learning about what a "pretty" or aesthetically pleasing MVC application looks like. We have some ASP.NET MVC OSS apps, some Monorail apps, some Rails apps to look to, some Django and Java apps, but we are still finding our way in our spin on this old pattern.
There are still a number of ViewEngines that aren't the default WebFormsViewEngine that are growing in popularity. Folks are familiarizing themselves with the Repository Pattern and other patterns. Folks who had heard of Dependency Injection but hadn't used it are starting to use it. Testability still isn't foremost on many minds.
There are certainly Alpha Geeks, Loud Programmers, or just Talented ones that are impatient with both Microsoft and the community. Why can't they just go from Point A to Point C and skip B?
ASP.NET is mature, and ASP.NET MVC is new. We are all learning, every day. Many folks put themselves out there, in public by sharing their experiences. Quentin Tarentino said:
"He who is most likely to make declarative statements is most likely to be called a fool in retrospect."
There's a lot of Twittering and Blogging going on about Oxite, a new Open Source CMS from a group within Microsoft. It's getting a lot of press, some deserved certainly, but mostly hyperbole. "Microsoft takes dead aim at Wordpress?" Seriously, come on. How come DasBlog or SubText doesn't get that kind of hyperbolic love? ;) "Microsoft predicts DasBlog Global Dominance." (kidding!)
I would encourage you to download the source for Oxite, as I would encourage you to download and read all ASP.NET MVC Open Source applications. Develop your own sense of Code Smell by reading, writing and learning from people you trust. Just because it's called Official ASP.NET MVC Petshop or Contoso MVC Bank or even MVC Storefront doesn't make it gospel.
If you think Oxite or an app that ScottGu created for his blog is the File | New Company project you've been looking for, you'll be disappointed. It doesn't exist yet. Even if it did, you'll likely never be able to Copy/Paste your way to glory.
Oxite is Open Source. If you don't like it, and there are very valid reasons today for concern, I would sincerely encourage you to refactor it and share the results. Follow the project and see what the next release looks like. Just like the ongoing BabySmash saga, let's work as a team to learn what ASP.NET MVC Patterns and Anti-Patterns are. All code has the potential to provide guidance, but you decide if it's a pattern or an anti-pattern. It doesn't matter if Don Box or ScottGu himself wrote it.
I think the team that built it would appreciate it if lots of folks blogged their own "Oxite Code Review" post with improvements and commentary. I want to point you to Rob Conery's most excellent analysis of the situation, and the Oxite code. His review is unblinking, fair, honest, while still kind in tone. Those Hawaiians are just so darned nice.
Javier had an excellent comment on Rob's blog here that reminds me again of BabySmash. I wrote BabySmash wrong, on purpose, with a WinForms-state of mind. I am still working on it today, as it just doesn't smell right.
I think one important thing to note is that Oxite serves as a good example of viewing an MVC implementation from a "WebForms state of mind". This is just my thoughts but I think it would be beneficial to take Oxite and ALTer it a bit to show the flexibility of the MVC framework.
It is a non-trivial think to put oneself, or one's code, out into public. Sometimes it's great, sometimes not so much. But fair, even harsh, criticism can still be constructive and positive. Don't be afraid, Dear Reader, to share your code if you've got it. Some will say it sucks, some will built a corporation around it. Ultimately you have to ask yourself if it was good code, if you learned from it, and if you'd write code like it again.
Rob, ScottGu, Dave Ward and Michael Bach and I are working on an ASP.NET MVC site. It'll be open source, and it'll likely make some percentage of you happy, and some percentage of you sad. Hopefully there will be more of the former, and the latter will share their wisdom and experience and help us make it better. I like being a part of this community for that reason.
The Ruby community's spiritual leader, Matz, is legendarily kind and deferential. As Allan Stevens points out, they say "minswan" meaning "Matz is nice, so we are nice." That definitely jives with the feeling of "ubuntu" and community I'm getting here in Africa.
Be nice, my friends. Write good code, and stay in touch.
I now return me to my regularly scheduled vacation in Africa.