MicrosoftJust Say No
And to foretell the expected response, no, I am not saying or suggesting that you should reject Microsoft. This post is a suggestion to Microsoft. Microsoft should start to say no.
Let me give you the scenario that we are talking about, and I hope that it will make it clearer:
A customer tells microsoft: "We really want to use this new approaches that we have been seeing talked about, like inversion of control and dependency injection. Can you provide that for us?"
Now, up to this point, what Microsoft has been doing is to release a copy of some OSS project. It usually has greater complexity and lower quality than the equivalent OSS project that it is trying to copy (more on that in another post).
The reasoning for that is always: "Our customers asks us for this since they want a Microsoft XYZ"
You know what? There is another path. That path is saying, "You know what, there are already some good implementations of that in the OSS world. We are not intereted in trying to duplicate that."
More posts in "Microsoft" series:
- (18 Sep 2007) Redefining bugs as features as a standard operation procedure
- (14 Sep 2007) Without Words
Comments
Here here.
I was listening to a podcast with Martin Fowler and David Heinemeier Hansson. One opinion expressed was that Microsoft aren't opinionated - they just try and do EVERTHING. This means that customers aren't given any real direction by Microsoft, just a mass of confusing options.
Furthermore, if MS were more opinionated, they could start to point customers at OSS technolgies for things that they didn't focus on.
http://www.hanselman.com/blog/HanselminutesPodcast65MartinFowlerAndDavidHeinemeierHansson.aspx
I can't speak for everyone at Microsoft, but I can speak for how we do things at p&p. I could be wrong but based on the context it sounds like you are referring to the new DIAB (Dependency Injection Application Block).
We didn't decide to do the DIAB because customers said they wanted a new container. We did have customers who said they would like for the DI to be pluggable. We also heard this from folks such as ALT.NET. On the subject of DI, we've been delivering guidance that utilizes DI for 3 years. Why? Because we see the value that having an IOC/DI brings to development.
We decided to do DIAB because we wanted to give customer's the option to use the DI mechanism of their choice with our guidance. We also thought as part of that we should it would be valuable to have a default (but pluggable) DI container that customers (and our guidance) could use. Especially if using NHibernate, Castle, etc was not an option.
Maybe in the organizations your work in there is no issue wiht open-source tools, but I can tell you there are many large enterprises where using NHibernate, Log4Net, etc is just not an option. Now you can either say that due to their corporate policy they should be crippled, or maybe they should go write it themselves. Or perhaps they have to change their policy. In big companies such policies rarely change. Should the developers have to suffer?
On the subject of quality, what exactly do you mean? Are you talking about code-quality? The quality of the capabilities the products offer? all of the above?
Regards
Glenn
The context is not limited to the DIAB, nor is it limited to the P&P team.
Why is it any business of Microsoft to try to fix that, that is what I am saying.
The fact that Microsoft has been unwilling to say no to customers for a long period of time has caused this situation, not the other way around.
I usually don't have issue with the code quality from Microsoft, MS CRM & the Petshop stuff not withstanding. What I am talking about is usually capabilities, the flexibility, the knowledge. See my next (or is it previous) post about not looking at what is out there (and yes, I know that the P&P does look, to some extent).
Hell, take a look at the EF efforts in a direction that was abandoned years ago by anyone else in the field, because it proved to be a dead end for real applications.
Why is it any business of Microsoft to try to fix that, that is what I am saying.
The fact that Microsoft has been unwilling to say no to customers for a long period of time has caused this situation, not the other way around.
<<<
What is bizzare, is that I could tomorrow package up Windsor, call it the InsaneIoC Framework, and sell it on a commercial basis.
AT that point, the same Open Source code is now commercially available, and oddly, for many of those organisations that is all that matters (after all they use Linux from RedHat for example).
It is purely about having somebody else they can call upon to be responsible.
And yes, MS trying to provide code solutions (which is what a lot of the P&P stuff is) just won;t ever really work - MS by it's very nature cannot move at a fast enough pace to keep up with the changes that are required here. They would be better standing back and providing best practice guidance around other solutions. Just think how good MS MVC could have been had they wrapped Castle MonoRail instead of rolling their own!
There is commercial support out there for those products.
People seems to refuse to believe this.
Yes, they should have to suffer. Suffering is the single best catalyst for change - take a look through history.
There's a simple, though sometimes painful, solution: don't feed the apathy, red tape, and status quo. Just walk away from employers with draconian, nonsensical policies. Today I use the tools I want. I work smarter, faster, and happier. Sure, you may lose some friends, have to relocate, etc., but you'll survive :)
The fact that Microsoft has been unwilling to say no to customers for a long period of time has caused this situation, not the other way around. <<
Isn't that exactly the point? Microsoft is a business and anything they can do to make their platform and tools more attractive over their competitor is Microsoft's business. If that means they duplicate OSS because that makes it easier for them to sell into certain organizations, then from a shareholder point of view, that's what they should do.
I think the best we can expect and certainly should push Microsoft towards is to have them build their solutions pluggable and make their implementations merely the default implementation that we can replace. Sure, most companies will stick with the default, because it is considered the gospel, but at least we get the choice to fight th battles for what we think is better one shop at a time.
GAH. That's exactly how I felt when this issue came up at the DotNetRocks show.
For once, I want Microsoft to actively recognize an open source tool as a viable choice. I want them to say "you know what, we recognize that such-and-such does a pretty good job. We won't try to buy it, we won't try to write our own implementation. We'll just let the community provide for itself".
This isn't about profit, since most of MS's own implementations usually don't sell by themselves, you get them with the framework/studio/server/whatever.
This is, IMO, the only way in which the .NET platform would gain the popularity and widespread use that Java enjoys.
Comment preview