Thursday, September 16, 2004
« More discussion on service-oriented and ... | Main | Deductive and Inductive UI designs »

I just had a conversation with a member of a Microsoft product team earlier this week. He said that he wished they were doing something comparable to ndoc in Visual Studio 2005, but they aren't.

 

For those who don’t know, ndoc (http://ndoc.sourceforge.net) is a very cool tool that takes the XML comments and assembly metadata from your .NET code and creates MSDN-style help in html and chm format. The XML document support is available in VB if you use vbxc and C# supports it directly. ndoc is open-source software (OSS), and it is very good. I use it on a regular basis and recommend it.

 

In my mind, the idea that it was somehow bad that Microsoft hadn’t created an alternative to ndoc triggered the question: “Why is it that Microsoft feels the overwhelming need to compete with and replace perfectly good tools that already exist? Especially free ones?”

 

Not to say that there might not be perfectly good reasons to compete with ndoc on some level. I guess I don't know. But what's the point? To crush the spirit and community effort put forth by some group of loyal .NET developers? That certainly makes little sense...

 

But I keep forgetting - OSS is evil. Donating time and effort for no immediate monetary return is bad. If you aren’t making money directly off your work then there’s something wrong with you and you should be crushed.

 

But wait! I am a Microsoft Regional Director (RD) – a relatively small group of people around the planet who help evangelize Microsoft tools and technologies. And I am a Microsoft Most Valuable Professional (MVP) – another group of people around the world who help support the Microsoft community.

 

The whole point of the RD and MVP programs is for Microsoft to acknowledge people who donate time and effort to Microsoft and the community for no immediate monetary return.

 

So now I'm conflicted... Donated time/effort is evil when done independently. But Microsoft sanctioned donation of time/effort is encouraged. Say what!?

 

Honestly, Microsoft just needs to get past this knee-jerk reactionary stance on OSS and realize that it has strong benefits for all of us – including Microsoft.

 

Part of the recent success of .NET has been due to OSS. Tools like ndoc and a host of others have made .NET development truly productive for many organizations. Productive in ways that even Visual Studio 2005 is unlikely to match. This is only good, as it has spurred adoption of .NET where it otherwise may not have been used.

 

It is also good in that it has forced some traditionally anti-Microsoft people to rethink their world-view. If OSS can thrive in the .NET space as well or better than it can in the Java space then is .NET really such an evil thing? I’ve personally used the existence and broad support for various .NET OSS tools to bring some Java-focused people to a realization that .NET is a pretty damn cool platform.

 

And finally there’s the competitive aspect. Microsoft is only good when it has competition. Without competition Microsoft tends to serious lag.

 

Look at Office and the sorry improvements in that space over the past few years. No competition, and the products get incremental and generally lame improvements (with the exception of Outlook 2003, which is really nice!). I don't think I've used a single new feature of Word since Office 97. I just keep upgrading to stay current, not because I get any value.

 

On the other hand look at .NET. Due to the competition from Java and J2EE we Microsoft-loyalists now have the (arguably) best programming platform and tools ever created. Not that .NET is perfect by any means, but it is seriously cool and fun and productive!! All thanks to the Java world, which provided competition and drove Microsoft to make radical shifts in tools and technologies in ways that really benefit us in important ways.

 

And due to the continued pressure from OSS (and other vectors), we’re seeing substantial improvements coming in the 2005 series of .NET tools. For example, integrated unit testing (to compete with nunit).

 

And I do think this competitive view is healthy, but also frustrating. It is healthy because it drives innovation and integration of cool tools - increasing my productivity. It is frustrating because Microsoft somehow doesn't exude a sense of competition as much as “OSS is evil and must be destroyed” - which is totally counter-productive on all levels.

 

Competitors aren’t evil, they just are.

 

I think competition, especially with OSS, should be viewed as a net win overall.

 

Suppose Microsoft does (at some point) create something comparable to ndoc, but integrated into Visual Studio. We (as users) would get an integrated and probably more polished documentation tool, and the guys who built ndoc would be freed up to go create some new and even cooler OSS tool to fill in some other missing functionality in the Microsoft development tools. Everyone wins – at least if you look at the bright side of things :-)

 

In the meantime I have work to do - including building some updated online help files by using ndoc.

 

Thursday, September 16, 2004 9:28:55 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [3]  | 
Thursday, September 16, 2004 12:47:40 PM (Central Standard Time, UTC-06:00)
Interesting thoughts. I too am a Microsoft MVP and also donate a great deal of my time to my user group http://www.cttdnug.org as well as chairing the International .NET Association's Marketing Committee. http://www.ineta.org

I must say that participating in these communities has been rewarding far beyond the sense of accomplishment one gets from working on an OSS project. ( or whatever intangible rewards there are to be had from such work) The level of access to the product teams we have as MVPs is invaluable. The MVP summit was a great experience. Being flown to Redmond for a week of fun and interaction with the language/tool teams all on Microsoft's dime was a real treat.

There are many other very tangible benefits to these programs that simply don't exist (or exist to a far lesser degree, I really don't know) in the OSS community.

I find myself wondering if the need for Microsoft to implement their own version of these tools isn't a bit of a chicken and egg problem. Do they do it because they want to compete with and/or wipe them out or do they do it because we love the tools and then say to Microsoft "Why the heck can'y YOU guys do that and include it in VS?". Something to think about. Of course, that strategy hasn't worked to get them to do something about VSS so maybe I'm off the mark here.

Anyhow, interesting read. Keep up the great work.

Dave
Thursday, January 19, 2006 11:02:50 AM (Central Standard Time, UTC-06:00)
Just a late note... (extremely?)

Since .NET is freely available, and such other OSS tools for .NET development are available (SharpDevelop, et. al), tools suchs NDoc would still be needed for these developers. So even if Microsoft integrated their version of NDoc int VS.NET, NDoc would still need maintenance developers.

Just a thought...

(Love your books by the way...)

-John
John Baughman
Wednesday, May 24, 2006 6:51:33 AM (Central Standard Time, UTC-06:00)
But I don't want to spend my precious development time downloading countless OSS add-ons and painstakingly integrating them into my build process just to find that when I upgrade Visual Studio, most of them stop working.

Having your build tools installed with your development environment is one better than having one-click plug and play add-ons, which is in turn is several times better than having to download the source code of your build tools then spend hours/days trying to get them to build and integrated into your build process (which is often the way with OSS).

I can understand why that Microsoft employee said what he did. With an open source tool filling an important gap in their development environment, their customers are at the mercy of the NDoc developers. Microsoft may upgrade Visual Studio, but their developers may have to wait months, maybe years before support for all the cool things they've added ripple through to the open source tools. I'm still waiting for NDoc to support .NET 2.0 and it's been around for what, 6 months now?
Richard Poole
Comments are closed.