[NEWS] Virtues of Monoculture, Or Why Microsoft Wins

MrGuvernment

Fully [H]
Joined
Aug 3, 2004
Messages
21,818
People always compare why Linux isnt competative with Windows in the desktop market.... is this the reason why?


+--------------------------------------------------------------------+
| Virtues of Monoculture, Or Why Microsoft Wins |
| from the nice-tools-in-the-cathedral dept. |
| posted by kdawson on Wednesday April 25, @00:17 (Programming) |
| http://it.slashdot.org/article.pl?sid=07/04/25/0050217 |
+--------------------------------------------------------------------+

[0]blackbearnh writes to ask, "Why does Microsoft win the development environment war so often, when we all know it's a lifetime lock-in to Windows? Perhaps it's because the [1]open source community offers too much choice." From the post: "Microsoft offers the certainty of no choices. Choice isn't always good, and the open source community sometimes offers far too many ways to skin the same cat, choices that are born more out of pride, ego, or stubbornness than a genuine need for two different paths. I won't point fingers, everyone knows examples... The reality is that there are good, practical reasons that drive people into the arms of the Redmond tool set, and we need to accept that as a fact and learn from it, rather than shake our fists and curse the darkness."

Discuss this story at:
http://it.slashdot.org/comments.pl?sid=07/04/25/0050217

Links:
0. http://www.onlamp.com/
1. http://www.oreillynet.com/onlamp/blog/2007/04/the_virtues_of_monoculture.html


http://www.oreillynet.com/onlamp/blog/2007/04/the_virtues_of_monoculture.html

The Virtues of Monoculture
Tuesday April 24, 2007 8:41AM
by James Turner in Opinion

I’m probably not saying anything that hasn’t been said before here, but I thought I’d share a few thoughts on why people seem to be drawn to the Microsoft Way. I recently did something at the ‘day job’ that I’ve thought about doing for a long time, but never quite worked up the steam to follow through on, I signed up to participate in a a Microsoft-centric project, and to learn .NET.

I have made abortive stabs in the past to learn to code in the Microsoft Universe. I made a stab back in the bad old COM days, but the number of hoops I was being asked to jump through was more than I wanted to bite off at that time. Since then, I’ve carried that bad taste in my mouth, and resisted adding any Microsoft skill sets to my repertoire, even though it was sometimes a gap in my resume.

I’ve worked frequently in environments where there was the one Microsoft Guy, the evangelist who would constantly tell you how much easier it would have been in .NET. I’ve written them off as Kool-Aid drinking Gates worshipers. But, at the end of the day, I felt that if I was going to criticize them, I really needed to understand where they were coming from. Know thy enemy, and all that.

I spent last week learning in order C#, .NET and VSTO (that’s Visual Studio Toolkit for Office, if you’re not familiar with Microsoft’s alphabet soup.) I used the O’Reilly ‘Learning C#’ book, and did something I rarely do, went through it pretty methodically (at least the first half or so.)

Guess what? Microsoft has a pretty good development suite on their hands. To be honest, C# is largely what I’d do if I could rewrite Java from scratch with no concerns for backward compatibility. It has a couple of really cool features, like the virtual, override and new keywords that let you specify what should happen when you cast a class to it’s base class and then call a method on it that’s defined in both.

Visual Studio is a slick tool that really does let you bang out applications (and with VSTO, plug ins for Office) is very little time. ADO.NET is no worse then JDBC, and is pretty seamlessly integrated into Visual Studio. I was able, by the end of the week, to develop both stand-alone applications and Office plug ins that could talk to back-end databases, having written very little code. From what I’ve seen, ASP.NET does the same for MVC web applications.

So what’s good about a monoculture, and why does Microsoft win so often when people make a decision about platforms? Largely because what the open source community sees as a strength, people trying to get a job done in the real world see as a weakness. We celebrate the diversity of choices available to solve a problem and call it freedom. IT managers and CIOs look at it and call it chaos, confusion and uncertainty.

Should I use iBatis or Hibernate? XFire or AXIS? Perl, PHP or Ruby? Debian, Fedora, Ubuntu or Suse? Make the wrong decision, and you can waste a ton of time, as we found out on a recent project when we wasted a week try to make AXIS2 work for a web service project, only to find out that XFire was the right choice.

For the Microsoft Guy, no such confusion. You use ADO.NET, ASP.NET, C# and Windows. They all work, they’re all well documented from the perspective of a developer’s needs, with nary a disparaging ‘go look at the source’ blow-off. Every time I thought I was going to be stuck, there were a dozen articles explaining how to do exactly what I needed to do, with sample code that was up to date with the versions of the software I was using, and that actually related to the problem I was trying to solve.

