Entries
RSS 2.0

Comments
RSS 2.0

ALT.NET Podcast on IoC and DI

I’m a few days late on this, but I participated in the latest episode of the ALT.NET Podcast. In it, Brad Wilson, Mike Moore, and I talk about inversion of control and dependency injection and how it can help you write better software. I had a great time recording it, and I thought it was a good conversation. Major thanks to Mike for organizing the podcast and inviting me to participate, and to Brad for not showing me up big time and making me look like a complete dunce. ;)

Part two is coming soon now available, where we get into other fun things like inversion of control with dynamic languages, and Microsoft’s relationship with the open source community.

This Is Why We Can’t Have Nice Things, People

Rob Conery (a Microsoft employee) has been working on a series of screencasts (part one, part two) illustrating the construction of a web commerce application using TDD. His intent is to learn the process, and by doing so, help others to do the same. These screencasts have caused some major backlash on the intertubes, where people have attacked him for not fully understanding TDD, and therefore presenting his allegedly poor ideas as Microsoft best-practices. The debate culminated in a conference call between Rob, Aaron Jensen, Ben Scheirman, and Scott Bellware.

First off, let me say that Microsoft must have killed Scott Bellware’s puppy or something. All you have to do is say the word “Microsoft” to raise his blood pressure to unhealthy levels. He’s clearly very intelligent, and has good things to say, but every time he tries to make a point, it gets drowned in piss and vinegar.

Note to Scott: not everything has to be Israel vs. Palestine. We want to hear what you have to say, but lay off the holier-than-thou stuff and you won’t come off sounding like a pompous ass. People don’t respect those that don’t respect others. The more you alienate people, the less you’ll be taken seriously — and the less effective you will be at getting your message across.

Anyhow, a comment by David Nelson on Rob’s post describing the conference call sums up why this whole situation is ridiculous:

When you open up with “My name is Rob Conery and I work for Microsoft”, you are declaring yourself to be an expert at whatever you are talking about.

Are you kidding me? I really hope that this is an aberration and the majority of the .NET community doesn’t feel this way. If someone works for Microsoft, I tend to think they have their finger on the pulse of what’s going on in the company (or at least in DevDiv) — but Microsoft is a huge corporation, so even that is suspect. Just because someone works for Microsoft doesn’t mean they’re an expert at anything, or should even be listened to in the first place. Now, I tend to think Rob is a pretty sharp guy, but that’s more due to his contributions to the community than the fact that he works for Microsoft.

Software developers are smart people. Since when did we forget how to think for ourselves?

This, in a nutshell, is what’s wrong with the .NET community, and why Microsoft largely remains a “walled garden”. If a Microsoft employee can’t communicate their perspective to the community at large without it being taken as the One True Way, they will simply stop talking, and the trumpet of Sales and Marketing will drown out the voice of the technologists. This is not the fault of Microsoft employees, or the company itself. If people truly do take the word of Microsoft employees as fact, the problem is systemic, and each developer that thinks this way shares in the blame.

This is also at least part of the reason why Microsoft has traditionally been hesitant to associate their name with open-source software. This results in an offshoot of the Not Invented Here syndrome, Not Invented at Microsoft — which leads to unnecessary projects like MSTest, ASP.NET MVC, and Unity. Don’t get me wrong, there’s nothing inherently wrong with Microsoft creating these projects, but they are all “me-toos” created after similar open-source efforts (NUnit, MonoRail, and Windsor, respectively) have had success. Now, I understand that a lot of developers have difficulty convincing the “powers-that-be” in their companies that open-source is a viable alternative to commercial software. A lot of companies are wary that if they build their products on open-source, if they need commercial support, it won’t be there.

However, what if, instead of hiring leaders of the .NET community to create official, Microsoft Brand(tm) alternatives to existing open-source software, Microsoft certified and funded open-source projects directly? For example, NHibernate and the Castle Project are two of the most well-respected open-source efforts in the .NET community. Their software provides fantastic value to a huge number of companies.

What if Microsoft awarded these projects a grant, so they can provide commercial support, and then told its customers that these are quality software products, and are safe to use in their infrastructure? Microsoft would save money, improve the legitimacy of .NET as a development platform, and give the developers that donated their time to the community a chance to make their hobby into their day job.

