A pleasant comment was left on my NHibernate Best Practices article concerning the utter uselessness of going with non-Microsoft technologies. It troubles me that after years of building a mature, open-source community in the Microsoft world, that this opinion still persists. This could be regarded as "just one opinion," but it seems to be a pervasive idea that I regularly encounter whenever I'm with more than a few developers (even many senior ones at that). "There's one in every crowd," as my mother used to say in a feigned attempt to make me feel better after being picked-on during recess. Thankfully for all of us (or for me anyway), this isn't grade school anymore. The phenomenal contribution that the open-source community offers to the Microsoft Province must be realized, or at least noted by all. This isn't a Microsoft.NET vs. ALT.NET face-off; this is about finding the right tools for the job to deliver the highest value to our clients.
Sure, it's not always easy to pick up new technologies, but that's just the nature of the beast if we truly desire to leverage the best tools and techniques for the problem at hand. As developers we are often forced into situations of lesser comfortability. I'll never forget the day I switched from Active Server Pages with VBScript to the world of ASP.NET with C#. The word "discomfort" is an understatement as I began tackling the ASP.NET page life-cycle, a brand new language (C#), and the paradigm of OOP. With patience, perseverance, and much trial and error, the switch has certainly proven the merits of doing so. This kind of discomfort is by no means a one time deal throughout our development career. Recently, I felt similarly uncomfortable, albeit to a far lesser extent, when I began using Castle MonoRail to logically separate presentation from controller/business layers. Once the "a ha!" moment arrived (which usually arrives over the course of days and weeks, and isn't a moment at all), the benefits were concretely obvious and the discomfort began to melt away. Although it was not a trivial road to take - as it never is - the commitment to figuring out how to leverage MonoRail effectively was greatly rewarded with the satisfaction of developing more maintainable applications in a shorter amount of time, to the benefit of myself and, more importantly, my clients. The point is that this discomfort will be encountered regardless of whether or not it's a Microsoft provided technology, or a technology from the open-source community; this kind of discomfort must be sought out and welcomed to find the best tools for the job.
Microsoft is good...as in really good. They successfully write some of the most complicated software in the world and have created (i.e., took lots of great ideas from other languages) one of the best languages available on the market, C#. Sure they've released some things that they probably wish they hadn't, and sure they've secretly taken over the world with a software mafia, but much of our development success is due to the tools that Microsoft has made available to us (I can see you LAMP people rolling your eyes). But what Microsoft does not have a patent on are innovation, creativity, and breakthrough ideas. In fact, it is the world outside of Microsoft that we often need to look to find "the up and coming idea" that will change the way we develop. MVC.NET is pretty cool, right? Castle MonoRail has been out for years and still triumphs in ease of use and capabilities over many aspects of MVC.NET. LINQ to Entities looks like a huge time saver, right? NHibernate has been in production environments for the last few years and still puts LINQ's capabilities to shame. That's not to say MonoRail and NHibernate will continue their functional dominance over the recently released Microsoft competition. Microsoft is hard at work, incorporating the great ideas from these open-source products into mainstream development, as they should be doing! What's important to note is that although not all open-source projects should be celebrated as paradigms of innovation, many paradigms of innovation have come from open-source projects. Imagine if NUnit, CruiseControl.NET, log4net, MonoRail, Boo, Spring.NET, PageMethods, NHibernate, NMock, Yahoo UI, or the many other open-source projects which deserve mention, were never written? (And these are just a few of the development assistance tools out there among a sea of other open-source projects!) Would we have LINQ today? Would we have MVC.NET? Would we have the multitude of applications that Microsoft is releasing to remain competitive with open-source alternatives? Perhaps...but then again, perhaps not.
It's certainly hard, if not impossible, to determine which non-Microsoft alternatives and open-source projects encapsulate "the next great idea." But to ignore them all impedes innovation, stifles "pushing the envelope," and makes it harder for Microsoft to figure out what else should be made mainstream in addition to their own ideas. Microsoft has tremendous talent behind its doors, as does the ALT.NET community. Keeping either door shut is a detriment to the expression of our own talents and to the benefit of those who are paying our bills.
Billy McCafferty