Microsoft offers the certainty of no choices. Choice isn’t always good, and the open source community sometimes offers far too many ways to skin the same cat, choices that are born more out of pride, ego or stubbornness than a genuine need for two different paths. I won’t point fingers, everyone knows examples.

Now, least you think I’ve been turned to the Dark Side, there is one BIG problem with a monoculture, which is that you’ve essentially sold your soul for the stability of a clearcut set of choices. You go down the .NET path, you’re pretty much stuck there forever, Mono not withstanding. You’re always going to be running on a Windows platform. You got the pretty gold ring, but Sauron gets to pull your strings and make you dance. For many companies, ones that don’t need to worry about deploying into heterogeneous environments, that’s a deal they’re more than willing to make.

The takeaway I get from this entire line of reasoning is this: that somehow, someway, we need to start doing some winnowing. The 700 lb clue-bat has to be available to pound on the head of those who fork for no better reason than a disagreement over a license, or who should get to call the shots. When we hear about two or more projects that answer the same question, we should be asking ourself “Why don’t they pool their effort and produce one really good solution?”, rather than celebrating diversity for diversity’s sake alone.

Do we really need Ruby on Rails AND Groovy on Grails? When the April Fools’ announcement of Python on Planes came out, it took me a second to realize it was a hoax, because it’s just the kind of ‘doing something for the sake of doing it’ effort that fractionalizes the OSS community. There’s no way to stop people from starting new duplicative projects, nor should we want to, but please God, do we have to actively encourage it?

We spend a lot of time complaining about all the evil ways Microsoft uses to foist themselves on the world. By doing this, we automatically remove any blame that we ourselves may bear for their successes and our failures. The reality is that there are good, practical reasons that drive people into the arms of the Redmond tool set, and we need to accept that as a fact and learn from it, rather than shake our fists and curse the darkness. For we have met the enemy, and it is us, not Microsoft, at least not all the time…
 
I, pretty much, agree with both statements completely. From OEM, to SOHO, to JQP. It's the enthusiast and daring that will take closer inspection to find that things, while they may not always be greener on other pastures (As if they're ever 'greener' anywhere), are often very habitable.
 
It's all very logical and reasonable, though maybe unreasonably polite. I tend to have the perspective that to those not used to the options, choosing one is difficult. For those used to having the options though, they have likely already picked their "favorites", and thus created their own personal monoculture (monoclick?). Having decided on their own personal preferences doesn't help much when discussing things with new folks, but if they are in a position to make decisions without debate, then they are set just fine.
 
I've always considered the video codec scene to be a good example of choice being a problem. There's a zillion codecs, there's no easy way to know what codec a particular video uses, some codecs break compatibility between versions, and there's simply no standard and various people encode with whatever they think is the coolest for the moment. They don't even have extensions to help differentiate them, so many use your generic .avi extension, .avi doesn't even mean anything anymore except "it's probably a video." I have 5-year old .avi's that are useless because after a clean install of Windows I no longer have a codec installed that can play them and no idea what codec it even is.

Contrast this to something like documents. The Word .doc file is pretty much the single universal standard for documents. Other document formats (especially PDF) have their place, but at the end of the day if you have to send that resume out for that potential big job opportunity, you'll send it out in Word format without even wondering if the hiring manager has MS Word. I can open a 10-year old .doc file in Office 2007.

I couldn't imagine exchanging documents in the business world without a standard format. I wish I could even imagine such reliability in my video codecs ; ;
 
I've always considered the video codec scene to be a good example of choice being a problem. There's a zillion codecs, there's no easy way to know what codec a particular video uses, some codecs break compatibility between versions, and there's simply no standard and various people encode with whatever they think is the coolest for the moment. They don't even have extensions to help differentiate them, so many use your generic .avi extension, .avi doesn't even mean anything anymore except "it's probably a video." I have 5-year old .avi's that are useless because after a clean install of Windows I no longer have a codec installed that can play them and no idea what codec it even is.

Contrast this to something like documents. The Word .doc file is pretty much the single universal standard for documents. Other document formats (especially PDF) have their place, but at the end of the day if you have to send that resume out for that potential big job opportunity, you'll send it out in Word format without even wondering if the hiring manager has MS Word. I can open a 10-year old .doc file in Office 2007.

I couldn't imagine exchanging documents in the business world without a standard format. I wish I could even imagine such reliability in my video codecs ; ;

This is less an argument for the benefit of a closed standard and more an argument for open standards, something Microsoft has been notoriously bad at adopting (although they are getting better, credit where it's due). The key isn't for other standards to continue to be developed. The key is for people to decide upon a good, open, standard and stick with it, every time. Remove the financial and other benefits to continually adding to the confusion and there will be less of it.
 
Back
Top