As long as the average .NET developer believes that what someone says is solid gold just because their paycheck says Microsoft on it, this will never happen.

Microsoft Supports Open-Source Software

Okay, I was skeptical too, but it’s true. They proved it to me.

In one of the comments on this post on Rob Conery’s blog, I saw Sam Ramji, the Director of Platform Technology Strategy at Microsoft, mention that they were interested in sponsoring .NET open-source efforts by donating MSDN licenses. I had just recently released the first beta of Ninject (then called Titan), so I sent Sam an email asking whether Microsoft would be willing to sponsor the project. Sam replied (in a matter of hours, no less) letting me know that they’d be happy to donate a MSDN license to the project, and connected me with Garrett Serack, Microsoft’s Open Source Community Lead to get the details worked out.

A little while later, I received a congratulatory email welcoming me to the MSDN Program. The Ninject project was now the proud new owner of a MSDN Premium subscription, and a MSDN Visual Studio Team Suite license. I never paid Microsoft a cent, or jumped through bureaucratic hoops, or anything. I was using a copy of Visual Studio 2005 Standard Edition that I’d gotten at a launch conference in November of 2005, and I was concerned that my open source efforts wouldn’t be able to keep up once .NET 3.5 and Orcas comes out next January. The MSDN license ensures that I won’t be hindered by financial constraints. (Which is great, since Ninject’s budget is holding steady at $0. :)

I mentioned this to a coworker, and he laughed, saying that Microsoft probably just wanted to see if my source code infringed on any of their patents. I corrected him immediately, and if anyone tries to tell me that Microsoft doesn’t care about open source software in the future, I will be sure to mention their support for Ninject. Microsoft is the world’s largest software company, and with an issue as sensitive as intellectual property and open source, there are bound to be multiple factions within the same company. People who are more in tune with the business of software than the technical underpinnings (like Steve Ballmer) are much more likely to spurn open source, seeing it as synonymous with Linux and therefore a threat to the Windows platform. I’m certain that at least a large subsection of developers within Microsoft believe in open-source software and would choose to contribute to OSS efforts if possible.

Microsoft is changing. The Microsoft Permissive License is a legitimate open source license, basically just BSD plus an extra clause describing patent disputes. New developer efforts like the DLR (and associated languages, IronPython and IronRuby) are being released under the MPL. Microsoft is even accepting community code contributions for IronRuby. How much more open source can you get than that?

Now, does this mean Microsoft will embrace OSS as a business model? No. They’re not releasing the source for Windows or Office anytime soon. However, at least in parts of the company, there’s a growing effort to support and cultivate open source efforts, rather than stomping them out or usurping them. What I really would like to see from Microsoft is company contribution back to existing open source efforts, particularly for developer tools. For example, rather than introduce their own unit testing system, they should just contribute support to nUnit or MBUnit. Until then, this is a good start.

IronRuby and a Paradigm Shift at Microsoft

John Lam just announced that Microsoft will be accepting source code contributions for the IronRuby project! They’ve already impressed me by releasing the DLR, IronPython, and IronRuby under their Microsoft Permissive License, which is essentially just BSD with extra patent protections so no one sues them for a bajillion dollars. I have to admit, I didn’t think I’d see the day they’d accept community contributions to a project. More and more, it seems that Microsoft is starting to embrace open source. I don’t think they’re going to GPL the Windows source anytime soon, but opening the source of developer projects is a big step.

I can’t wait for the DLR… I’m hoping they can make IronPython and IronRuby first-class citizens in Visual Studio as well. I’m also interested in seeing what sort of fun DSL support the DLR can provide…

XP and Vista

For one of the projects I’m working on, I’m setting up a virtual server for QA purposes. To allow testing, we created a virtual hard disk of each platform that we deploy our application on. Nothing else was installed on these images, except for the OS and (possibly) an associated version of Office.

xp-vista-vhds

The numbers say it all. Vista is at least 5 times the size of a comparable XP installation. And for what? Aero? This is why I’m sticking with XP for now.

Don’t ask me how the Vista image without Office is actually larger than the one with Office 2007, though…