I just got done reading a very interesting thread over on TheServerSide.Net about James Newkirk releasing a conversion tool from NUnit units tests to Team System.
This got me to thinking and stewing about how I love C# and entire .NET platform and I hate the fact that it isn't as open as it should be. I know about Mono and it's the saving grace for .NET but the tools and developer infrastructure isn't quite here yet.
Recently when talking to partners about interoperability, Steve Balmer was quoted lately as saying "we can't support open source--but we can support interoperability." Microsoft will either eat crow here or die. There is just NO reason why all developer tools and frameworks shouldn't be Open Source. The old way of developing software where you wait for the "elite developers" give us the tools and frameworks we need are gone. It's just too powerful to have a living breathing community behind a framework or tool.
Do you know what the most exciting technologies are in .NET right now for our team at work? No it's not VS.NET 2005 it's not running CLR code inside SQL Server or HTTP Endpoints (which seem useless to me unless I really want BAD design and put my business logic in the database).
No, what we are most excited about using are things like NHibernate, Spring.NET and dotLucene. These are all great Open Source driven projects. These are just some of the frameworks we are excited about.
On the developer platform side we've been using NUnit / MbUnit, CruiseControl.NET and NAnt to provide our own "Team System." The thing is Microsoft isn't really innovating anything here... and there already exists a nice base from which they could have built on or supported via their excellent VS.NET IDE.
Sometimes I really wonder if Microsoft doesn't get it--or they just pretend to not get it because they cannot see how they'll replace the income that comes from selling developer tools instead of open sourcing and providing a truly powerful platform that anyone can contribute / fix / extend.
I understand why open sourcing Office or Windows may not be in Microsoft's best interest but open sourcing developer tools and frameworks only makes your MORE competitive and invite more applications to be written for your platform.
Major issues would be solved quickly by open source:
- Bugs in the framework libraries and half implemented libraries. The classic example is Windows Forms, everyone goes out and buys third party controls to make really nice looking Windows Forms applications. Why should I have to buy third party controls to get decent GUI widgets? Ever tried a Windows Forms Toolbar, DataGrid, or TreeView? Half implemented libraries? Take a look at System.Collections and compare it to Java's collections or better yet Jakarta Commons Collections.
- Adoption rate, (.Net has had troubles with a lot of VB6 and C++ developers) Open Source is just a magnet for developers cause they know that the project will be there as long as people are interested in the product. Open Source projects don't get canned or orphaned because they aren't making money. I am more willing to use an open source product than a commercial product because I know that it'll be around!
- Lack of some important key libraries out of the box or at least available as extensions. Java has a TON of libraries that simply missing on .NET (e.g. application servers e.g. JBoss, lightweight containers (ala Spring), PDF parsing and creation (iText), Imaging, BarCoding, etc... in .NET the only way to get them is to pay some closed source vendor big bucks. Open source developers write software they need. Commercial companies write software they think their customers will buy. Open source comes closer to the target of what actually is useful and pragmatic for real developers to use because it provides automatic dogfooding in real world situations. You can tell that Microsoft isn't building many applications with .NET right now. They are building frameworks for their customers, but not real applications. (Somebody prove me wrong!)
The nice thing is people are creating this open source projects without Microsoft's support but it would sure be nice with more corporate support like Sun does for Java.
If Microsoft could sit down with developers like myself and figure out what our frustrations are rather than trying to get us to write software that is tied to the Office or SQL Server platform they might just beat Linux / OS X. If they don't, they'll see developers leaving in droves to find friendlier pastures and as developers leave so will the need to run Windows.
Non-partisan software developer