I’m a software developer that’s been in both camps, using Visual ____ IDE’s + Compilers for years on many projects, then switching off to open source projects, then back again.
Both sides have value, but microsoft’s lunch is currently being eaten for good reason. Java has really taken massive inroads into the enterprise space. C# has taken some of that back, but Java somehow became the new cobol, which amazes me in more ways than I can count. This means java programmers will be around connecting their beans and tomcat serverlets back into new stuff for years to come.
For small projects, Microsoft has not created scripting languages that are small and portable. This is where ruby, python, and perl have eaten its lunch. All three are much easier to use than their .net equivalents because they’re working within minutes and work the same on innumerable platforms of the last 5-10 years of all operating systems. If they’d like to try to reclaim this. Repackage IronPython in something as standalone and simple as python2.5 and pythonforwin. The CLR+.Net runtime are a cool idea, but don’t make a developer install the moon and the stars just to use the microsoft alternative to their usually easy to install and use program.
Microsoft has some (very important) things going for it:
If you don’t care too deeply how things work, you can get quite a bit of stuff pre-made for you, that work okay out of the box. This only requires a little cash, or can even be free with the new express studio.
Setting up builds that work for each developer is simple for small to medium small projects that don’t require tons of external tools and libraries
“Open Source” (I mean, doesn’t this translate to != MS in this discussion) has the following things going for it:
Rarely is one company is dictating implacable, opaque api’s
Often simple enough to be completely understood
Eschews code generators instead using libraries
Often a product of multiple dedicated people with academic training, or a single passionate developer, not an often anti-academic group of developers who view themselves as immune from reading research.
Often conforms and contributes to standards
Often very well documented, or small enough to require less documentation
Errors in API’s/libraries are fixed quite quickly.
You can often run on any platform under the sun
You can easily understand the licensing terms for embedded projects
You can install the development environment on as many computers as you’d like (important for those of us who like to work at home some times)
The development environment we use can be customized per developer (I’ve been on a project where one guy was using the VC ide, another emacs, another VI and another still codewright).
Setting up builds for large projects is much easier
All the development tools are usually redistributable.
All the libraries are redistributable.
In summation, Microsoft gives you a couple things quickly, but often forces deeper, harder and more complete commitment to even finish simple projects. Open source API’s and tools are often shallow, giving up their functionality in simpler ways that allow them more flexibility of application and integration with a wider variety of code.
For some people, the instant pile of features .Net gives you are enough to make it the thing to use. But this also requires the willingness to accept the risk of the lock-in, closed decision making process about API’s, lack of responsive and affordable support, and opaque development roadmaps. These things make many programmers tremble in the night.
And frankly, Microsoft has dome some amazingly untrustworthy things in the past. If people are leary of them, it is not without good reason.
--Michael