May 8, 2007
Although I am generally platform agnostic, I make no secret of the fact that I am primarily a Microsoft developer. In a way, I grew up with Microsoft-- as a teenager, I cut my programming teeth on the early microcomputer implementations of Microsoft BASIC. And I spent much of my professional life writing Visual Basic code. When Microsoft rebooted their programming franchise with .NET in 2003, I was thrilled and reinvigorated, glad to finally have a viable exit strategy from the glass house that was Visual Basic.
As a developer who grew up on a steady diet of Microsoft tools, I never understood the pockets of rabid anti-Microsoft sentiment in the programming community. To me, Microsoft was the least of all possible commercial evils, a generally benevolent dictatorship. Humor me for a moment and imagine replacing Microsoft with one of its competitors: Sun, IBM, Oracle, or Apple. I don't know about you, but those alternate histories send a chill up my spine. Yes, Microsoft is a near-monopoly, but as giant, evil monopolistic corporations go, you could do a lot worse. Microsoft is far from perfect, but they generally do the right thing as far as I'm concerned.
Microsoft has always been a developer-centric company to their very core. From Steve Ballmer's developers, developers, developers, to Bill Gates' centerfold shot, it's always been abundantly clear that Microsoft is a company which prides itself on taking care of its core constituency: developers.
Although I'm still satisfied with my place in the Microsoft development universe, some developers desperately want off the Microsoft treadmill. Mike Gunderloy is a notable example:
I've spent the bulk of the last fifteen years developing some amount of reputation and expertise in the Microsoft universe, having published dozens of books and hundreds of articles, worked as an editor and consultant, written (as a subcontractor) parts of various Microsoft products, and so on. I'm also the editor of the Larkware site, which tracks news in the Microsoft software world for developers.
Unfortunately, over that time I've also come to the conclusion that, even though it is staffed largely by smart and ethical people, Microsoft itself represents a grave threat to the future of software development through its increasing inclination to stifle competition through legal shenanigans. Its recent attempt to claim that no one can implement a user interface that looks anything like the Office 2007 ribbon without licensing some nebulous piece of intellectual property represents a new low in this regard.
I'm in a bit of a bind. Unlike fifteen years ago, I've got a family, including four kids, and I can't afford to just walk out on a career that brings in good money. But I rather desperately want to find an alternative. This blog will record some of my explorations as I hunt around in other corners of the software world, trying to decide if there's a viable business plan for me that can include weaning myself off of Microsoft software.
Mike started a new blog, A Fresh Cup, where he's reinventing himself as an open-source developer. If you were wondering why the content at Larkware's Daily Grind has degenerated so much recently (and boy, has it ever), now you know. His heart's just not in it any more.
I can understand where Mike is coming from. Microsoft releases new technology at a blistering pace, and keeping up-- not to mention dealing with all the obsolete baggage you're carrying around-- is half the challenge. Just take a look at the stack I have to install on my development machine to do development work in .NET 3.0:
- Windows Vista
- Visual Studio 2005
- Visual Studio 2005 Team Explorer (source control)
- Orcas Extensions for Visual Studio 2005 (WPF & WCF project templates)
- SQL Server Express SP2
- Visual Studio 2005 SP1
- Visual Studio 2005 SP1 Update for Vista
- ASP.NET 2.0 AJAX Extensions 1.0
- Expression Blend
Historically, I've used Microsoft development environments because they made my life easier. It's hard to look at this list and see how it's any easier than the open source alternatives. I also begin to look longingly at the open source developers who have been plugging away productively in Perl or Python over the last five years. Sometimes, you wonder if choosing an environment where things change more slowly isn't a better long term evolutionary decision. Perhaps there's a kernel of truth in Paul Graham's sensationalist Microsoft is Dead article: can you even name any startups that use Microsoft development tools?
So part of me agrees with Mike. To paraphrase Chris Rock: I'm not saying he should have given up on Microsoft. But I understand.
Mike's certainly entitled to take whatever steps he deems necessary for his professional development. Still, his attitude frustrates me, because it falls so egregiously into the stereotypical, religious love/hate dichotomy that I've observed again and again in software developers. You either love Microsoft and use exclusively Microsoft products, or you hate Microsoft, and you vow never to use any of their products ever again. There's nothing in between. No middle ground. Why does it have to be an all or nothing proposition? As far as I'm concerned, every software developer, regardless of what's on their tool belt, has the same goal: to craft useful computer software that delights users. We're allies, not enemies. Friendly rivalry I can understand. But the rabid partisanship that I typically see-- on both sides of the fence-- isn't helping us.
I also find that both the Microsoft community and the open-source communities are far too insular and provincial. I had the great pleasure of meeting Miguel de Icaza at MIX this year. Miguel is one of my heroes, as he was instrumental in bringing .NET to the world of open source with the Mono project. What truly surprised me, though, was how few MIX attendees knew who Miguel was, despite his groundbreaking contribution to the .NET programming ecosystem. To me, he's famous. A celebrity. But because Miguel has roots in the open-source community, he barely exists to the majority of Microsoft-centric developers. They didn't even know who he was! And those who did recognize him had about a 50/50 chance of disliking him on principle. As Miguel pointed out during the open source panel, he's disliked by both camps: open-source zealots think he's sold out to Microsoft, and Microsoft zealots think he's destroying the value of the .NET platform.
This is wrong. This is not the way things should be.
As a software developer, you're doing yourself a disservice by pledging allegiance to anything other than yourself and your craft-- whether it's Microsoft or the principle of free software. Stop with the us vs. them mentality. Let go of the partisanship. We're all in this thing together.
I'm a pragmatist. For now, I choose to live in the Microsoft universe. But that doesn't mean I'm ignorant of how the other half lives. There's always more than one way to do it, and just because I chose one particular way doesn't make it the right way-- or even a particularly good way. Choosing to be provincial and insular is a sure-fire path to ignorance. Learn how the other half lives. Get to know some developers who don't live in the exact same world you do. Find out what tools they're using, and why. If, after getting your feet wet on both sides of the fence, you decide the other half is living better and you want to join them, then I bid you a fond farewell.
But either way, we're still friends.
Posted by Jeff Atwood
Even worse are the poeple that make a living on the microsoft stack that have nothing but negative things to say about everything Microsoft. It's hard to work with people that have such a low opinions of themselves and how they make a living.
I wholeheartedly agree. I can see this being a post I link a lot of people to when they frustrate me.
Like the post and I do agree that there is always more than one way to solve a problem. I work in a development team using Microsoft products and whilst I do spend some of my spare time trying to stay on top of other technologies there are so many these days there is just not enough time in the week (especially if u try and have a social life as well!). Someone needs to create a matrix style brain feed and my problem will be solved!
Well, Mike Gunderloy is a bit of a societal "drop-out" (and I say that with respect, not derision), so it doesn't shock me that he'd be inclined to give up on Microsoft.
Personally, I think Microsoft's really got its stuff (developer tool-wise) together in the last 5 years, and I haven't heard of an IDE better than Visual Studio. Do Perl and Python developers even HAVE an IDE, or do they just use vim or Emacs? Yech. I don't think I'd want to work in such an environment, but certainly we can learn a lot from "the other half". (And look what's happening with C# 3.0... quite a bit of inspiration from Lisp and Ruby, I suspect.)
Hilarious picture of Bill, though!
P.S. I really enjoyed your .NET Rocks interview, Jeff - even listened to it twice!
I totally get where Mike Gunderloy is coming from. I've been developing asp.net applications for the past five years and up until a year ago i was pretty happy. I began digging into other web frameworks, mainly those that implement an MVC2 pattern. You know, to see how the other half lives. Around this time i also began to embrace standards (both dom scripting and XHTML). That is when I really started to question some of the decisions that MS made with the asp.net framework. INamingContainer destroys semantics (can't rely on element ids instead you must venture into class-itis), can only have one form with runat=server, why does an asp.net label render as a span when label is a valid html element, why doesn't an asp.net grid render headings as th tags, no support for optgroup element and the list goes on and on. It seems to me that asp.net was created by architects and programmers and not people who actually build web applications (in the "real world"). My struggles have really forced me to look at other careers, most notably ruby on rails. Problem is I live in Ft. Worth, Texas, surrounded by corporations entrenched in Microsoft technologies. I would leave asp.net in a heart beat if i could find another technology that could support my family.
I started reading your blog a few weeks back, and I must say that the current font is quite annoying to read. Some letters (g, v, w, y) appear lighter than the rest, double-quotes look blurry, other letters seem too thick. Please pick a better font :-)
[can you even name any startups that use Microsoft development tools?]
Well no... but then again they don't feel the need to display that fact triumphantly in their literature like open source startups do..
Up front I say that I'm a Linux geek, and generally anti-Microsoft. However, it's more because I can only run Microsoft software/tools on the Microsoft operating system. "Duh", you're probably thinking, but really, I would love to learn .net if I could either write it or run it with no fuss on my linux box (or Mac for that matter).
I love Java because my IDE (Eclipse) and anything I write will just run with no fuss wherever I happen to be working. I prefer my Linux OS, but sometimes I just have to be in Windows. The nice thing is that my development environment doesn't change just because my OS does. When I browse the web with Firefox, my experience is exactly the same whether I'm on XP or Fedora.
I understand that MS wants to make money, and good for them; they should, but the us vs. them would surely change if they were more open -- not be confused with open source or free -- just more open. I'm not even saying that Microsoft needs to go out of its way to produce software for OS's other than their own. But, for example, if they provided an open spec of how to implement the equivalent of a java virtual machine for .net (CLR is it?), the open source geeks would implement it and allow .net apps to run on Linux or any other platform that might so desire.
As it is, I never even consider anything MS has to offer because if I were to choose a MS solution, I'd be locked into their OS as well, and that ain't gonna happen.
We can be friends and all, but I'll still never buy an iPod.
The problem is that developing with Microsoft tools on Microsoft's OS for Microsoft platforms just isn't emfun/em. The Microsoft stack appeals to risk averse executives ("Nobody ever got fired for using IBM/MS/MCSE") so it becomes an entrenched default and developers put up with it.
Does anybody truly love working the MS stack? If you had to pay for all the development tools yourself, would you? Or would you go free and open source?
Hey, if Visual Studio and all that stuff works for you, great. I used to be a web designer in an insurance company that was all .NET. It was hell trying to bend templates to my will; VS just wanted things its way.
I'm much happier now as a freelancer and entrepreneur working on my Mac with Rails, Subversion, MySQL, and the Aptana IDE.
As a software developer, you're doing yourself a disservice by pledging allegiance to anything other than yourself and your craft-- whether it's Microsoft or the principle of free software. Stop with the us vs. them mentality.
You have a strange view of free software if you think it requires an "us or them" mentality. Free software is explicitly about freedom for *all* software users -- even those who don't "pledge allegiance". Anything that restricts that freedom isn't part of free software.
I'm a pragmatist.
As am I. Without software freedom, there's no future to look forward to with software. That freedom is either demanded openly, or exercised covertly in spite of restrictions placed upon the user; to willingly give it up is the least pragmatic act I can think of with software.
@cmv: I also live in Fort Worth, TX. I spent the first 8 years of my career working with MS technologies. I switched in 2000 to Java Enterprise development and have been doing that for the last 7 years. You CAN switch if you want. I've had no shortage of job offers while developing in Java. The good thing is I keep up my MS skills also so I can take pretty much anything that comes along.
After Microsoft you're going to find the next most available jobs to be in Java. Finding one for anything else, PHP, Ruby, etc. is more difficult.
"I haven't heard of an IDE better than Visual Studio. Do Perl and Python developers even HAVE an IDE, or do they just use vim or Emacs?"
I haven't heard of an IDE better than Visual Studio.
IntelliJ IDEA is as good as Visual Studio if not better (and much better than the eclipse POS)
Do Perl and Python developers even HAVE an IDE
I don't know for Perl, Python sure has a few IDEs (Wingware's Wing IDE and ActiveState's Komodo mainly, not as good as Visual Studio or IntelliJ though). The thing is that you mostly don't need them: you have a good editor (or even Eclipse or IntelliJ with their respective Python plugins), you have your interpreter, and you just grind ahead.
The overhead is much lower than when coding in Java or C#, so the IDE isn't *required*.
can you even name any startups that use Microsoft development tools?
Yes. Phanfare and PlentyOfFish. But it's hardly the cool thing to do these days.
I too understand Mike's position, but don't share it. I do agree with him, though, that the intellectual property stuff around the ribbon was seriously questionable. When MS starts focusing more on protecting its monopoly than giving developers and users what they want, it gives me pause as well.
One of the problems with learning how other half lives is that it's bloody hard just to keep up with the Microsoft stuff. Piling on RoR, Linux, MacOS and Java just means you're drinking from the Amazon instead of just a firehose.
You could always go the Java road and have 15 different frameworks installed and try to get them to play nicely.
Nathan: I don't Ilove/i the MS stack, but I've never seen anything better that works for Windows development (I've never seen anything better in general but I haven't really been looking; I have a few Macs, but I don't Iwant/i to do Cocoa very much. Since I haven't been looking, my lack of seeing anything better means nothing!).
And even if my company wasn't paying... VS Express is free, isn't it? As is SQL Express.
(Of course, what I do is UI-intensive and I spend a lot of time mucking about with forms and control layout; if I was doing web development, the VS advantages might be less compelling.)
Microsoft has figured out that free tools get people using the platform.
Ever heart of that pretty big JAVA IDE called Eclipse?
No, seriously, whats so special about VS05?
Wow -- a list of 9 items you "have to install" to do .NET Framework 3.0 development. The only problem is that _none_ of them actually have to be installed.
Here's the list of what you actually "have to install" to develop with .NET 3.0:
* Microsoft .NET Framework 2.0 Redistributable Package
* Microsoft .NET Framework 3.0 Redistributable Package
If you happen to be running Vista, both of these are pre-packaged, so there is absolutely nothing to install.
I just find that the best way to have fun in this Open Sores vs. MiSFiT (MSFT is Microsoft's NASDAQ symbol) war that is going on is to:
a) when surrounded by open sores fanatics, state how wonderful MiSFiT is and defend it with a religious blindness.
b) when surrounded by MiSFiT fanatics, state how wonderful Open Sores is and defend it with a religious blindness.
Won't make you lots of friends but it is humourous to watch people's faces contort and listen to their frustration grow as you blindly rebuff their arguments with whatever stupid rationalization occurs to you.
Hi Jeff. Hopefully you can at least give me credit for a reasonably nuanced view. I still think Microsoft makes a lot of superior tools, and if I were choosing an IDE purely on technical merit, I'd still be using Visual Studio. Unfortunately, I think that sort of thinking is long-term counterproductive while the company remains a threat to the very profession of software development (and yes, I mean that literally). I've developed that point in somewhat more depth in other posts over at A Fresh Cup so I won't rehash it here.
As for the coverage at Larkware, I simply won't write about things that I can't cover with authority. As I'm not using Vista, .NET 3.0, Office 2007, or any of the tools that come after them, that knocks a lot of the current .NET developments off my radar, and lowers the amount of material I have to work with considerably. I expect to shutter the doors over there by the end of the year.
I have the same opinion about this issue/conflict.
I too understand its point of view, and mainly the reason to give up... The constant change (mostly innovation) Microsoft makes on the programming world (at least theirs) can make some programmers despair. Especially if they tend to follow Microsoft every move: on web development, desktop, operating-system, plataform (.net), etc
Not every product Microsoft releases should be seen as the right to use... There are great alternatives and some even better.
I really think with the latest improvements in Mono/.NET, Silverlight, etc... software should start to be more independent and not locked into Windows or other OS.
"I haven't heard of an IDE better than Visual Studio. Do Perl and Python developers even HAVE an IDE, or do they just use vim or Emacs?"
It depends on your definition of "better" :)
Python devs had IDLE, which works great for Python development. It allows you to write you programs, execute them, and manipulate them at runtime. Smalltalk VM's are also IDEs. Apple developers have been pretty happy with XCode and Interface Builder (which is a much better way of creating user interfaces, from the MVC point of view, than Visual Studio has had pre-WPF.) Rails devs swear by TextMate and I can see why. It has great built in macro expansions built just for Rails. You don't have to remember all the syntax for migrations. Just type "mcol" and hit tab, just like code snippets in VS 2005.
Perl devs are Perl devs. :| Bless their hearts.
"name any startups that use Microsoft development tools?"
There's one here in Seattle. Jott.com. But it was started by a ex-Softies. There are a TON of companies in Redmond and Bellevue started by ex-MSFT employees and they all use MS tech. Built around Sharepoint, BizTalk, etc... You just don't hear about them because they are trying to do REAL work, not just Web two-dot-oh stuff. ;)
The MS startups I've seen generally fall into two camps. The "I worked on this product at MS and I can make it sing, here's my hammer, where are the nails?" camp and the "I have had enough of this MS CRAP! " camp who gravitate towards anything !MS. The second camp always gives me pause. What do they know about MS that I don't?
For my part, I practice a "coding to the bar" methodology. I use whatever tools and processes allow me to finish my work quickly and go have a frosty adult beverage at my local pub.
Hi Jeff, I've been a pretty regular reader of your blog for awhile now, and it's always interesting and thought provoking. I couldn't agree more with this post. I come recently from an extreme case of this in that I used to work at Sun Microsystem as an architect in the software division and 3 months ago left there for a position at Microsoft. It was amazing to me the reactions I got from my co-workers and people I knew in the industry. Everything from the joking "evil empire" comments, to those that still won't communicate with me because I have sold out.
For me I made the move because I love designing and building software and I wanted to go to a place that seems to be able to deliver a lot of software. It also seemed like a great opportunity to learn a completely new set of technology and a whole new stack. That is half the fun of the software industry, there is always something new to learn out there. What I've found since starting is that the technology is not the only thing to learn, the different perspectives and approaches to building software between the Java community and the MS community also provide tons of opportunity. I think that the industry as a whole could certainly benefit from more cross learning from each other in so many different ways. I hope your post will be a wake up call to people!
"If you had to pay for all the development tools yourself, would you?"
This is possibly the most important point that has been made in this comment thread yet. I've been working with MS tools professionally since '95. Been using them since VB4 and ran every flavor of DOS and Windows made to date on the x86 platform. I've paid for two pieces of MS software with my own money. A student priced Visual J++ when it came out and a starter edition of VB 5. Every other piece of MS software has been provided by my employer. I wonder just how many developers would start out learning on MS tools if they had to pay for them instead of pirating them, getting them for free at an MSDN event, or getting them from the companies MSDN subscription? The smartest thing MS ever did, developer tool wise, in my opinion is make the Express line free. They should include them on every install DVD of every version of Vista.
Why are a lot of startups using OSS? You get to:
1) make the business people happy by lowering the initial cost of development
2) make the developers happy by giving them new tech and toys to tinker and learn with.
In fact, as Miguel pointed out during the open source panel, he's disliked by both camps: open-source zealots think he's sold out to Microsoft, and Microsoft zealots think he's destroying the value of the .NET platform.
Yeah... its a shame. That's why I instantly shut off any communication with other developers who are closed minded enough to pick ANY camp over ANY OTHER camp, including but not limited to operating systems, data abstraction layers, data access methodologies, anti-pattern zealots, it doesn't matter. If you close your mind off to something just because you don't like it, you don't deserve to be considered logical.
Every tool has its use, and every bolt has its place. Refuse to use a tool because it doesn't fit into the project's scope. Not because you are a whiny little snot.
In the instance of Mike, however, I definitely do understand. I went the opposite direction a few years back when .NET was first really starting to make waves. I came from a Linux background... 8 years... and still occasionally do work in PHP, Perl, Python, shell script, etc. when I must. But I got tired of it in just the same way... so I try my best to avoid it now, if at all possible. However, I do respect it and still carry a little bit of love for it, even though I've left it mostly behind. For me, it was more because I burned myself out on it. Shrug.
Again, great article Jeff, and I couldn't agree more that Mono is a very phenomenal project. I only met Miguel briefly at a town hall meeting in Second Life when Phillip Rosedale was talking about possibly shifting all of SL's scripting engine over to Mono. Miguel was standing next to me and shouting, "Phil! Phil! I'm Miguel! I am a developer on Mono! Please talk to me if I can help in any way!" :)
Well said, sir, well said.
Didn't this kind of "us versus them" mentality cause America to be divided during the last Presidential election? I don't want to morph software engineering into political issue, but understand what other parties are doing is such an important factor to be united again.
Re: the love/hate relationship with MS:
With the Microsoft stack you don't get to mix and match the components. MS very much wants you to code to their APIs and their runtime. It's an all or nothing deal. Since many developers would like to choose different components instead of just using whatever MS provides, they are 'forced' by MS into the 'all or nothing' choice.
All said, MS has brilliant people bringing us fun toys like Linq, Silverlight, and the DLR. :)
Why does it have to be an all or nothing proposition?
Because Microsoft, for the most part, tries like hell to make it that way.
Thanks for the link to the fonts! I had not seen these yet, and I'm a font freak.
Oh yeah, great post!
From the blog:
"If, after getting your feet wet on both sides of the fence, you decide the other half is living better and you want to join them, then I bid you a fond farewell."
I can't afford to "get my feed wet on both sides." My work involves PHP, Apache, and MySQL. To test the water on the other side, I would need an XP (or Vista) license, a MS SQL license, and Visual Studio (to learn ASP). Rather than pay for these licenses - just to see what advantages and disadvantages MS offers - I have to go with legally free software.
I respect those who develop on MS platforms, but I can't justify the cost for me to purchase the licenses just to check it out.
To some people, the costs would be worth it, but I'm a coder in a small town (pop. 10K) in Arkansas. Even if I were to convince my employer to buy the software, I know it wouldn't be a wise use of company funds.
I guess my point is: a Microsoft developer can use most of the popular open-source software available, because most of it is free. An open-source developer has to set aside funds and invest in Microsoft software.
I don't understand the all or nothing approach that a lot of people seem to take with development. The "I'm a MS developer" or "I'm an open-source guy" or "Rails forever!".
On a daily basis I'll use Visual Studio, classic ASP, ASP.NET, Delphi, PHP and Ruby. I've used both Microsoft and non-Microsoft tools for as long as I've been developing. For desktop apps I use Borland's Delphi, it's still the best tool for pure Win32. For small clients I suggest PHP or Rails and usually larger ones or ones already going Microsoft I'll go the Visual Studio + ASP.NET route.
In all my years of development I've never aligned myself with any one tool, to me that's like saying "you know, I'm really a hammer guy. Those screwdrivers are for the corporate guys." I didn't think knowing multiple technologies from multiple vendors was so rare but I'm starting to think that's the exception instead of the rule as I read more and more of these types of blogs.
My theory is, you use the tool that works well for the job and don't worry about which one you used. No tool, language or framework is perfect and sometimes it's just as easy to learn a new language as it is to fight with your current one.
P.S. If you think your development "stack" is large, check out mine...
Visual Studio 2005
SQL Server Express SP2
Visual Studio 2005 SP1
Visual Studio 2005 SP1 Update for Vista
ASP.NET 2.0 AJAX Extensions 1.0
Subversion (for version control)
TortiseSVN (again for version control)
CodeGear (Borland) Developer Studio 2006
CodeGear (Borland) Developer Studio 2006 SP2
CodeGear (Borland) Developer Studio 2006 Hotfix Rollup
Plus of course all the other developer things I can't live without:
Development components like RemObjects, DevExpress, etc.
The best logger out there, Gurock SmartInspect
A solid text editor, TextPad or the new Window's TextMate-like "e"
SQLyog (for managing MySql)
SQL Server Management Studio Express (for managing SqlServer)
SQLiteSpy (for managing SQLite)
JQuery (because I like working with that as well)
And that's knowing that I've probably left a handful out.
To the person wondering (rather derisivley) whether Python developers even have an IDE:
Did you read the same blog post I did? The one I read was about learning how the other half live, not putting them down.
I will accept criticism of using Emacs as a development tool from anyone who has learned it deeply, who slings Lisp in their sleep, and who has decided the prefer Visual Studio. And I will accept IDE criticism from those who have been using Visual Studio for years (or Eclipse, or whatever) and know it deeply.
From everyone else, sorry, but if you only know one, or half of one, you aren't really informed enough to sway me from my path. This is exactly what I take from Jeff's post: you must really learn the other way before rejecting it. Once you do, you may appreciate the things you used to think were problems.
Totally how i feel! I love being a MS developer, but if you have an open source fetish, power to you!
I'm constantly stealing good ideas from my friends working with OS technologies to use on my MS projects. It pays to have a diverse peer network no matter what industry you're in.
Funny timing: we just had one of our newest teammates explode today because we've integrated Watir with our Nunit tests. He's pissed about having to learn the slightest bit of Ruby in order to make a big improvement in our code quality. Our team lead just turned to him and said, "Hey, we're a bunch of open source guys making a living in C#. Get used to it."
Right tool for the job and nothing else matters.
Well said, Jeff.
"I do not teach, you know, Karate, because I do not believe in styles anymore. I mean I do not believe that there is such thing as, like, a Chinese way of fighting or a Japanese way of fighting...or whatever way of fighting, because unless a human being has three arms and four legs, there can be no different form of fighting. But, basically, we only have two hands and two feet. So styles tend to, not only separate man because they have their own doctrines and the doctrine became the gospel truth that you cannot change! But, if you do not have styles, if you just say, "here I am as a human being, how can I express myself totally and completely?" ...now that way, you won't create a style because style is a crystallization. That way is a process of continuing growth." -Bruce Lee
Honestly, it's all about style and what you feel comfortable working with. For me, the open source tools enable me to get things done faster and with a *greater understanding* of what I'm actually doing. With Microsoft, I feel like I am trapped in a "software bureaucracy" where I have to go through a dozen tasks before I can even write "hello world", and even then, I don't feel like I know what my computer is doing. It's not that abstraction is bad, but with Microsoft products, I feel like the abstraction is *impenetrable*.
I do, however, agree with the core point of the article: why can't we all agree to disagree? But you should understand why most open source developers spit when you mention developing using Microsoft tools. To me, it's like talking about how much you love cooked liver with head cheese.
First of all I love linux. it makes me feel better when I use it. but I use c# and .net in my development life more then QT and C++ in these years. its about jeological reasons believe it or not this part(Turkey) of the world known as 3th class world country. and this kind of countries are the new market for big players like SUN or MS or IBM. they dont try to open any development department in turkey. they just sells their servers and softwares. thats why I dont like MS.
Miguel is a project manager as long as I read from internet about him he is good at it. but writing a .net framework for linux it like dividing power to pieces and use them wrongly. because linux or bsd world does not need any c# or framework anyway. look at big projects they allways use C/C++ or Java and thats it. they work. for example KDE or JBoss both good well known famous and succeseded on their area. another big problem about mono which is they allways trying to catch up with microsoft. that means just a fallower never got the technology on time under linux. example url: http://monkey.workarea.jp/tmp/200611/deploy/System.ServiceModel.html as you see they dont have wcf yet if you want to use it you have to wait. btw MS goes more far then wcf.thats why I dont like mono project.
I used to believe in open source and good world. then I met with MS :))
"My theory is, you use the tool that works well for the job and don't worry about which one you used. "
So very true. These things are ALL tools. I don't quite get the religion.
I can, however, understand startups using open source, if for no other reason than the perception that they are free vs MS products, no matter how true or not that really is.
I second the "branch out, dip your feet in more than one pool" school of philosophy. But then my experience is pretty checkered. I was not indoctrinated to "one true way", Microsoft or otherwise. My coursework and job experience has been all over the place.
Heck even growing up there were options for computers. Are people even exposed to options anymore? You can pick PC, maybe see a Mac, running on PC hardware, or Linux .... running on PC hardware.
How much is just kneejerk switching or pure burnout from boredom, with no bearing on the actual tools? It seems like people are switching brands to the language or toolkit of the day just to keep challenged.
"I haven't heard of an IDE better than Visual Studio. Do Perl and Python developers even HAVE an IDE, or do they just use vim or Emacs?"
I haven't heard of any walker better than the Segway. Do legs even have gyroscopes or steering wheel, or do the operators just sort of flay them about on the ground?
Get married to a human being, not to technology.
Even when you are forced to do otherwise.
As an OS/2 developer turned Windows developer who now spends half his time coding on Linux, an IBM dominated world seems preferable to me. I know that I enjoyed OS/2 tools a lot more than Windows tools.
My biggest complaint about Microsoft tools is that they are a moving target. Something new is introduced every few years, supplanting old tools that are halfheartedly maintained. The Windows APIs are a massive layer cake of interesting, but flawed designs that are 95% working, but never quite there. And honestly, Visual Studio itself seems to be going downhill. I'm tired of the way the thing pushes you into the new hotness when you're just trying to get the old code working.
For the last year, I've been working on an application that has both Windows and Linux components. For Linux, I use vi and make. But in many ways, I find it less frustrating than trying to force the Microsoft tools into doing what I want, rather than in the "Microsoft way".
That's for work. For personal programming it is no contest. I can either spend thousands of dollars on proprietary software...or I can just install Ubuntu and use apt to get all the equivalent open source tools. On Windows, installing all those tools is a day's work. In Ubuntu, it's ten minutes in synaptic and a half hour download. On Windows, every year, it's more money and more time spent upgrading. On Ubuntu, it's clicking the "update all" icon every once in a while.
I'm just sick and tired of the whole proprietary treadmill. At work, Perforce goes down once a month because of a licensing issue that is solved with temporary licenses. That never happened with CVS.
While I have enjoyed certain MS products since 1990, it's hard not to acknowledge that they desire to crush or buy the competition. The whole "IE is part of the OS" event was shameful.
It's hard not to miss the fun that Borland provided (remember "Reflex" and "Turbo Prolog"?) back in the late '80s, and certainly Delphi was and is the best Win32 dev environment ever. MS has acquired a lot of the Borland brains over he years.
I still run W2K due to MS' Orwellian schemes with XP and Vista. Yet for now I must make a living in the Windows and SQL Server world.
I had just one reaction after reading this posts: cheers! As you mentioned, too many very smart people seem to get caught up in the MS/OSS religious wars. Now part of the blame must be laid at the feet of the respective leaders. MS practices have notoriously not played well with others. And the OSS leaders - though they be many - tend too far in the other extreme.
So it was a breath of fresh air that a blogger as respected and consistent as yourself, retains that consistency and respectfulness while wading in the midst of the wars. Thanks.
The I-hate-and-will-never-touch-M$ stuff comes from disparate, but connected vectors: the monopolist stuff (they were convicted, and did fund SCOX in its venture, etc.), and that for web development (we're all going there, ya know) there are just better ways. Better, not just cheaper. And Open Source isn't just about $$; it's mostly about not being locked in by a monopolist who has shown itself willing and determined to devour anything it its path. Young-uns might not remember; veterans do. Why shoot yourself with the enemy's gun? And it's not all Open Source; Eiffel is a Movement to be reckoned with.
I've been working web stuff for years. This stuff never gets outside the company intranet; suits think that a web-app is lightweight. It's their brains that are lightweight, but there you are. With server driven web-apps (think: it's 1988 and you've got a Unix database and a raft of VT-220s wired up), what's the Value Proposition of M$???? A virus petri dish in every tube?
The dam will break when the first Fortune 500 banishes M$ and goes Linux on the desktop. I expect it will start with Firefox, but that's as much of a guess as any of this. It will happen, likely when the boomer CIOs get replaced with younger folk.
Every study I've seen or heard of concludes that "office productivity PC software", aka M$ apps, have actually decreased productivity. Two reasons: there's too much lipstick to play with which distracts employees from the Real Work, and there's too many toys which.... When you look at the question rationally, homo economicus, using M$ is just an enormous profit tax.
The young-uns don't know a time when the company's computers ran their programs and nothing else. Rational people will see the light.
Do Perl and Python developers even HAVE an IDE, or do they just use vim or Emacs?
I recently took a beginner programming courses at college. I refused to use the .NET framework because I was there to learn to code . . . not operate and configure .NET (which this class seemed to enjoy). I came home, fired up KDE, and started up KDevelop. Every project I had at school in .NET was created in the exact same way at home using KDevelop. From scripts, headers, and libraries to whole programs, I was able to do just about anything I wanted. I could even install the win32 libraries for windows console programs and testing. So YES, open source can program in something other than vim and emacs and oddly enough, it looks and acts just like .NET!
Benevolent?! Excuse me while I clean up my spewed coffee. I was around when Microsoft rose to power. There was nothing benevolent about them.
Claiming IP protection on the "ribbon" is nothing compared to the old days.
Would Jobs have been worse than Gates given the same power? Yes, for sure - and I'm an OS X fan. Even so, please don't call the Microsoft of the 90s benevolent.
If you want to say something nice about their development tools, btw, you might mention Microsoft's free "hobbyist" Visual Express suite.
BTW, VS is very impressive, but the OS X IDE is pretty good too. It's free and its much more accessible than Visual Studio, albeit not as powerful.
In general I think Microsoft has been a blight on the world of the personal computer (exhibit A: Microsoft Word), I think we'd have been FAR better off without the monopoly. The only thing worse would have been a Jobs monopoly.
You had me until you said that Microsoft releases things at a blistering pace. Are you joking? Compared to smaller, more innovative vendors (such as my personal favorite these days: JetBrains, maker of ReSharper and TeamCity).
Instead of really big, groundbreaking changes every few years, I would like substantive new features every few months.
The problem that I have with Microsoft tools is that they are so often coupled to each other. You want to use VSTS? Be prepared to install Windows Server 2003, SQL 2005, Sharepoint, etc.
love how the title of this article makes the reader think "is JEFF giving up on microsoft?" -- that makes for a great hook!
Then the photo of Bill -- that's another hook.
Damn you're good at this blog writing stuff! A master craftsman Jeff. You could teach a course!
in much-needed response to "Chip":
MS [should be] more open.... for example, if they provided
an open spec of how to implement the equivalent of a java
virtual machine for .net (CLR is it?), the open source geeks
would implement it and allow .net apps to run on Linux or
any other platform that might so desire.
The clr *is* open like that, and Mono is precisely the open source implementation you're looking for.
And as to the wonderfulness of Mono: there is a (growing?) number of folks who've concluded that it is the presence of Mono which gave M$ the wedge against Novell. Benevolent? Do some research about that deal. Educate yourselves.
I agree. I've embraced Mono with all my heart.
Miguel is a celebrity to me as well, so rave on preacher!
I use CodeGear tools, especially Delphi. I am *OF* the Microsoft world, but not *IN* the Microsoft world. :-)
The Delphi product has expanded from its origin. They have never "rebooted" their franchise. Delphi 1 skills carry right over into .NET if that's your path.
Give Delphi a spin. If you want middle ground, it's the one!
As a developer I believe in the "best tool for the job" approach which includes Perl, C, C++, C#, Java, Bash and whatever else comes along. The problem however is time as each stack takes a considerable amount of time and practice before you're proficient in it.
I've developed Win32 programs since the early days of Win95 for about 10 years until I've switched to Java for no other reason other than doing something different every once in a while. Recently I've written an app in C# with Visual Studio Express for the same reason.
Looking across the fence broadens your experience and helps you to understand the benefits and shortcomings of your preferred platform better. I like C# for example but the properties and the partial classes are both a complete brainfart from my perspective. Geared at the intermediate programmer they actually make development more difficult than easier. Much like the overkill of language features in C++.
MS may be a benevolent dictator but its still locking you in. Once you've learned the MS stack you develop for the MS stack and only it. To be fair the still is probably true for any complex software stack. But I still have a good recollection about what MS did to Java by "extending and embracing" it beyond recognition. That's why I can understand the reservations about Miguel de Icaza and his porting effort. I don't mind having C# around on Linux but I do mind having several different versions around as it eats into my time to understand them all. And until MS has demonstrated that it can actually play nice with competitors and the open-source community these reservations will probably remain.
I make a living using Microsoft tools. I can't find any better IDE than VS 2005 in any platform and I can't find a better more friendlier database than SQL Server. There's nothing wrong with a software company making money by selling closed software. Thousands of companies do.
Your car, appliances, plane.. etc run closed software and no one is asking to open these software.
Microsoft is becoming more open. Look at Channel 9, CodePlex, open source software (eg, MSI builder), you can create your own custom providers in .NET and IIS 7. ASP.NET is adhering more and more to W3C standards.
You can create dynamic sites using free MS tools like Web Developer Express and SQL Server Express and there are free Windows hosts out there.
The situation is getting better. People need to be more patient.
You do not have to use the latest MS tools. I do not intent to use .NET 3.0, Silverlight, Vista for a few (could be many) months and I will still do fine.
Finally I am not planning to dump Microsoft and all my knowledge about MS tools which I have accumulated over the years and learn LAMP from scratch.
You can create free open source software with MS tools and you're no obliged to include any ribbons :)
From the flame wars I have seen, there are a lot more of MS haters among Linux users than Linux haters among Windows users.
"can you even name any startups that use Microsoft development tools?"
NewsGator is one.
Pageflakes is another. They use the AJAX framework.
MySpace is another HUGE one now - considering they get about the amount of traffic of most of the other "web 2.0" companies combined, this is a pretty big deal.
Turns out 4 of the top 6 sites on the web actually use IIS Windows (MySpace, MSN, eBay, and Hotmail) Surprised me too even though only one of them could be considered a "startup" and that may be a stretch at this point (even though they're only 4-5 yrs old).
Disclaimer: I work for MSFT but not on any of the developer tools - not even in that division. I work on Windows Live Spaces which also not coincidentally uses ASP.NET, IIS, etc. to serve up content to 130 million+ UU/mo.
an argument started about the potency of a development platform being a function of it having an IDE. it was justified by retorts citing IDE's for said platforms.
IDEs are not the litmus test of a platform. that assumption is insane.
what do IDEs generally give us? file management, compilation, debugging, text editing, access to version control, ... pretty much everything you need to develop an application for a platform.
in the typical windows environment there are no robust shells like bash or zsh, there is no grep; there is no emacs or vi. the MS contenders in those fields are crap or non existent. development in windows pretty much needs IDEs. they have 'em for unix but are not really needed unless the programmer prefers that as a development environment.
different paradigms, apples to oranges folks.
I completely agree with you. I love the .NET platform, and use primarily Microsoft products for development or other things, but that doesn't mean I love everything Microsoft does. I actually hate a fair amount of what they do. But what I hate above all is, as you say, that "us vs. them" mentality that has been invading the whole software world. I'm a zealot that hates zealots. I try to use on a daily basis both Windows and Linux (currently Ubuntu) to stay aware of the evolving strengths and weaknesses of both systems. Maybe someday I'll add MacOS to that.
Miguel is one of my heroes, too, because he's both incredibly pragmatic, and had the courage to apply that pragmatism in his career, going against all "religious" trends and bringing a Microsoft technology to the world of open-source. This guy deserves at least respect from all developers.
Like Jeff and Mike, I started programming with MSC 6 and used almost every version of developer tools from MS, including MFC, ATL and a console based editor called PWB for Programmer Work Bench (I would like to call it a People's Work Bench for its simplicity and utility). At times, I strayed into Open source for more practical solutions. For our organization, we chose Linux based server apps like Samba domain controller, Postfix / Sendmail mail servers and portals based on Liferay. We had time to play around with these and weren't willing spend money on Windows and Exchange servers. I chose Lucene on .NET over full text search as we needed search to work remotely. And Lucene seemed to be a lot more fun to develop than FTS. But I would always choose the developer tools from MS over Open Source tools. Even if Eclipse offers a plug-in for C#, I would consider the express editions of C#/ASP.NET a lot easier to use if cost is a factor. If I have the luxury of spending a few thousand dollars, I will always choose MS developer tools.
At one stage in my career I wanted to work for MS. And within a few months after I was rejected, I was scared of competition from MS as they could build a better product faster and market it easier as compared to the product I was working on. From time-to-time, I might choose between MS and Open Source, but I can't hate either.
For those who choose one and hate the other, don't blame it on MS or Open Source. Blame it on your upbringing that doesn't allow you to stay in shades of gray but expects you choose between black or white.
"NewsGator is one."
That was strategy. Newsgator was designed to be acquired by Microsoft, so they chose to use as much Microsoft stuff as possible. Did not work too well so far though...
I am one of those people who avoid Microsoft software at almost any cost. I work in a industrial research lab writing prototypes and definitely know my way around Visual Studio and .NET, including the Compact Framework. This is sometimes just an impossible thing to fight, such as when developing something to run on Windows Mobile -- you just have little choice but buy into the MS tools. We have some Python scripts running on Win32 talking to the database and doing things, but that's about it. I also work on a system that uses Lisp (SBCL), Java, and Python with more or less equal importance, and has worked out beautifully despite leveraging all sorts of random work people have done.
The MS stack works together great until you hit some obscure bug or have to do something unusual (working in research exacerbates this problem), at which case you are powerless to switch that component out for another. We write prototypes, so waiting for a fix is generally wishful thinking...some are too obscure to get real attention anyway. You could try to rely on third party libraries, but far less glue code seems to get written for the MS platform -- MS integrate with integrate what they will, and then you are largely stuck. I can't buy into VS with the confidence that I could buy into GCC for my compiler should that become necessary. I can't use "a database," I must use "SQL Server" because no one seems to maintain a decent .NET binding capable of speaking, say, Postgres' wire protocol over IP and that compiles nicely under Compact Framework. Naturally you discover some of these things after the fact and the pain is unbearable. Sometimes I am temporarily given reprieve when someone does write good integrations and I stumble upon them, like the excellent SQLite binding for .NET that works on Compact and desktop, and everything is peachy. Definitely the exception.
It's a small matter of incentives: MS is not inclined to make their software play nice with anyone else because they have a "perfectly good offering!" in that space already (or soon will. Or should. And they don't want to help the competition, capiche?) Any organization that only wants one project in particular to succeed will instead try to work as well as possible with everyone they can! This is true of proprietary and open source vendors. This is why, I wouldn't be as leery of using VMWare over Xen Source: they do one thing very well, which is write a hypervisor and virtualization tools, even if proprietary. If I write even a half-assed abstraction then should VMWare fail to meet my needs and Xen source promises it will, then I can switch no problem.
There's also just the issue of laziness: if 2/3rds of the software stack runs under a GNU system and 1/3rd could be done with either MS or something that operates under a GNU system and the feeling is that they could work just about equally well, then the result is obvious.
Surprisingly, some of Paul Graham's best YCombs startups are using .NET
Scribd.com (mixed, but backend in C#)
"Stack" is an overloaded word. I thought it was silly when Gates started talking about the "Linux/Java" stack.
It's about control. I don't want any single company to tell us where we are headed. On windows, you have the choice between outdated windows technologies and .net. But in the open source world, hundreds of new ideas are explored in parallel. Sure, many of them will fail, but some strike gold, like Ruby on Rails. When that happens, you know that these technologies have succeeded on some kind of merit. With MS's paradigm du jour, all you know is that it suits MS's business plans.
As a new technology fan, it always disappointed me how the Microsoft crowd (which unfortunately meant most prospective employers around here) jumped when Microsoft told them, eagerly passed on the PR material and preached the party line, no matter how inferior the product... dot-net 1.0? Visual Source Safe? Older versions of Visual Studio?
about how one can only love or hate microsoft:
I think this is because the microsoft (business-)camp definetly does not want the open source camp in to play.
They are going out of their way to cripple interaction with other platforms.
Look at the situation in Europe where the EU has been going to court for 2 years now, just to force microsoft to open up, or make avaiable at a reasonable fee, the protocols to comunicate with core microsoft components.
Remember Samba? Rember how, shortly after samba was able to be a full fledged domain controller, microsoft was (force-) switching everybody to Active Directoy?
On the other hand, you should not listen to much to the linux/opensource zealots.
If you listen to the people actually writing the code:
Linus Torvalds, Andrew Morton, Larry Wall, and even Richard Stallmann,
they don't _hate_ microsoft, it is more like they don't care what microsoft does, because they choose to ignore them,
mostly because they think that the microsoft way is not the _best_ way to do software development.
All of the above agree that microsoft has developed a sure fire way to make lots of money, and give them credit for this.
Enough rambling allready, sorry about writing such a long text.
I like your blog though, keep up the good work.
I'm an OpenSource supporter and this is one the rares MS blogs I'm subscribed to.
I understand why developers like Microsoft. It makes you life easy and you don't have to think too much to make your technical decisions. I think that works well for certain business models. But not for all of them.
If you have to pay your bills working in the academy world, doing research, or maybe creating cool stuff in a start up, MS would not help you very much. In part because you have the skills ( so making-your-life-easy factor disappears ) and in part because you want to have full control of your work ( licensing and not having source code access is a big PITA ).
MS give tools to play with, but still want you to be hooked forever. That's why Bill Gates is so rich, he is the big drug lord of software.
For what I've heard Miguel Icaza is a nice person. But I cannot help but feel sorry for him, because at the end of the day we don't need him. What are those big applications that the Mono project have made possible?. I can name hundreds of Java, C, C++, and Python apps that exists in the OS community that were made with communities smaller than this Mono thing. Sorry Miguel but you are the ultimate manipulated nerd, in a long history of manipulated nerds.
Surprisingly, some of Paul Graham's best YCombs startups are using .NET [ Loopt.com, Xobni.com, Scribd.com ]
Ed, that does surprise me. I figured Graham would reject any YComb applicant who showed up using a Microsoft technology, just out of spite.
In regards to "You either love Microsoft and use exclusively Microsoft products, or you hate Microsoft":
I was a Microsoft developer for a number of years, and Microsoft was the only development environment I knew... during that time I loved every development tool they provided, hell I even opened my VB source files in Notepad to do some fine tweaking... I looked forward to each release of IE, and could not wait to upgrade to the latest and greatest version of the operating system (3.1 all the way to XP).
But when I wanted to start dynamic websites, I had a friend who taught me PHP (I could do basic ASP, but having a friend to help won me over)... a few years later I played with Linux, and used it for about a month for development... and it was like a flick of a switch, over night I turned, and realized that the Linux opperating system was built to help developers in any way it could, and it was wonderful!
I now use a Mac, the main reason was because of the UNIX underpinnings (with the terminal), and because it works so well when connecting to my Linux / BSD / Solaris servers... with the added bonus of TextMate.
But something I was asked last weekend, while helping my dad fix his Windows computer (again), was how much time have I spent fixing problems in OSX, Linux, etc... and I realize that for the past 4-5 years, I have just been getting on with programming and enjoying every minute of it.
It does seem weird how I switched... it was a definite "click"... and I admit, I now hate the Microsoft development... when I have to go back to it (to help a few people out), I get irritated and angry... the frustrating bit is that I don't know why!
There can be no middle ground. Its not possible to have friendly banter.
If you live in the MS universe and don't buy into the 'free-software'
principles, then the open source community can only be seen as a dilution
to business and profits. That being the case, why would you want to be
If you subscribe to the idea that everyone should have access to good
software, information and be free to do whatever you want with it, then MS
is as evil as you can get. Why would you put up with lock-in-schemes,
proprietary formats, broken software your not allowed to fix, or paying
Calls of "they are trying to ruin our utopian vision" could easily be
touted by either side - hence polar opposites, and until everyone sees the
correct way we can expect recent history to continue.
The way I see it, the open source community doesn't do anything to prevent people from using Microsoft products, and even tries to help people read Microsft file formats. Unlike vice-versa.
Oh, and one final point. This concept that you can't mix and match Microsoft tools seems to me completely bogus (though I don't know enough to say it with any authority). I've mixed and matched lots of different tools and they work fine together. It just so happens that Microsoft, in some bizaar turn of events, decided that it would be good to make all their products actually work together.
Having had to deal with this stuff, there is little bogus-ness in my experience behind the claim, from a certain point of view. "Can't" is a strong word, too strong to really refute: I could make nearly anything talk over sockets and my own hand-rolled protocol, and this is fast enough for most things, but it's such a damn pain.
The question is one of incentives: MS has little incentive to play nice with others...especially when the "others" are their competitors! Thus, they have an incentive to make the integration as slick as possible with their own stuff, complexity or whatnot be damned. This complexity can be a pain in its own right, but not the kernel of what I'm getting at.
Find me a simple, TCP, no frills, debugging wire protocol for .NET. I doubt you'll find one. I doubt it because I looked and noticed that they had rescinded the availability of this functionality since the old "un-managed" COM code days. Now everything is DCOM, and the annoyance in writing something that will talk DCOM that's NOT MS is not something entirely pleasant to me.
I search for "DCOM linux" and get http://www.softworksltd.com/dcomlinuxfaq.html
Last updated in '98, "pretty good" performance. Riiiight, that looks alive. My hopes of writing something that would collect information from would would be available from the debugger without writing my own debugger and wire protocol, period (they were kind enough to provide the base debugger classes, at least!) but, as you can see, my interest is waning and I may as well use JDWP or something. A few promising links are about, but all seem to be relatively small affairs, so I'm not sure that I really want to base my application on this.
Now, if MS provided a DCOM library written in some FFI-able language like C and was well documented and at least made a good faith effort to make the thing work on other platforms? I'd be OK with that, presuming no previous memory of MS pulling stuff whenever it got inconvenient...see ActiveX on Mac.
Let's take JDWP as one example. Another example might be SWANK, part of SLIME...more or less a whole different part so people could mess with it, and incredibly simple and useful. Yet another would be the interface for memcached, caching for sites like LiveJournal, Slashdot, and Facebook -- if you ever have stared at its header file, it's dead simple: get, set, a handful of querying/node control functions, and heavy documentation. Making the interfaces more complex because there is something in your product suite that would have a killer integration as a result is a design decision, not a business one somuch.
In addition to have a simple header file, it also has a simple wire protocol to talk with it...currently on TCP, and soon with UDP.
Three simple, extremely flexible ways to access such simple functionality! This culture is not something I often see in the MS side, where the fabled "MS Object Persistence System"!!! already has a billion carefully crafted hooks with Visual Studio and ASP.net. Useful perhaps....until anyone else wants to talk with it.
Ya know, there IS that other Microsoft (tm) development tool - Visual FoxPro (tm). A lot of what you're seeing in VS2005 was lifted from VFP as well. VFP is a viable alternative to using the Dot Something Architecture and CLR, and can hit back end databases, transform and read XML, and simply just git 'r done (tm).
It's even had extensions for WebApps, with WebConnection, Active FoxPro Pages, Active VFP (free framework!). You can write robust middle tier components that fit into any of the Dot Something Architecture as well.
Alas - most of the Current MS Dev Community still think 'its just a flat file database' - but it hasn't been JUST THAT for a loooong time now - It's a language, it's an IDE, it's a database (though still flat file, it IS relational).
You don't have to wait for 'that next version' to be totally productive in VFP, as well - If you understand OOP, well, it has it built in, in a solid implementation with PIE; you can build classlibraries with it and git 'r done (tm).
The VFP Community is alive and kicking - Come on In, The Waters Fine!
Click that website link for all of the info.
There's nothing in between. No middle ground. Why does
it have to be an all or nothing proposition?
I don't care whether something is Microsoft or Open source or you-name-it, but Microsoft made it all or nothing, and it's probably intentional.
I had been programming happily in Microsoft tools for years. Then I started to mix-in some non-microsoft basic components (like GUI frameworks for example) and the struggle begun which lasted for years. Slowly I realized that you just can't use "some" of Microsoft. One bit at a time you are forced to extend the Microsoft-ness of your environment. In other words it metastasizes.
Now I am using exclusively non-microsoft (both free and commercial) tools and I'm quite happy again.
I am not a platform zealot and like a mix of all .NET, Java, PHP, python a bit, and as3 as well as C++ for gaming. Its really about choosing the best tool at the time for the task. Taking into account current platforms and all possible solutions not limited to one company or open source divide.
BUT, one thing is that Microsoft is providing quite a market which open source may not. I like a mix of proprietary and opensource dor both commercial and non commercial products. Microsoft and technology companies are one of the last things we produce in the US. Why the hate for the market.
Microsoft has been notorious sometimes but it also was a propelling force (for the non techie user as well) in market and pushign software out there all along and still probably is. .NET and C# are great (copies of Java) and some of the new tech looks promising. They really have been all over for sometime I might say now they are even more oranized with .NET for enterprise. Before they had VB, JScript, VBScript, FoxPro, VisualC++, J++ etc.
When developing for the mobile market sometimes I wish microsoft had a larger market share like 90% like they do for desktop. Simply so that its more of a platform.
What would the phone system and would C++ even exist without ATT, would the software market, operating system and internet be as prevalent without Microsoft? Did asoption happen quicker with the 400lbs gorillas of new technology industries?
The world today is about platforms on standards (internet, email, etc). I am not sure Microsoft will change enough to let it happen. I wish they would work more closely with Mono to get .NET available on all platforms (it may even help server sales in the end not hurt it).
Anyways, rant... Good post.
Actually, there is middle ground, i'm walking proof of that.
I'm a total Apple/unix geek, work exclusively with apple hardware at home, but I do run windows (even at home) and am a professional .NET developer in a completely Windows or rather Microsoft centric company.
All i hate is that most people don't realize that hating is wasting energy on something non-constructive.
A small word smithing point, "near-monopoly" is incorrect:
"First and foremost, Microsoft stands convicted as a predatory monopoly in clear violation of the law. They have no realistic hope of appeal, ..."
Does anyone else see something wrong, sick, about an industry and area of intellectual efforts that is divided between monopoly and unpaid for labour?
I do not think Adam Smith would approve. Nor Karl Marx. Not Jefferson or Lincoln either, and I know Hume would not.
Besides, the current structure is inefficient.
"Microsoft has already lost. It's the MS fanboys who haven't gotten the message yet. They'll all be working for some young Open Source geek in 5 years."
This, I think, is just bad thinking, and it's all over on this comment board.
By my thinking, it's a whole lot better for me to hire an engineer who
1. Has good problem-solving skills
2. Has wide experience to draw from
3. Can discuss patterns and algorithms logically and sensibly
4. Knows the bounds of their knowledge, and where to go to expand those bounds when they are hit
than one who has X years of experience in Technology Y that I happen to be using. The technology filters are useful for filtering resumes off Monster.com, but that's about it.
In other words, I'd rather hire a stellar C# programmer for my Java project than a mediocre Java programmer. Java can be learned. "Stellar" can not.
That having been said, the comments along the lines of "I don't have time to look at Open Source; I'm making money on Microsoft technologies!", to me, indicate a poor attitude. If you aren't spending some amount of time learning new things every day -- not just new little tricks to fill out the last crevices of knowledge in your world of knowledge, but new technologies, ideas, and ways to solve problems that *expand* that world of knowledge -- I think you are doing yourself and your career a major disservice. Microsoft has a huge ecosystem, but signing yourself on as a full-time apostle to their creed will keep you from growing as an engineer. The same would be true of signing on to any other singularly-visioned entity, were they to exist.
Not that it matters, but I find myself very productive with XCode and IntelliJ for C++ and Java coding, respectively. That's my bread and butter. The odd Perl/AWK/shell script just gets thrown together in TextMate. Throw in AppleScript coding in Script Editor, Objective C editing in XCode, and C# editing in VS.NET and that's pretty much my toolkit IDE-wise. VS 6 was a terrific IDE for C++ work, but the .NET versions since then seem to have gone backwards in sheer C++-coding utility for me (as such, I tend to code primarily on XCode then copy over and compile/test in VS for the Windows port). Still, it's very nice for C# coding.
STANDARDS versus COMPANY PROFITS
Come one its a not hard to work out...
"Turns out 4 of the top 6 sites on the web actually use IIS Windows (MySpace, MSN, eBay, and Hotmail)"
I Think eBay uses Java.
I thank mico$oft for it Vista and proprietary shenanigans because it has finally got my company to seriously look at the alternatives. - Linux primarily and focus its new efforts in porting it apps to it.
The future is unfortunately with WEB apps, but at least it won't require microsoft proprietory components.
Microsoft with its ridiculous costs are forcing smaller developers to seek alternatives just to survive and move forward.
After countless years of supporting MS, its finally time to change!
Vista - the "WOE" starts now! - for Microsoft!
Very nice post, at least the part of it emphasizing the need to at least try to understand "the other side", instead of falling back to "us-and-them" mentality.
Still, humor me for a moment by explaining why the thought of Apple ruling the world instead of MS sends chills up your spine. I don't get that.
Great post, I like the emphasis on unity and exploring other options. I used to work at Microsoft and it surprised me how some developers weren't knowledgeable about the open source world, even things that could help greatly like Perl or unix shell scripting. In college we programmed on Unix/Linux exclusively, and any Microsoft .NET experience came from summer internships.
I'm similar to you in that I have a "best tool for the job" mentality -- we're trying to make useful programs for people.
"Right tool for the job and nothing else matters." Very true.
We call this the "biting the hand that feeds you" syndrome. Seriously.
The economics of open source are upside down if you are a programmer in the Washington , DC metro area. There is a lot of work here if you are Microsoft-centric. If, on the other hand, you stay on the open source track (I won't even count Java since it is so rare here) then you are going to be competing for an order of magnitude less of available jobs. That's the money problem.
On top of that there is an attitude problem. On one side you got Microsoft-centric programmers that are blind to whatever else is out there. On the other side you have open source zealots that would rather go hungry than work in asp.net.
Caught in the center? The experienced programmers that don't give a crap about the politics of programming and are just trying to make a living. I count myself as one, since I am currently do probably 99% asp.net but I have years of experience in php. And on top of that I am a mac user, so my asp.net apps are built from XP running on Parallels Desktop.
The best commercial programmers that I know also struggle with this conflict between the politics of open source and the reality of trying to make a living in a market that is dominated by Microsoft. Sure, if you work at a startup the odds are that you will be using a lot more open source stuff, but statistically most startups fail and there are mortgages to be paid and children to be clothed and fed.
Sure, it's fun to hate Microsoft, but what many people don't understand is that Microsoft knows who butters their toast: the developer. Microsoft was the first company that poured millions into courting the favor of the developer hordes. Ever been to a Microsoft-sponsored developer function?
Other companies are starting to follow suit, for example for the past 3 years or so I am seeing Apple push harder and harder for this kind of relationship with their developer base. On top of that, OSX ships with a hell of a set of core development tools as part of the retail price. Imagine buying a windows PC that comes with VS.net either preinstalled or on a DVD, plus the MSDN library DVDs and all of the platform SDKs.
A few weeks ago a college kid asked me what would he need to know in order to make it as a web programmer. I told him:
1. Pick a platform like windows, linux, etc. and learn it well. By this I mean, if you go the .net route, you better understand windows and the web server too. If you go the php/ruby/python/etc. route then you better understand Unix, etc.
2. Learn ANSI SQL, and learn it right. The world is yours.
3. Stay the hell away from the politics of open source v. commercial. Every time you feel tempted, read Slashdot until it makes you sick, then go back to work.
The rest you pick it up as you go along.
I'd love to believe that we can offer our customers the right tool to solve the right problem. We can't. We're a Microsoft shop. And other than Flash, if MS doesn't make it, we can't use it. And I, like others, get tired of being a sharecropper. None of us here own the land under our feet. If MS wants to move into our space, or replace the stuff we make our living with, then we're history if we can't move fast enough to get out of their way. Yes, it is and has been a nice livelihood, but I'm very frustrated with the having to run as fast as I can just to stay in one place.
This isn't the first company I've worked for that was a pure MS shop. I doubt it will be the last. Although I'm tired of it.
Our division's main product is looking like it will be clobbered when a government mandated public access website opens in late 2008. My guess is that our division is going to lose 1/2 or more of its income in the first year. The only saving grace is that the lack of a federal budget for 2007 means that they can't start on this project until next fiscal year, hopefully delaying it. Our corporate parent forbade us from bidding on the project.
A small side project I had been working on (until a burglar stole all my removable hard drives with all the source and backups) was something that would fit in a small niche market. A word processor + a drawing package + glue to be a fault tree analysis package. Later, add some spreadsheetness to add FMEA to the doohickey. Later add QFD. Later maybe a small DB for traceablity stuff. Not world shaking these days. Although the products I've seen on the market are wallet busting and not all that usable. I had started putting stuff together with Word97 and Visio (before MS bought Visio), then, had to rewrite it to port to Word2k, then when Office2k3 came along, I started exploring OpenOffice, and before I got very far, my apartment was broken into. That would have been a sharecropper project: always trying to catch up to the latest version of Office. Sure you can do this stuff with Office, SharePoint and InfoPath. I was aiming it at smaller businesses that didn't have the pile of cash to throw around for servers for this, and servers for that. Moving to OO would have let me keep the platform stable long enough to finish, instead of starting rewrites everytime I got to the 3/4 mark.
Don't get me wrong I love open source too but microsoft has got it right after windows 2000 sp4 and from then on there is no turning back.
Things change all the time because Microsoft is on the cutting edge while most of the open source development is based on 30 year old technology.
To be on the cutting edge means you have to learn the new stuff all the time, if you can't handle that then by all means go and program in perl or something else that havent changed much since it was invented.
I'm recently blogged "Is Microsoft Expanding the API War" (http://www.stevetrefethen.com/blog/IsMicrosoftExpandingTheAPIWar.aspx) talking the same issues. The amount of "stuff" coming out of Redmond is overwhelming and they're even pushing alpha's out on the development community. Since when was that a good thing?
Anyway, good to see someone with your reach blogging about this.
Even though I have a paid for copy of VS2005, I still use UltraEdit for editing some stuff. It's quicker in some cases.
As for VS2005 being the only way to develop on a Windows platform, everyone who thinks this is HIGHLY mistaken. You CAN create ASP.NET apps WITHOUT VS2005 or ANY VS for that matter. Since the .NET framework was released with 1.0, you have always been able to create with your favorite IDE, text editor or what not. If you're good enough, you could even do it at the command prompt with redirects!
As for compiling, check out MSBuild. It totally rocks, and is highly extensible.
I ran out of time reading the ~160 comments, but has anyone mentioned SharpDevelop? Completely written in itself (except for the very first version) using C#. Hmmm... No other tools but VS2005, eh?
If you don't like the languages used by default in ASP.NET, why not try Perl or Python? They both work in ASP.NET. Have since even before .NET. Check out ActiveState.
Now, Python actually comes with its own cross platform IDE - IDLE. It's not perfect, but it is quite useful and actually pretty powerful.
I currently work in an ASP.NET 2.0 and 1.1 environment. I've also worked in a Perl/KSH/Python enviroment on HP-UX and Linux systems. It's all about the tool for the job.
As far as which I like the most? The one that gets the job done and makes me get a paycheck.
I do believe I am the middle ground person you are looking for. I don't hate. I embrace. All platforms perform a function for a particular set of users and each platform will ALWAYS need developers. All projects have a life span. Where will you be when that MS based or open source based project reaches that life span? Will you be so willing to "jump the fence" to the "Dark Side"? Yes, the "Dark Side" exists. It's in BOTH camps.
I think that most of these bashers, on either side of the coin, are just afraid of change. They all need to remember, its still the same coin. This whole argument is nothing better than saying my Schwartz is bigger than you Schwartz. It's still a Schwartz.
(stepping down from my soapbox)
Thanks for the fantastic post, Jeff! I'm not choosing sides... I like all languages and platforms because they all do the one thing I find so facinating, even 20+ years after I messed with a TRS-80 and got the BASIC loop working, they all make pretty things dance across the TV screen! ;) I still can picture the cartoonish way electronic impulses appear in my head and tell me what is happening "under the hood." It's just an electronic box that does nothing different than the other guy's electronic box. It makes pretty things dance on the TV screen.
Wow, you have either been asleap or not paying attention. Microsoft has never been cutting edge, Bill Gates bought/stole the first version of DOS and was in the right place at the right time to grab a foothold on a market no one but apple (who had other issues regarding control) saw a market for. Once they were at the top they did everything they could to crush anyone with a competing product. In other words, they used their monopolistic state to destroy other companies.
Now Microsoft is playing catchup. C# is their answer to Java because they got spanked for trying to redefine the Java spec. Their interface, while I haven't seen it yet, I've heard is very similar to Apple's.
It's one thing if they were really innovative, and they have had a few jems, like the first AJAX implementation, but I can't believe anyone would defend them and say they aren't a bad company. I personally prefer open source because that's what the internet was built on. If the TCP/IP stack was proprietary or if e-mail was proprietary, the internet would be a very different place. Open standards allow anyone to get in the game and we've seen some really cool stuff come out. It also makes it easier for beginner coders to jump in and look at real source code.
But hey, if you're happy with a company that tries to kill it's competitors and tries to exclude anyone that's not them great. Learn whatever whizbang tool that Microsoft has bastardized to make their own and limit your market to Microsoft people, or take a look at open standards and open source which built the internet. No one ever goes back to Microsoft but tons of people are leaving, come join us, the water is warm.
Visual Studio.Net was Launched in 2/02 and the beta bits were around in 2000. Not a word about LINQ or Silverlight LOL
Hey, I have been an M$ developer for years (mainly a VB dev), and all I have to say about it is: THEY DO NOT DO THE RIGHT THING! And the best things M$ have done are all (poorly) copied from some other vendor. Bad, bad work. Don't tell me bulls**t, please!
"Turns out 4 of the top 6 sites on the web actually use IIS Windows (MySpace, MSN, eBay, and Hotmail)"
At least two of them are M$ websites.
You state: "I also begin to look longingly at the open source developers who have been plugging away productively in Perl or Python over the last five years. Sometimes, you wonder if choosing an environment where things change more slowly isn't a better long term evolutionary decision." HJ's comment just above puts that much more strongly.
You seem to imply that the open source development environment changes more slowly than the Microsoft one. Perhaps it looks like that from the outside? I don't know about the Perl world (they've been in the middle of a total redesign of their language for years now!), but lots has changed in the Python world in the last five years. Besides the evolution of the language itself (in the last five years or so, a new object model, decorators, iterators, generators, new language implementations, and lots more), there has been a tremendous evolution in the surrounding infrastructure as well. Web frameworks is the example I'm most familiar with, but new libraries have popped up left and right and the Python landscape 5 years ago was much less rich then it was today.
I have been using Zope for web development for years. In the last five years we've seen a complete rewrite of Zope and an ongoing transition from Zope 2 to Zope 3 (the rewrite). That is a high impact change which the community is still dealing with today.
My open source desktop is also looking a lot better than five years ago. I'm a Gnome user, and five years ago I think we were still at Gnome 1. My machine couldn't play video very well. The most common web browser was Netscape 4. I remember having to struggle getting the *mouse* configured, though that's probably 7 years ago. :)
One thing about open source development is the ability to feel more in control over changes. Now I don't claim I have any control over the future of the Linux desktop. But if I *wanted* to, and worked hard enough, and was clever enough, I could have. I did want to have influence on the development of Zope, as it's my livelihood. I *do* have some influence on the development of Zope. That is one of the things I most appreciate about open source development.
If you're attracted to the open source stack because of its supposed slow pace of change, boy, you're in for a surprise. :)
RE: The font on this site.
When Jeff changed the font (fairly recently I think) I found that this site was very hard to read. The letters looked extremely blurry.
As an experiment I switched on ClearType (in XP go to Display Properties-Appearance-Effects..) and the site became a delight to read.
I guess as people switch to IE7 (which renders with ClearType by default) and as they adopt Office 2007 (which includes the Calibri font) then things might improve.
What was that you were saying about being tied to Microsoft....
Don't get me wrong I love open source too but microsoft
has got it right after windows 2000 sp4 and from then
on there is no turning back.
Microsoft has got it much better after windows 2000 sp4, but every Spam-mail spam-filters are filtering tells me, they're far from right.
Jeff, you ended your article with a link for free software going to fsf.org however a link to http://www.gnu.org/philosophy/free-sw.html is more informative.
Free software goes hand in hand with knowledge, and productivity. I don't mind targeting the windows platform for a code base however to do so exclusively would only serve to further divide users, and perhaps reduce the quality and correctness of the code.
I understand your delema. As a matter of fact, I remember it. The same sentiments were uttered about IBM in the 60's. Then congress stepped in and said that IBM was creating a monoploy by supplying a product and then providing a service on that commodity. Exit the "Service Bureau" to Control Data Corporation (CDC). I never understood that one myself. I did come to understand what the federal governments feelings were. It was sometime after that where the other players you mentioned SUN, APPLE as well as Wang and others jumped on the band wagon. Today IBM is a shadow of what they were in the 60's. I believe that it is right sizing gone mad. And after all is said and done, many companies have found that it might even be more expensive to operate the business with "Open Systems" than with a Mainframe. With today's "Data Explosion" where massive data bases keep information stored under new government requirements it seems that the large IBM way of doing things is needed now more than ever. I guess that there does need to be a snappy front end GUI that humans can use to be more productive than just using a 3270 interface. Besides; they have to be able to surf the net.
pay for IDE that only works with MS languages or use Eclipse for free.
pay for operating system and database or use Linux and MySql.
Tie all my work to a specific company and operating system or develop for a larger set of platforms.
Wait while MS plays catch-up with Silverlight (which is yet to actually be delivered) or use a proven, older, and richer technology like Flash and investigate related products of Apollo, and Flex
Only listen to Microsoft Sales pitch, or open my eyes and realize that nearly all significant I.T. work done in the last 10 years has not been done on the Microsoft platforms.
Microsoft has already lost. It's the MS fanboys who haven't gotten the message yet. They'll all be working for some young Open Source geek in 5 years.
I do 80-90% of my development in C#. Along with the ReSharper plugin it's very nice. I get a lot of stuff done. But I've always worked hard to not get myself stuck in the Microsoft bubble. I often visit and help promote and create Java, Ruby and Design Pattern user groups here in Orange County, CA. I do a few projects in Java, LAMP and Ruby on Rails, but my core, cash-paying work is .NET stuff.
I was talking to a guy who went to a .NET user group meeting and a top .NET developer was presenting his framework and how he created the model-view-presenter design pattern. Somebody in the crowd yelled out "Hey, do you mean model-view-controller?" and the .NET developer/presenter had never heard of MVC. That guy was seriously in a bubble as are many insulated MS-only developers.
I'm so tired of hearing MS developers talking about their "Business Objects" and their cool "N-Tier architectures" and people still publish .NET books with those terms in the titles. Nobody in the enterprise or open source world thinks about their enterprise architecture in such terms. What frustrated me for years is a MS developer would create a class and call it a business object. People, class != object.