views:

283

answers:

6

Microsoft like implementing their own versions of popular open-source frameworks and assemblies, for example:

  • Microsoft's MVC Framework vs MonoRail
  • Microsoft's Unity IoC container vs Castle Windsor / Spring.net / Ninject etc
  • Microsoft's VS Unit Test framework vs nUnit (and various others)

Questions:

What else has Microsoft 'borrowed'?

Which are better in each situation and why?

What are people's attitudes towards the official Microsoft stuff vs the ALT.NET versions?

What do you think is next to be taken under the Redmond wing?

EDIT Ok, instead of which is 'better', which do you prefer to use as a developer?

+1  A: 

In the case of Unit Testing I've heard the answer from a Microsoft official. In fact, if I recall correctly, Microsoft's feature is even based on the NUnit code base.

The reason for copying this particular OpenSource product (and others, I've been told) is that customers want this. At first, this might seem like a cheap pretext but I can actually imagine some corporate customers who prefer it this way. Additionally, the Microsoft employee claimed that it's easier for Microsoft to provide customer support if they implemented the program themselves because they can take an extended responsability for the source. If that's true, OpenSource adoption has a long way to go. :-(

Konrad Rudolph
This sounds like something I've read on Raymond Chen or Eric Lippert's blog. Anything to that?
Joel Coehoorn
I believe its 100% true. OS does have a long way to go; I doublt it will ever get there completely. It may set up camp outside of the forbidden zone, however.
Will
From what I've heard, MS employees aren't supposed to look at the actual source code from an open source project due to possible conflict of interest/intellectual property concerns. This means that they have to implement the same idea from scratch, using the functionality as a guide.
Scott Dorman
A: 

Only kinda related, but I remember back when they first released windows xp I had a computer that would dual-boot between windows 98 and linux. It had an off-brand sound card where the linux driver was buggy; it would work for a while, and then start stuttering in a very distinct way. When I got xp for the machine (free through the school where I was), it's audio driver for the card had the exact same bug!

BTW: anyone taking bets for how long until this gets closed?

Joel Coehoorn
Look, I know your rep beats my rep up for its lunch money, but I have absolutely no idea how your answer is remotely related to the question.
Will
MS _borrowed_ something from the open source community. Downvote if you want: like you said, I have rep to spare.
Joel Coehoorn
Not downvoting... I just wanted an explanation. I'm not a dick! I swear! I'd have to assume that it wasn't a hardware bug and that MS wrote the drivers in order to get that.
Will
Good point: it was probably the hardware vendor peeking at the linux driver to see how they implemented rather than MS.
Joel Coehoorn
ya know, you're much too young to have these kinds of rambling reminscing senior moments... ;-) "Back in my day, we had to whittle our own bits out of wood, and we were too poor to afford anything other than zeros"
Steven A. Lowe
+4  A: 

Why not just take a stick to a hornet's nest?

There's one thing definitely better about MS' versions of these great tools--its much easier to get your MS shop to use a product if it's an official MS product.

If you're a shop that develops for Windows systems, you have to take extra steps when incorporating a non-MS product in yours. There are issues with licensing and documentation that, at a minimum, you must meet. Plus, there's always the internal politics that must be overcome. And, in some cases, your clients may be reluctant to use your product if it uses an "open source" component not officially supported by MS.

Its not fair, but neither is life.

Personally, I like it when MS competes against products like this, as it helps drive new life into the framework.

Will
I agree with the corporate uptake, I've even faced that problem with something simple; log4net
Matthew Rathbone
upvote for the 'newlife' remark.
Joel Coehoorn
+2  A: 

This is completely subjective as what will be "better" for one person won't necessarily be better for another. One difference between a Microsoft implementation of an idea/technology/product and an open source one is that Microsoft has the ability to devote full time resources to the project while open source generally can't.

There is also the question of support. Most open source projects don't come with any type of support other than from the development community. That isn't always a bad thing as you can sometimes get better support like this than from an official (dedicated) support group.

There are many reasons Microsoft does this, one of which is to own a piece of the market in that particular space and drive more customers to their solution rather than a third-party one. Another reason is actual customer demand.

Some other products Microsoft has "borrowed" from open source projects:

  • SandCastle (from NDoc)
  • TFS Team Build (from CruiseControl.NET)
  • MSBuild (from NAnt)
  • ?? (not sure if it has a separate code name, but it's supposed to be part of the MVC Framework) (from SubSonic)
Scott Dorman
Actually, most successful open source projects have full-time developers at their core.
Joel Coehoorn
In fact, most successful large open source projects have *paid* full-time developers at their core. The idea that open source is some how "hobbyist" or done by "neckbeards in their basement" is a myth.
Dark Shikari
I would say that NDoc, CruiseControl.NET, NAnt, SubSonic, Subtext, DasBlog, etc. are (or were) successful open source projects and, as far as I know, with the exception of CruiseControl.NET do not have either full-time or paid full-time developers at their core.
Scott Dorman
A: 

It is completely subjective but in my mind the answer is a definite 'sometimes'. Some of their implementations are better because they make getting started much easier. For example using MS MVC framework is much easier than getting started with Monorail IMO. Monorail and the related Castle projects always seem a bit disjointed which will put off the less than expert developer just looking to get started. On the other hand, some of MS other projects such as Enterprise Library and Entity Framework are so huge and over architected it makes it very hard to get started for anyone. They are bloatware. Just evaluate each product yourself and choose whatever feels most comfortable.

Craig
+1  A: 

What defines better? In most cases management will want to have a product that is "standard practice", so that when they throw a rock into a crowd it will likely hit somebody who can spell the name of product they pretend to support. Sad, but true.

On the other hand, with the muscle MS has, once something is adopted and they are serious, man are they every serious, and that can't be a bad thing either. In some respects MS can be relatively agile for a behemoth. Yet they are still a large corp., and large corp don't move too quick.

David Robbins