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:
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.
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.
brian on May 9, 2007 2:53 PMI wholeheartedly agree. I can see this being a post I link a lot of people to when they frustrate me.
[ICR] on May 9, 2007 3:01 PMLike 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!
Andrew on May 9, 2007 3:11 PMWell, 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!
Jesse on May 9, 2007 3:12 PMI 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.
cmv on May 9, 2007 3:18 PMI 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 :-)
infidel on May 9, 2007 3:31 PM[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..
Tyler Reddun on May 9, 2007 3:34 PMUp 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.
Chip on May 9, 2007 3:39 PMWe can be friends and all, but I'll still never buy an iPod.
Josh on May 9, 2007 3:41 PMThe problem is that developing with Microsoft tools on Microsoft's OS for Microsoft platforms just isn't <em>fun</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.
Nathan Bowers on May 9, 2007 3:43 PM> 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.
Kuerwen on May 9, 2007 3:46 PM> 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)
This is exactly, EXACTLY why Mono exists. Take a look:
http://www.mono-project.com/Main_Page
> the current font is quite annoying to read
body { font-size:90%; font-family:calibri,tahoma,arial,sans-serif; margin:0px 0px 20px 0px; background:#FFF }
Which font is your browser rendering? You can download a TrueType file of Calibri here: http://jeffmilner.com/index.php/2005/07/30/windows-vista-fonts-now-available/
Jeff Atwood on May 9, 2007 3:47 PMDon't forget about Silverlight, the DLR, IronPython, IronRuby, etc. - which is a different MS world if you are into dynamic languages (even though I live in VS2005 during the day).
Btw, IronPython is open source http://www.codeplex.com/IronPython/Project/License.aspx
I have been using the MS stack since VB1 (1991) and from a monetary perspective, I can't really complain.
"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?"
Scott on May 9, 2007 3:53 PM> 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*.
Masklinn on May 9, 2007 3:58 PM>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.
Kevin Dente on May 9, 2007 3:59 PMHere are two reasons for all of this animosity:
1) Microsoft tools generally do not play well with others. This trouble is largely of their own making on this front. What do I use to do VB.Net development if I want to use something other than VS? How about a middleware application server? How about what OS it runs on? Java, Python, Ruby, ANSI C, etc all have options.
2) Having been on the receiving end of MS's business practices (and the BSA) for simply having a public facing web server that was not IIS (no violation was ever found, through 6 full audits) I understand also why people are leery of doing business with them.
There is more that just this, but this is a large portion. Lack of choice and fear of being bullied, or having the tool that works go away with no way to revive it is no fun.
I have been programming since MS was just small, and insignificant. I have worked on nearly every platform there is from mainframes to PDA's. I use MS products at times, but reluctantly.
Grant Johnson on May 9, 2007 4:00 PMYou could always go the Java road and have 15 different frameworks installed and try to get them to play nicely.
Justin on May 9, 2007 4:01 PMNathan: I don't <I>love</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 <I>want</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.
Sigivald on May 9, 2007 4:02 PMEver heart of that pretty big JAVA IDE called Eclipse?
No, seriously, whats so special about VS05?
jan on May 9, 2007 4:03 PMWow -- 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.
Derek on May 9, 2007 4:05 PMI 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.
Mike Gunderloy on May 9, 2007 4:09 PMI 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.
Scott on May 9, 2007 4:26 PMHi 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!
Thanks,
MikeD
MikeD on May 9, 2007 4:30 PM"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!" :)
Good times.
Marc Melvin on May 9, 2007 4:41 PMWell 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. :)
Bob
Bob on May 9, 2007 4:45 PM> 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.
Brianary on May 9, 2007 5:05 PMThanks for the link to the fonts! I had not seen these yet, and I'm a font freak.
Oh yeah, great post!
Erator on May 9, 2007 5:09 PMFrom 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.
David H on May 9, 2007 5:10 PM
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...
Windows Vista
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
ISAPI Rewrite
Subversion (for version control)
TortiseSVN (again for version control)
PHP
Ruby
Rails
MySQL 5.x
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:
Firebug
Fiddler
GExperts
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"
Mongrel
CodeSmith
.netTiers
SQLyog (for managing MySql)
SQL Server Management Studio Express (for managing SqlServer)
SQLiteSpy (for managing SQLite)
prototype (for javascript)
JQuery (because I like working with that as well)
And that's knowing that I've probably left a handful out.
Shawn Oster on May 9, 2007 5:14 PMTo 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.
Reg Braithwaite on May 9, 2007 5:43 PMTotally 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.
Tom Clancy on May 9, 2007 6:09 PMWell 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
Sam on May 9, 2007 6:15 PMHonestly, 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.
Stephen on May 9, 2007 6:18 PMFirst 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 :))
mascix on May 9, 2007 6:21 PM"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.
Dvaid H Said:
"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. "
This is exactly why there is SQL Server Express and Visual Studio Express.
You can learn the ins and outs of the MS platform for free now, and when your ready to make the commercial plunge, buy the software.
Express is powerful enough to do most of what any of the open source stuff does anyways.
"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?
Good post!
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.
sburnap on May 9, 2007 6:51 PMWhile 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.
Steve on May 9, 2007 7:01 PMJeff:
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.
CuRoi on May 9, 2007 7:09 PMThe 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.
BuggyFunBunny on May 9, 2007 7:18 PMDo 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!
Ergo on May 9, 2007 7:28 PMBenevolent?! 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.
Jfaughnan on May 9, 2007 7:29 PMYou 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.
Martin Cron on May 9, 2007 7:38 PMlove 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.
lb
lb on May 9, 2007 7:39 PMAnd 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.
BuggyFunBunny on May 9, 2007 7:47 PMI agree. I've embraced Mono with all my heart.
Miguel is a celebrity to me as well, so rave on preacher!
Christopher Karper on May 9, 2007 8:13 PMI 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!
Kyle Miller on May 9, 2007 8:32 PMAs 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.
Frank on May 9, 2007 9:05 PMI 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.
Abdu
"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.
Mike Torres on May 9, 2007 9:36 PMan 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.
franco on May 9, 2007 10:05 PMI 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.
lordabdul on May 9, 2007 10:49 PMLike 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.
Sridhar on May 9, 2007 11:10 PM
"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...
Stef on May 9, 2007 11:20 PMI 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.
Anonymous on May 9, 2007 11:35 PMJeff,
Surprisingly, some of Paul Graham's best YCombs startups are using .NET
Loopt.com
Xobni.com
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?
Hi,
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.
Huibert Gill
Huibert on May 9, 2007 11:40 PM
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.
Peace,
/omar/
Well said. I felt the same way at MIX - privileged to get to hang out with Miguel, and frustrated that few people seemed to know him.
I've always wondered why people like Mike don't make incremental steps to a Mono based stack instead of "chucking it all" and starting over with Ruby on Rails on a Mac. It's very possible to leverage your .NET knowledge in open source development. I'm still amazed that most .NET developers think you need to recompile their code with Mono's compiler (mcs). Since Mono works at the MSIL level, you can copy binaries written in Visual Studio to a Linux box with Mono installed and just run them.
ASP.NET code is the easiest to get working in Mono. Rob Conery had to change just one line of code in the entire SubSonic framework to pass the MOMA Mono Compliance checker.
Jon Galloway on May 9, 2007 11:46 PM> 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.
Jeff Atwood on May 9, 2007 11:54 PMHi Jeff, great post indeed (and thanks for the font).
Yet I find it very pathetic - the picky replies of "I know some Python IDE" or "I know some startup with MS development tools" blah blah blah.... indicate that the core message is failed to deliver.
Wake up guys (I bet mostly developers here?), no users *give a shit* on your side in the technological racism. Get your feet wet in all alternatives and deliver what deemed best to your users.
Kevin on May 10, 2007 12:01 AMwell said. I myself never understood why people like to take sides and lambast and insult the other camp with reckless abundant. Of particular note is, what they mostly state is nothing directed to improving the situation.
I inline skate, you skateboard, we're street skating because it's _fun_ so why can't we hang out together?
One drives a BMW, the other a Mercedes Benz. Big deal.
Aaron Seet on May 10, 2007 12:06 AMreally nice post. interesting reading to see someone put it in black and white.
i emerged from university a die hard java programmer. i had never seen a better IDE than eclipse. actually, for all intensive purposes, i still view eclipse as the best IDE around.
about half way through my first year of real work, we were thrown to the sharks of .NET having to abandon all that was safe and good.
at first, i was very resistant, knowing all that is said about Microsoft, but now, a year later, i must say that Microsoft have gotten their act together...to a degree. obviously the greatest step up from java, c++ and other OO languages will be the drag and drop GUI creators, and the addition of structures such as generics and web services are great. but i still have my reservations.
man, it's still difficult to really get those GUIs to do what you want them to. if you really want to get clever.
and the worst problem...interoperability - between .NET and other platforms, and even worse backward compatibility.
i have systems that work perfectly on windows 2000 but fails on 2003 for the most trivial of things. .NET has a great SOAP interface but it only works when communicating between Microsoft servers (as i tragically realised when we went live with a system (worked when testing on local servers but failed when going to the live Apache server).
Microsoft are honestly doing really great things and i look forward to .NET 3.0 but with the nagging worry of how much of it will be backward compatible
Just can't believe you're not using Visual Assist with Visual Studio. I couldn't live without it (though I develop in c++).
David on May 10, 2007 12:29 AMEmacs is awesome (and I'm a Java developer currently)
But when I was doing C++/MFC development, I used Visual Studio and loved it. It really is an amazing IDE and anytime I find myself doing Windows development, that would be my tool of choice.
I'm sure the argument has been made before, but tools like emacs and vi get you a lot 'closer' to the code in my view. You really have to get in there and write the code and you'll know exactly what it's doing (if that's your thing). But there's no way you'd get me to make a .NET component or Windows application with it, there is so much scaffolding that has to be generated first. Visual Studio is perfect for that.
Cheers,
Josh
Sorry. forgot to mention that.
i am using both visual studio 2005 and 2003 (because anything coded in 2003 is hell to compile in 2005). actually i haven't managed to successfully do it yet, including using the convert tool. anything that compiled in 2003 and then compiles with more than 600 errors in 2005 isn't worth it.
I have to say I'm quite pleased I've not yet really seen the "Clippy made Windows suck" problem whereby someone takes one thing that they did wrong and apply it across the board.
Though it does and has happened a little bit with ASP.NET and .NET. To my mind they are two different but related technologies. I dislike ASP.NET, I just can't figure it out. I love .NET.
I grew up with Borland and moved over to Visual Studio when the Express tools were in beta. I've tried a few other IDEs (Eclipse, IDLE, Borland tools, KDevelop and Komodo to name a few) and my problem with all of them compared to Microsoft is that Visual Studio, for me, just works. I install it, move a few panels around and tick a few boxes according to my personal preference and then I'm off and away. Contrast that to any of the others and I either just can't get them to work properly, or they lack some of the features I like about VS, or they just feel too bloated and slow for me (Eclipse I'm afraid folks). I'm sure I would love them if I gave them the time to get used to them (Though believe me, I've given Eclipse a long time. Some stuff is great, but I don't like the general workflow).
And I think that's the problem. A lot of Microsoft tools, so long as you're doing what they think you would want to do and have catered for, work fantastically great. But, like any toolset that is designed to work well for a narrow stream (re: RoR) as soon as you try to deviate from that you find yourself coming a bit unstuck. Contrast that with some of the other general purpose tools; it may not be as easy or as nice to get the general stuff done, but if you want to do odd things you can, and a lot nicer than in the other toolsets (and yes, for the purpose of this Microsoft orientated comment I'm taking Linux and OS X development as odd. This very fact is another slightly different point/argument).
Part of the problem then comes because those that want to do the odd things see that it's difficult to do it in the Microsoft tools, so decide that those tools must then obviously be bad. But they have to realise that for people who are writing for that narrow stream that it caters for, it *is* the best tool for the job. If I'm writing a Windows application (and there are some legitimate reasons not to make some programs cross-platform) I am really not going to faff around with other random half-baked toolkits when I can use one specifically designed for what I am doing. It's like banging a nail in with your head - you just get a headache.
Now to address the development on non-MS platforms, as someone will probably pick me up on it if I don't. I would agree that Microsoft should open up a bit, and from what I've heard they could probably help the Mono project out a little more.
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.
[ICR] on May 10, 2007 12:45 AMIn 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!
Craig Francis on May 10, 2007 1:29 AMabsolute rubbish!!
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
friends?
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
for stuff?
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.
Steve Smith on May 10, 2007 1:39 AM> 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.
For example:
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.
Anonymous on May 10, 2007 1:40 AMI 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 AT&T, 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.
ryan on May 10, 2007 2:01 AMActually, 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.
Kris
Kris on May 10, 2007 2:05 AMA 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, ..."
http://www.aaxnet.com/editor/edit019.html
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.
jaynicks on May 10, 2007 2:12 AMSTANDARDS 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.
foobar on May 10, 2007 3:00 AMI 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.
H. Eriksson on May 10, 2007 3:19 AMGreat 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.
Kalid on May 10, 2007 3:21 AM"Right tool for the job and nothing else matters." Very true.
Kashif on May 10, 2007 3:26 AMWe 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.
Pedro Vera on May 10, 2007 3:27 AMHear hear!
Wilfred Knievel on May 10, 2007 3:28 AMDon'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.
Software developer on May 10, 2007 3:38 AMThings 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.
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.
flynnguy on May 10, 2007 4:49 AMVisual Studio.Net was Launched in 2/02 and the beta bits were around in 2000. Not a word about LINQ or Silverlight LOL
paul on May 10, 2007 4:52 AMHey, 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.
CJ on May 10, 2007 4:55 AMYou 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....
Graham Stewart on May 10, 2007 5:06 AM> 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.
Frank on May 10, 2007 5:17 AMJeff, 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.
LV on May 10, 2007 5:18 AMJeff,
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.
Doug Gengler on May 10, 2007 5:23 AMhmmm,,,
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.
hmmm.....
Omar, you should check out Banshee as that is written using Mono and it seems to be pretty popular.
HJ, I guessing you haven't been working in the industry very long if you think Microsoft invent every new technology. Consider that Open GL was around long before DirectX.
I feel sorry for those for believe strongly in either side. You need to accept that competition is healthy for the industry and Microsoft have helped to popularise home computing.
Paul on May 10, 2007 5:36 AM@HJ - you obviously have no clue if you think that Open Source is not cutting edge. I doubt that you've any experience of anything Open Source. Have you actually hosted apps on Linux? Tried Firefox? Grid computing? Xen virtualization?
I'm not sure what you mean when referring to 30 year technology - are you talking about BSD/Unix/Linux? If so, these technologies are driving most of the Internet the time time I checked, not to mention mission critical enterprise systems. OSX is based on BSD and it's a great modern OS (Vista does a reasonable job of copying it). Linux is even shinier with Compiz/Beryl.
Your reference to Perl - OK if you've never had the need to use a scripting language like Perl then you will not see the value in it. You wouldn't use it to write eBay but again there's nothing in the MS world that does what Perl does unless you use something like IronPython or IronRuby (both of which are Open Source and are ports of cracking languages). If some of these Open Source scripting languages are so lame then why is Microsoft baking in scripting support into the next version of .Net?
In summary, don't talk about what you don't understand. Closed Source and Open Source BOTH innovate and get inspiration from the other side. Use whatever gets the job done. My personal preference is for good Open Standards support so Microsoft wouldn't be my first choice but I would definitely use their products/technology if I thought it was a good fit to the project that I was working on - MS has some fantastic software. It's a shame that there are so many muppets in IT.
I definitely share some of flynnguy's heart here. But flynnguy, you are convincing only the open source choir and converting no one. If you really want to do some good, keep your mouth shut for a few days while you read "How to Win Friends and Influence People." Your writing will become a lot more effective, in the sense that you will convert a lot of people to use open source tools.
With that off my chest...
I program for fun. I left Microsoft around 1997 when I discovered that under the Linux command line was all the development tools I thought I'd have to pay thousands of dollars for, and a nice stable OS too. Revision control I thought costed $1000 per seat, editors and build tools and compilers for every language I could imagine I thought costed $200+ per seat per tool and/or language, and a never ending fountain of new software to play with, to me worth infinity dollars. I felt like I'd been ripped off my whole programming career and began the process of expunging MS from my life.
This article makes me think, "Why did I do this? Why does it always have to be a violent revolution?"
Reflecting on what I just wrote, wow, I'm insightful!
Now I'm going to ruin it:
Look at Apple right now. They made a mutually beneficial effort to make themselves _compatible_ with the rest of the open source community. As a result I've seen a lot of Linux desktops turn Apple. But the Linux guys don't hate the Apple converts. Well not even half as much; it's like an order of magnitude less hate. I could buy a mac now, and I could still easily do a lot of stuff the way I'm familiar with. I can manipulate an Apple build environment from my Linux machine easily with Emacs Tramp.
Apple and open source software play pretty nicely. Until, that is, you start trying to make universal binaries from uninitiated free software. Hate! Hate! But that's optional for most people.
But if I got disillusioned with Free Software today, where would I go? MS? I'd have to cut bait and regain 10 years of my career. If I fled to Apple, it would be a really gentle transition.
Apple chose to make things this way, maybe by accident, but this is the way things are.
MS, on the other hand, has enough resources that they could make an effort to bridge the gap, but they don't. Or when they do it's under the auspices of labeling my OS as something that must be escaped, and the bridges feel like temporary offerings. The community hate is the official company line.
Seems like all the compatibility work, (.net, samba etc.) is happening on our end, without the benefit of docs, while the other side of the divide has the benefit of source availability but won't even ship ssh out of their box.
So I'm sorry to say, I fall in your trap, but I've got good evidence to point to the fact that I'm not the problem here.
I don't really understand the mono project. That is, what do they think the endgame will be? Let me try to lay it out:
Assumption: Microsoft is really serious about .NET, it's not just a red herring. MS wants all developers to move to .NET and they themselves will eventually move all their products to .NET.
Assumption: The ultimate goal of Mono is 100% .NET compatibility. Any program written for .NET will work on Mono without the developer having to even think about it.
Now, if both of these assumptions are true and the events assumed in them come to pass, then doesn't that endanger the Windows near-monopoly? That is, .NET developers and users will have a real choice about what operating system they use.
Given Microsoft's past behavior, which of the following is more likely to be their reaction to a threat to the Windows near-monopoly:
A) Shrug and say, "oh well, Windows was a good ride while it lasted. I guess we'll just have to compete on a level playing field now."
B) Do everything within their power to cripple or destroy Mono.
I don't see how any sane person who has looked at Microsoft's history can pick anything other than B). Maybe if the senior management changed, but Gates and Ballmer? Nope, they're "destroy your enemy at all cost" sort of people. They've proven this again and again.
Now, I'm not saying that MS would succeed in crippling or destroying Mono. Just that they would try. And even a failed attempt would suck up huge amounts of time for Mono developers (and would probably scare commercial developers away from Mono).
So it seems to me that Mono is only "allowed" to exist by MS by the degree to which it is not-completely .NET compatible and therefore is not a real threat to Windows. (Just like how MS is quite happy with a single digit marketshare Mac OS, but would change their tune if Apple ever got over, say, 20%.)
"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?"
If an IDE needs to run in Windows (Vista, XP, 2000...) It'll crash.
So I think any IDE that runs on any OS, is better than VS... At least if you really know what you are coding and dont know only to drop controls around...
Regards.
wmk on May 10, 2007 5:55 AMAs a former MCSD VB developer, I understand Mike’s frustration. I migrated to Java 7 years ago. The move was brought on by three things. The promise of write once - run anywhere, Microsoft's territorial nature and the cost of the Microsoft development environment. Let me address the last issue first. The cost for Microsoft’s development environments has continued to spiral upwards. Back in 2000, the professional studio costs $2500 for a professional license. The cost of keeping my skills current with Microsoft was more than I could justify then. Microsoft has continued this with all of their product lines: the OS and the Office suite offer, what I consider as, costly upgrades for little increase in true functionality. Do not get me wrong, I do not begrudge Microsoft the ability to make money or charge for it services, but I do think that they took a page from the IBM school of pricing. (See, I was around when dinos and IBM rule the earth.) Jeff is right, if IBM still ruled we would all be forced into bleeding IBM blue.
Beyond cost, Microsoft’s territorial nature about its OS, I still fight on a daily basis. I have to deal with an IIS server in my now mixed environment only because content rendition services for word documents require windows only dll’s. I believe that the choice of a server for a job should be based on performance, hardness, or availability and not because a company has failed to embrace open standards to protect their market share. Unlike Jeff, I believe that there would be less of the “us vs. them” mentality, if Microsoft itself did not foster it and feed off of it.
I would be nice to be able to use the sharpest tool in the woodshed and not just the available tool from a single vendor. (I don’t need or want to buy a $5000 chain saw to prune tomato plants.) If Microsoft has the best tool, then I use Microsoft. If another vendor’s tool is easier to work with, performs better or is more secure, then that is the tool I use. I want to be able to build software that is machine and OS agnostic. I want to build solutions. That is want the clients that I work for need.
I think you are just trying to get my vote for favorite programmer quote ;-)
It's a job. It's a fun job for people who enjoy little surprises. My suggestion: dedicate yourself to making things happen, wherever you can with whoever you want to. You may not get rich or famous. But you'll contribute and have fun.
Tom on May 10, 2007 6:23 AMStartups using Microsoft: Page Flake, Writely was written in .Net too
Tim on May 10, 2007 6:26 AMI use microsoft tools at work. But at home...I'm all java/eclipse/apache. Eclipse's refactoring tools are light-years ahead of Visual Studio.
joe beam on May 10, 2007 6:32 AMI'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
Definitely hit another nerve Jeff... Way to go! Love all your posts!
Russ on May 10, 2007 6:36 AM"Humor me for a moment and imagine replacing Microsoft with one of its competitors: Sun, IBM, Oracle, or Apple."
This statement totally misses the point. It assumes there has to be *some* big monopolistic company controlling our platform. That is not only false, but it is the exact thing people are complaining about.
Instead, I ask you to imagine a world where IBM's BIOS was never reverse-engineered, and thus IBM kept total control over the hardware platform from 1980 till now. Comparatively, how stunted would the PC platform be today, without all that development and support from hundreds of third party shops for the last 25 years? Sure, IBM would probably have come up with some innovations all by themselves. Are they smarter than a marketplace full of hungry competitors? Hell no!
Now take that mental delta, and apply it to PC software. *That* is what Microsoft's software monopoly has done to us.
T.E.D. on May 10, 2007 6:36 AMI'll admit that I've tried it a time or two, but I've never inhaled!!!!
I am a MS-based programmer and like the majority am staying that way to pay the bills.
But my main problem with MS, in general, is how they use their products to dictate how things will be done. They've pre-decided that the best way to program everything is their way. I strongly disagree.
My second issue would be with product bloat. They stuff way too much in to their products that an everyday person has to weed through to do anything truly productive.
My last issue would be that I think their products, specifically VS, are too-tightly connected to the OS. I have never had to wrestle with permission issues so much in my life. I still don't understand why I have to give myself permission to run something that I've coded on my own machine.
I am probably one of the few people that think the jump from VB6 to VB.NET was a step backward.
"Follow the money" as they say. Trace the tree of "us vs. them" and at its root you will find Mr. Steve Ballmer. It is he who encourages the dichotomy, solely for his own ego.
I too find the religious zealotry tiresome, after abandoning Windows development years ago, and I take great comfort in this Larry Wall quote:
"True greatness is measured by how much freedom you give to others, not by how much you can coerce others to do what you want."
Todd on May 10, 2007 6:51 AM"... 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?"
Yes you have. (See the last quoted word).
Emacs most definitely is an Integrated Development Environment. The only thing I know of that Visual Studio does that emacs doesn't is WYSIWYG GUI development. That's probably a really big "only" for some folks. However, I do mostly system's programming, so I'm not one of those people. The power of the text editor is by far the most important thing about an IDE to me, and that makes emacs vastly superior to Visual Studio.
T.E.D. on May 10, 2007 6:51 AMAs the owner of a small development shop, I get the best of both worlds - I do work both in Rails and .Net, depending on the needs or preferences of each client. But with projects like SubSonic out there, the two paradigms aren't that far apart anymore! I like the fact that MS (and the MS ecosystem) is taking some cues from the OSS community.
So, although I plan to buy Mike a beer and pick his brain during Railsconf next week, I'm not following him off the cliff. Unless my clientele goes 100% Rails, I'll keep one foot in both camps - and laugh at the zealots on both sides!
John on May 10, 2007 7:09 AMHowdy Doody Jeff,
Isn't this a case of 'silent majority', as in why would I envangelize my profound non-committal either way, i.e. the reason you think the world is polarized on this subject is the fact that the two poles are so loud and noisy (no disrepect to the Polish intended here).
Picture it like a noisy penguin and a noisy polar bear having a shouting match at either ends of the Earth - it would give the impression that no-one else lived in between them, while the case is that the majority are just 'quiet whatevers'.
PS Why are you blogging about Mike Gunderloy saying something, isn't that what Mike's blog/newsletter is for? Look out for my 'Jeff Attwood Considers Mike Gunderloys Plan: My Reaction' blog post any time now...
David I on May 10, 2007 7:11 AMThe issue I have with non-Microsoft developers is that they believe all the MS IDE's do is drop a few buttons on a page and somehow that makes the code work. VB is probably the cause of it, but like any half-decent VB programmer I had to resort to API's in order to make the program do anything fancy.
Perhaps they don't understand that you don't have to use VS to create .Net projects. If you are sadistic enough you can compile the code from scripts, but I would rather be spending time working on the core code instead of setting up the development settings (although I do believe the OS tools are better for this on large teams).
Oh and please stop referring to Microsoft as Micro$oft and the MS developers as "fanboys" because it cancels out any intelligent points you make.
Paul on May 10, 2007 7:11 AMLove your blog, Jeff, but did you purposely overlook the fact that Microsoft has famously used tactics that would bring a tear of envy to Tony Soprano's eye? Their illegal bullying of our entire industry should not be overlooked or so easily forgotten.
This is not a moralistic rule-of-law kind of stance. If we fail to shun the ruffians in our business, then our business will be owned by the ruffians and innovation suffers. See: Russia. We all programmed Visual Basic in the 90's because there pretty much was no other game in town. OOP and elegance weren't even possible in that nightmare. The US gov't gave them a slap on the wrist, but it was, as I remember it, developers, developers, developers who said "screw you" to Redmond and embraced the web, not Windows, as the platform of choice.
Microsoft is unrepentant. Now they are spreading FUD about Linux and trying -- yet again -- to get their proprietary mits on the web via Silverlight. Stop enabling them.
Mike Pence on May 10, 2007 7:16 AMI'm a little concerned at a statement I caught at the end of your post Jeff. Not to mince words:
"Stop with the us vs. them mentality... We're all in this thing together"
But then in the next paragraph you said:
"For now, I choose to live in the Microsoft universe. But that doesnt' mean I'm ignorant of how the other half lives."
If we truly want to get rid of the us vs. them mentality, how can you say something like "how the other half lives"? Or maybe I'm just taking things out of context. I still need to pour through all the other comments here, but great post.
Let's be straight here, I'm a Microsoft MVP and Microsoft has been good to me. To a certain extent, I'm a Microsoft pimp. I pimp their products and technologies on my blog, when I speak, and every chance I get. However, I also drag them through the mud when they're wrong or produce confusing/stupid/dumb/moronic/non-working/etc. tools. That's the beauty of being an MVP. I get to play in both camps and tell it like it is. Okay, I'm not going to cut of my nose despite my face, but I'm also not going to sugar-coat things that are just wrong in the Microsoftverse. As am MVP I take the pain and suffering so that I can pass on the experience to others in the hopes that they won't go through what I did. It's a bit of a self-mutiliation mentality, but it's my choice.
I'm also an open source guy. Any project I do generally goes straight back into the community. I come up with a way to improve a gap that MS failed to fill, and I fill it then unleash the hounds onto the rest of the geeks out there to do what they will with it. I don't however consider that another camp. If MS came to me and said "Bil you can't be an MVP and release all these open source projects" then I would stop being an MVP. However I wouldn't stop doing what I'm doing now and would still praise and bash MS for things they do (like putting us through CTP hell like they are right now). The only difference is that I won't get the inside connections I have now that help me position the community for the future.
Anyways, I completely agree with you that software development is about software development, no matter what label you slap on it, what sponsor you have behind it, and what platform it lives on. I choose to build on the Microsoft platform just because it's the way it works. If I could build everything on Linux and target Windows without jumping through hoops (and Linux offered me some value-add over Windows) then I would do it. Or Mac. Or whatever. The reality is that the largest audience out there for the type of software that I build is Microsoft centric, so you build what works. If I had 1000 Mac users banging down my door for Mac software, I'd gladly spend the time doing that however in my experience, it's been 1000 Windows users to 10 Mac (or Linux) users and while I'm all about sharing, I can't sacrifice the good of the many for the good of the few.
Okay, enough babbling and I'm not sure how this all relates to the post but maybe food for thought. Thanks for your bandwidth.
Bil Simser on May 10, 2007 7:17 AMAs someone who has developed on the MS platform almost exclusively for 8 years, I can say this: I'd be MUCH happier if I never had to look at another piece of C# code. I've worked with both professionally but I've been in a .NET shop the longest. Having seen both sides, I'd choose open source over Microsoft.
"There's nothing in between. No middle ground. Why does it have to be an all or nothing proposition?"
Jeff, are you really on the middle ground? All of your articles seem blisteringly pro-Microsoft and anti-anything else. That makes this article sound hypocritical because in the past, you've been very quick to discount anything that isn't from your own camp.
That's how it seems to me anyway.
Cecil on May 10, 2007 7:23 AMeBay was originally written in perl, and is now one of the largest Websphere installations on the planet.
Jonathan Feinberg on May 10, 2007 7:30 AMI could not agree more with this blog entry. For some reason that I cannot comprehend, majority of people are either against MS technologies or against non-MS technologies. This is so dumb. And that talk about open source vs Microsoft, my goodness. I am developing with C# 99% of my time and for majority of my tasks I use only open source software. I just cannot understand how choosing one eliminates the other. And having such a diverse environment in software world only helps. Each platform competes and strives to be better and excel above all. In the end, we, developers, win.
I think the only thing that hurts the community now more than ever is the die hard MS only people who due to their own laziness choose to ignore everything else and advocate their lifestyle to the rest. If we can eliminate those, we are in good shape.
I am still confused with this notion that you are either MS or open source developer. So stupid, you can and should be both.
PS. I cannot believe people at the MIX couldn't recognize Miguel or know the name. I mean common, where do you live, in the moon?
laimis on May 10, 2007 7:49 AMIt's a little nave, in my opinion, to think of Microsoft as a benevolent dictator. Microsoft creates and cannibalizes markets at an astonishing rate, giving developers the tools and technologies they need to be inventive... and then turning around and competing with them when the market shows promise. They've slowly expanded into nearly every technology arena, threatening the very developers they proclaim to love and support.
And yet most of us have little choice. The vast majority of commercial software developers must target MS operating systems to have a chance at success. Until the monopolistic cycle is broken, there is little choice in the matter. Microsoft has successfully seized control of the playing field.
How's this for blowing people's minds: I like to develop open source software for Windows in unmanaged C++. Mostly because I like for just about everyone on the planet to be able to run my programs without needing to install fifty megs of "frameworks" and "libraries."
Blind platform advocacy is weakness. Great tools speak for themselves. People cling to these movements to feel like they are a part of something. You look at a site like Slashdot, infested with blowhards who insist that using Microsoft technologies is morally evil. They fail to see that is merely a choice. I'll be the first to say that a lot of MS software is merely average at best. But I don't see substantially better efforts elsewhere.
As for non-Microsoft development tools, I have yet to be impressed by a Java IDE. Any IDE which needs to garbage collect (and thus preventing me from typing) doesn't cut it in my book. I'm talking about you, IntelliJ. Eclipse is...average, at best. The Java development world fails to impress me overall, seems like a bunch of people inventing as many frameworks as they can. And don't get me started on "application servers," either.
I suppose the deciding factor on technologies for me is the Just Works factor. Can I do what I need to do with it quickly? Or do I have to place special libraries in certain places, tweak environment variables, and muddle through config files just to use it?
Matt Green on May 10, 2007 8:04 AMThe universe runs on duality, and people run on a need for social acceptance. You're always going to see partisanship.
Mattkins on May 10, 2007 8:06 AMIt seems like you've glazed over the bit where Gunderloy mentions Microsoft's "increasing inclination to stifle competition through legal shenanigans".
I'm a pretty die-hard Window's developer, but I agree with him. It's not so much about the tools, it's more about associating yourself with a company that can be a bit shady.
Joe on May 10, 2007 8:11 AMIs C/C++ the solution?
Big Hairy Chicken on May 10, 2007 8:15 AMTo Jeff's "pain" about all of the things he needs to install to get up and running, that pain is at least temporary as Visual Studio Orcas will have all of the updates rolled up into one so your installation list goes from 9 items to four items. You could also try Visual Studio Orcas Beta 1 as well, but that depends on your tolerance for using the latest and greatest.
As for Mike, that's too bad as I did enjoy the daily grind...
Thanks,
-Dan
Interestingly, on the Mac side of things, there's no dichotomy between "Mac devs" and "Open Source Devs." Lots of Mac apps are based on open-source stuff, lots of Mac devs contribute to open source or have parts of their code open, and stuff like BSD and X11 makes it easy for open source devs to port to Macs.
LKM on May 10, 2007 8:40 AMit is interesting to me to read the "let's exit the Microsoft building" experience from the hard-core Microsoft developer's angle. i'm almost 50 and have coded for a living for 28+ years. i've written code in more dead languages hosted on dead platforms than most even know existed. i've done some Microsoft-centric development and a fair amount on Unix and an even bigger amount on VMS. i vastly prefer to develop on non-Microsoft platforms. but i digress...
as a user of Microsoft product, i have been a Windows user since Windows 3.1 was a _new_ product. frankly, since the release of Windows 2000 the product has been going downhill in many ways. i do not think XP was so much better than 2K and Vista is just an atrocity from a user's viewpoint. Vista wants tons more hardware, restricts my freedom and causes me to spend tons of cash on new software to replace stuff that currently works. add that to the fact that Windows is completely retarded with respect to handling external USB devices (can anyone explain to me why plugging in a 4th USB memory stick caused XP Pro to invalidate the drive letter of another stick using that drive letter and why the hell it wouldn't restore that original drive letter after a reboot? oh yeah, that happened on a _work_ PC where admin rights have been taken away so don't bother telling me to change the drive letter back...)
no, the Microsoft platform has become a stupid, ugly caricature of a thing. it is bloated. it does retarded crap to USB drives. (can anyone clearly explain what the hell "delayed write failed" means and how to FIX IT???) with Vista, it is toadying up to hollywood and the RIAA and restricting my ability to use my PC.
no, i join those developers in "exiting the building". Microsoft has lost its way and needs to refocus on what real users and developers need and want. every attempt they have made in that direction seems to me to be complete failures. XP is not easier to use. Vista certainly isn't either. they hide essential processes from the user (like assigning drive letters when a USB stick gets plugged in -- do we really need frickin' drive letters anymore?) and make it nightmare to manage. as a developer, do you really want to have to go "back to school" every couple of years to re-learn how to program the beast? not me... i realized that when they rolled out VB.net and invalidated most of what i already knew in VB6. i still use VB6, they can keep .net...
but now that Ubuntu Linux runs on my laptop instead of XP Pro (that was a story to tell as well -- how is it you can't even tell whether the USB port is 1.1 or 2.0 from the system management tools so that you can fix the driver which complains EVERY time you plug in a USB disk?) i will turn my attentions to non-Microsoft development. i have all the reference books necessary to go back to my roots since the major interfaces aren't significantly different from their Unix roots.
no, i applaud these guys for leaving. Linux, like OS X, just works better (as long as you have the hardware support necessary -- some vendors won't release hardware specs so that appropriate drivers can be written).
Microsoft needs to learn how to get lean and mean. reduce the resources required to run their crap; reduce the learning curve to be able to use it; eliminate the "relearn how to develop every 2" cycle. no, the monopolists of Redmond need to have a corporate near-death experience to re-learn who really pays for their existence.
dennis parrott on May 10, 2007 8:51 AM*Excellent* post - compelling and very well written. Keep it up!
Avi Flax on May 10, 2007 9:19 AMI love all the comments that Microsoft is better or Open Source is better. My IDE is better than your IDE!!! It's comical and makes me laugh. Does the average user even care? No. The average user just cares that it works. The point is providing quality software to your end users. Whether its Microsoft or Open Source its your job as a developer to help pick the best tools for the job and implement code. Sometimes the toolset is driven by the company your working for. Every interview I've ever given is something like: Our product is using .Net 1.0 VB. NET with some C++ mixed in or something similiar. Are you interested in doing that type of work? Then it's up person to decide.
I work with Microsoft products, but that doesn't mean I'm not intested in Open Source. I think that if your in one camp or the other your missing out and that this bias will make your software development experiences and decisions narrow minded.
Jon Raynor on May 10, 2007 9:47 AM
I recently read a post that generated a comment about it being important to be creative not negative i.e. a 'positive advocate' when discussing 'why?' : http://diveintomark.org/archives/2007/05/02/silly-season (comment 86).
This blog post is definitely following in that vein - i.e. discuss what the positives might be or at least highlight the debate we're all having either privately to ourselves, our peers or publicly to strangers via our bogs :-)
My perspective, when reading posts that suggest 'the business case is compelling to work with Microsoft tools', is that if it's just business then you're happy when things like this happen: http://weblogs.asp.net/edaniel/archive/2006/01/05/434548.aspx to protect your markets by playing the standards game - the most recent being the ODF / MSOOXML debacle.
For many of us the change means giving up something you've invested hard to create: http://weblogs.asp.net/cgarrett/archive/2006/10/03/MVP-no-more.aspx
I like the alt.net tag - I think that's where we should all be now because we can't trust anyone to look after developers when they're such an important value proposition to these businesses - perhaps one of the few titans we might entertain will be Sun Microsystems as they've given more than anyone else and continue to do so - I like Sun much more than Microsoft today.
What I want to see is all those top business schools getting their under-grads producing term papers on how Microsoft needs to shake up its strategy and create a disruptive business that will be ready to support a new model, one that opens up everything Microsoft, to the world and then what will open source do? Improve it for a start, remove platform adoption, vendor lock-in, compatibility and interoperability problems/fears and allow the immense partner network Microsoft has stay in business at the short-term expense of Microsoft shareholders who are certainly far fewer than the community of Microsoft users - could Microsoft really understand that type of user-centric market positioning that empowers everyone? Perhaps not but it was fun thinking they might!
Ed Daniel on May 10, 2007 9:56 AMI feel exactly the same way. I am a Microsoft consultant by day, but I want to learn the dark side (or is MS the sith? I forget) and promote open source in my spare time. A great example is <a href="http://www.OpenAjax.Com">OpenAjax</a> - I donated this domain for FREE to the Alliance to promote Openess in Ajax. Recently I found out that both Google and Microsoft joined OpenAjax, so now nearly all large companies are working together to promote Open Ajax
Ric on May 10, 2007 10:18 AMThis is a rather odd post, Jeff, given that you often come across as a pretty dyed-in-the-wool Microsoft cheerleader (to me at least). I don't intend that to be derogatory, but you just honestly seem to embrace and applaud Microsoft initiatives a little more eagerly and enthusiastically than most pragmatists.
I regular walk in the lands of all technologies, and I will say quite assuredly that the *worst* of the "our camp/your camp" warmongers are none other than the Microsoft faithful, fearful of change, desperately clutching onto whatever Microsoft fed them today and declaring it a revolution of innovation.
And it isn't just about technology, and it's naive to imagine that it is so. I use a plethora of great Microsoft technologies, and make a lot of money doing the same, but Microsoft's agenda and conflict of interests are always on the top of my mind.
Dennis Forbes on May 10, 2007 10:40 AMI've spent the better part of 20 years as what some would call a Microsoft bigot. I'd prefer to look at it as going where the market share is. I deliver business technology solutions with the stack my (and Microsoft's) customer has chosen and the one that gave microsoft the market share to be considered a monopoly. I just like building solutions and don't care whether Microsoft squashes competition as long as they do not squash innovation. I do not believe they do or can. Sure, they like any business are going to try to remain on top. If you don't then you should live in a cave because that's butters your bread.
As for whether or not any startups are using the .Net stack. Who cares. Microsoft and those of us supporting their stack, spent well over a decade building and proving their stack was adequate at the Enterprise level. Why do some now turn-around and claim they arent' the best for a startup business that can't afford to buy the Enterprise stability and scalability in the .Net stack? Microsoft makes its money and I make my living on market-share and if you lined up all the start-ups in a row there isn't enough revenue to line up against even 1 or 2 of the largest Enterprises. Do we want rock-solid stability, scalability and frameworks for rapid development or do we want a platform thats cheap enough to enter a market? I know where I'd rather bet my mortgage payment :-)
Eddieg
EddieG on May 10, 2007 10:45 AM> I don't intend that to be derogatory, but you just honestly seem to embrace and applaud Microsoft initiatives a little more eagerly and enthusiastically than most pragmatists.
What evidence do you have to support this statement?
I like Microsoft. I said that at the top of this entry. But I'm far more skeptical than the typical MS developer in a typical MS shop. If you think *I'm* a cheerleader, you're in for a very rude awakening.
Jeff Atwood on May 10, 2007 10:49 AMMy agreement with your thang comes with a few suggestions:
(i) Use VMware (not Virtual PC) on Windows and install a Linux desktop VM and start to SLOWLY migrate as much as you can to the Eclipse world of PHP, SQLite and MySQL (XAMPP). This move is laughable to many hardcore Microsoft developers.
(ii) Move your MSDN development environment to another (Windows) VM and leave your Windows host OS clean. Now you can see the Windows world on your host machine like people who are not developers do. Sounds simple but this is very important.
(iii) Stop using "controls"---especially ASP.NET controls. My new ASP.NET designs prioritize ASHX files over ASPX files. My move was to use XSLT as much as I can. Again, this is utterly crazy to most .NET heads---Juval Lowy literally hates XML.
(iv) Use YUI for AJAX and not MSDN AJAX solutions. This makes your Web clients server-neutral. You can spend hours and hours designing a UI for the web---do not lock it in to a Microsoft server!
More related stuff:
"Random Screen Shots: The New Songhay System ASP.NET Design Pattern"
http://www.kintespace.com/rasxlog/?p=536
Your list isn't really fair... You are using cutting edge technology before it is mainstream. Wait a few months for Orcas and your list will cut in half to
* Windows Vista
* Visual Studio 2007 (Orcas?)
* Visual Studio 2007 Team Explorer (if not included w/ Orcas)
* SQL Server Express SP2
* Expression Blend (unless this is in Orcas too)
>What evidence do you have to support this statement?
Just a personal perception that is likely entirely wrong.
>If you think *I'm* a cheerleader, you're in for a very rude awakening.
I've dealt with bigoted, zeal-filled, indoctrinated amateur Microsoft evangelists for years (the *worst* are the ones who desperately want to work for Microsoft, hoping that fighting the "good fight" will earn them some attention).
Sadly there was a period in my career when I was a Microsoft apologist, thinking it was necessary for me to "set things straight" on sites like Slashdot.
If anything the number of Microsoft cheerleaders has seen a dramatic slide over the past several years, and I think it has to do with Microsoft becoming less interesting as a prospective employer.
Dennis Forbes on May 10, 2007 11:02 AM@jaynicks: Your link to Grygus doesn't help your argument, I'm afraid. Anyone who thinks (from the bottom of the page you linked):
"A major part of the .Net strategy is to centralize the software you use and your own business and personal data on Microsoft owned serves so they can charge you a monthly fee for access to your own stuff. Access will be, of course, by Windows PCs and Windows mobile devices, only through Microsoft's .Net servers and only by using Microsoft .Net software, which you rent by the month. Fall behind on your .Net payments and you are out of business."
can't really be taken seriously IMO. I don't see MS trying to get me to give them my business or personal data and pay them a monthly fee; it just hasn't happened. And, since the linked page was from 6 years ago, surely it should have by now... Shouldn't it?
@H. Eriksson: Apple being the ruler of the world would be just as bad, if not worse. Apple is it's own monopoly in its' own right. Can you buy OS X to run on hardware that isn't Apple's? Can you buy Apple computers with Windows Vista pre-installed?
@dennis parrott: "Delayed write failed" means that you got bit by disk write caching. It's usually caused by not properly stopping the USB device (safely removing it); data in the cache for latter writing can't be written if the device is no longer available. To fix it, you can either *always* use "Safely remove hardware" before removing the drive, or disable caching for that drive.
@Jeff Atwood: I agree with you for the most part. A couple of disagreements, though.
The list of *have to install* items is exaggerated. You just need the .NET 2.0 and 3.0 stuff and Notepad, technically. Because you *choose* to install all the other cruft doesn't mean it's *required*. Hell, with a little work you can use Borland Developer Studio as your IDE.
I think Open Source is fantastic. I use various OS libraries and tools, and always donate something if there is a way to do so and I find the project useful. However, I'm firmly in the MS camp as far as operating systems go. Why? Because that's how I earn a living. I write Win32 applications for PC users, both business and consumer. When 94% of the desktop software market belongs to Windows, I'm writing software for Windows. I don't use MS's IDE's, because Delphi is 1000 times better. I can do a full build of a 1M LOC project and be running it in the time VS takes to change the cursor to an hourglass. I have all of the code completion stuff (Code Insight), all of the code template stuff, and all of the other developer productivity features too.
I spent about a year learning Linux a while ago, thinking it would be pretty cool. It was, but it'll never be a big desktop OS for consumers. It's too hard to remember all of the different places you have to go to change configuration stuff, and KDE/Gnome are still waaaay behind XP or Vista. (An example? I have a widescreen Gateway laptop, and the screen resolution is 1366 x 800. Try getting X support for that, especially "out of the box", so to speak. <g>) But I don't belittle the people who choose to run Linux instead; more power to them. I just don't have any reason to join them.
Apple has the same problem. They don't have any market share, despite all of the amazingly funny ads they've been running lately. (My favorite recently is the relatively new "Mac Geek" one, BTW.) And as I mentioned above, they're basically their own type of monopoly, albeit considerably smaller.
KenW on May 10, 2007 11:14 AM"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"
Nice quote. I'd like to see you back that up with some real evidence.
Anyway a look at history will help some here. If Microsoft hadn't won the hardware wars with software, we'd be much worse off in my opinion. Back in the early days of PCs, circa 1982-1984, you'd walk into a software store, Babbage's was the biggie then, and you'd find software for 10 or so different hardware platforms. There was nothing worse than having a TI 99/4A and wishing you could play a game that was on the Commodore 64 or one that was on the Apple IIe or one that was on the Atari 400 or one that was on the Amiga...ad nauseum.
A lot of you are too young to remember those days. Having many different platforms with different software SUCKED! Nothing written for one system would run on a different one. That led to endless confusion and stifled the market. Along about that time, cloned IBM PC hardware was starting to show up. Microsoft realizing that this could be a major new market released it's own version of PC-DOS called MS-DOS that would work on not only the IBM PC's but the clones as well.
The availability of cheap clone hardware and MS-DOS lead to the end of the hardware wars by the late 1980's. By then you pretty much had PC clones and Macs and that was it. When you walked into a computer store there was much less confusion. You in essence had only two choices to worry about. PC or Mac and PC was about 90% of what people wanted. This meant that PC's were the de facto standard. And standards are good things right? Heck yeah they are, we could all get on with business and not worry about compatibility.
It was this worldwide computing standard running Microsoft software that has created so many jobs and wealth that the entire world has benefited from over the last 25 years. So in that way I say bravo to Microsoft. That doesn't in any way mean Microsoft is a good company, but the benefit of having a standard computing platform is undeniable.
Open source efforts and internet operating systems may eventually make Microsoft a footnote in history. But at least give them credit for bringing us all together and giving us the chance to make that choice in the first place.
Kuerwen on May 10, 2007 11:17 AM>There was nothing worse than having a TI 99/4A and wishing you could play a game that was on the Commodore 64 or one that was on the Apple IIe or one that was on the Atari 400 or one that was on the Amiga...ad nauseum.
You have an interesting memory of that time. I remember a period of incredible innovation and progress, where innovation could be rewarded and was much more difficult to stomp out. The Amiga was a culmination of that innovation, featuring software and hardware innovations that we didn't see on the PC side about 9 years later.
We don't know how the world would have turned out if Microsoft wasn't there to "unite" us, and I don't think I'll be sending a thank-you note to Microsoft for their selfless efforts.
Dennis Forbes on May 10, 2007 11:30 AM@Dennis Forbes
So you are saying there is no more innovation and creativity anymore? No more progress? Surely you jest?
Kuerwen on May 10, 2007 11:40 AM>So you are saying there is no more innovation and creativity anymore?
I wouldn't go nearly that far, but it definitely isn't as vibrant and alive.
Perhaps it's just clouded reminiscing, but I look back at Compute! and similar magazines from the mid-80s, and there was just such activity and excitement. The number of successful uISVs was enormous, and everyone had a real shot at taking on the big boys.
Dennis Forbes on May 10, 2007 11:50 AMYeah I agree it was an exciting time. I was no fan of IBM or Microsoft at the time. I guess you could say I was a zealot for Mac and Amiga even though the term wasn't really used. I could not for the life of me figure out why everyone couldn't see these machines were so much better than the PC and DOS.
The only point I was trying to make was that regardless of the intentions of Microsoft, I think society and technology in general benefited from the unity they provided...er...sold to us.
Kuerwen on May 10, 2007 12:00 PMWhile I agree that MS pumps out new IDE's and versions of the framework at a break neck pace, I don't feel that it's necessary to convert my code everytime a new version of the framework is rolled out. Perhaps web developers face challenges there that I don't on the desktop, I don't know. But I can you that I currently support apps in VB6 , .Net 1.0, 1.1 and 2.0 and I don't have a problem with that.
I guess I just wonder why you say something like "Sometimes, you wonder if choosing an environment where things change more slowly isn't a better long term evolutionary decision."
The VB6 environment has been static for 8 years. So far there's no reason to change other than the fact that you could do things better in .Net 2.0.
Jimbo on May 10, 2007 12:01 PMI think that jaynicks hit an important point: this isn't a healthy industry right now. Microsoft seem want to dominate everything they can (try thinking of a major IT vendor that they *aren't* now competing against), and they often seem to be more about squeezing customers or putting others out of business with lower cost clone products, rather than being innovative or useful to their customers. It's unhealthy and has had weird effects, including pushing lots of disparate groups and companies towards the opposite corner. To be pro-Microsoft these days I think that you have to close your eyes to a lot of unpleasant technical and ethical issues.
I've used Microsoft products my entire life, and much of my work still involves Microsoft stuff like Windows and .NET, but I've found the air a lot cleaner on the Linux side, so that's where I now spend as much my time as I can. It's not about the rate of change (Open Source moves faster, especially at the leading edge), but about being able to be enjoy what I do, without the screw-or-be-screwed attitude that Microsoft senior management seem to have.
Stuart Ellis on May 10, 2007 12:05 PM"Can you buy OS X to run on hardware that isn't Apple's? "
Why in the heck would you want to? We've seen the kind of stability that leads to with Microsoft Windows for the past 10 years. Do you want to be able to run Tivo on your toaster? Do you want to upgrade your cars computer? Why wouldn't you want to run an OS that is tuned to run on the hardware?
I'd love to see an MS branded laptop or desktop, provided they went for quality manufacturers and not "Uncle bobs NIC-a-torium" or "Hard-drives-r-Us". Look at the Xbox and Xbox 360 as examples of what you can do with MS software when they control the entire machine. The graphics on the 360 blow away any Pc except the ones running $700 pro graphics cards.
Scott on May 10, 2007 12:19 PM"Sometimes, you wonder if choosing an environment where things change more slowly isn't a better long term evolutionary decision."
I'm glad I scanned through the comments first. Martijn Fassen's comment largely encapsulates what I was going to say, so I'll just add this little bit:
Much of the rapid development in the open-source world is in optional frameworks, libraries, and so on. Rarely does anything spring forth fully formed, and even when they seem to, they usually have been percolating in obscurity for a while. The deeper you go down the stack, the more slowly things change, with loose coupling between layers usually being a design goal and the primary basis for backward and forward compatibility (ie. you can usually replace a layer without disrupting things above or below).
Microsoft's stack, by contrast, is tightly integrated for both good and ill, with *binary* compatibility being the primary basis for backward compatibility. This makes big-bang releases inevitable, as well as forced migration off of technologies 2-3 releases ago.
This means that in Open Source, while you are usually not forced to adopt anything, and old code will stay useful for a long time, if you do want to remain current, there is always something new to learn. Change is constant.
Whereas, with Microsoft, you only need to change your stack every few years, but you *must* change your stack in lockstep (relatively speaking) with the rest of the industry, and much of your existing investment in tools and code will be obsoleted. Change is episodic.
Michael R. Bernstein on May 10, 2007 12:29 PMYou can slice and dice Microsoft any way you like. The lets be friends approach has been tried and it failed. The Borgrosoft either assimilates or renders irrelevant all who snuggle up to it. Not out of mallace (at least not that we can readily tell) but simply out of the volume of stuff it spews.
Borland is the best example of a little guy with great tools who have snuggled up to MS. The Delphi language has been a huge technical marvel for decades. You dont have to look far to see what happened. Microsoft hired a new architect for Dot Net, C# and company. Guess who? The guy who invented Delphi! So for those who love the IDE, and the C# language, and all the stuff that makes you want your Microsoft, say Thanks Borland.
Michael Rempel on May 10, 2007 12:51 PMYa 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.
Best regards,
Igor
"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.
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.
http://www.tbray.org/ongoing/When/200x/2003/07/12/WebsThePlace
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.
Peter on May 10, 2007 3:27 PMJeff,
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.
Steve Trefethen on May 10, 2007 4:37 PMEven 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.
John Baughman on May 10, 2007 4:40 PMI 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.
scott hodson on May 10, 2007 5:30 PMAfter nearly 5 years of ASP.NET, C# etc I'm now working full time as a Ruby on Rails dev and I couldn't be happier. While I really have no problem with the .NET framework itself or even Microsoft (other than its questionable legal hijinx) ASP.NET is in my eyes a piece of software that completely misses the point. It seriously feels like the MSN (circa 1995) of Web frameworks. It's great for people who want the web to feel like windows but does its best to shut out people who want the web to feel like the web. (or develop like the web)
This along with Microsoft's complete "if it wasn't built here, it doesn't exist" stance on dev. technologies is why people have such strong views about MS, and even MS based dev shops. MSBuild really shouldn't even exist, or their source control, or J#.NET. There were technologies that existed before these that were great and the MS take on them tends to be a rip off at best contributing very little new. Why not just contribute to the existing thing, make it better, and use it? (Ala Adobe, Apple, Google, Yahoo!, IBM, etc)
Even this wouldn't be so bad except that dev shops tend to buy into this attitude with: "If it doesn't come from MS it doesn't exist", or "Why build it if we can buy it?" Sure this makes sense with some things but AJAX libraries in ASP.NET? People build this stuff by hand every day, it's not that out there. In my time at MS shops I spent more time learning new Plugins, Libraries, and Frameworks we purchased than I did actual programming. It was completely ridiculous.
All that said, I really liked C#, VS.NET, and had the opportunity to work with some great programmers. It's just that in the end the prevailing attitudes of the ASP.NET community really turned me off as a developer. It may be where the money is, but it's not where the innovation is - most of the devs seem to be waiting for MS to move first on that one.
Brandon Ferguson on May 10, 2007 8:19 PM"As for compiling, check out MSBuild. It totally rocks, and is highly extensible."
*cough*NAnt*cough*
Scott on May 10, 2007 9:53 PMI don't understand how you can see a bloated operating system like Microsoft Windows <insert version here> in any way of having better tools (for development of all things!) over free and open source operating systems which can run both Microsoft's bloatware and BSD/GNU products.
Then again, you have been known to be a shill for Microsoft, as well as 90% of your "readership."
opensoresfreak on May 10, 2007 9:56 PMI can name a startup that uses MS tech. SMS.ac (http://www.sms.ac) is making a killing with text messaging. It is not just hype and dreams either, they are actually making money.
Jonathan Allen on May 10, 2007 10:22 PMYou make a valid point that I fully support. The two camps have a lot to learn from each other, brother. And if, as professionals, we're to select the best tool for the job then we should put on our level-heads and make the appropriate choices.
I actually went the other way to Mike Gunderloy. From open-source tools to Microsoft. I did this not because I wanted to but a family move necessitated it. I had no fear of the transition because, like you, I started on Microsoft BASIC and VB. I wouldn't say it was like coming home though. Far from it. But there are some things that Microsoft does fantastically well. It's clear that a lot of thought and testing goes into the products they create. And most importantly how those things might integrate/inter-operate. Hats off to them for that because sometimes it feels like open-source has a much harder task of this. Being a very much more disparate and disconnected development organism than Microsoft.
The thing that I can't get my head around about Microsoft is the almost dizzying amount of tools and techniques available. Some of them are clearly complementary but some seem competing. I'm guessing that I'm observing years of evolution/purchasing compressed into a single tool set though. This means I'm seeing all the evolutionary dead-ends as indistinguishable from the alive ones. Now if Microsoft could only indicate which ones are effectively abandon-ware (this is obvious in open-source) my life/job would be a lot easier.
Having said all of that, when I program in my spare time I do it using open-source tools. They're cheaper and I feel more like I'm in control of the project. And isn't that the point of software? It's meant to make the user feel like he's in control.
Steve on May 10, 2007 10:53 PMI have been a pro-Free Software guy for a long time. I got started with it in 1993. Before that I was a DOS/Windows user. I have come to love the community. It is so easy to find passionate people who really care about the code and their craft.
That is one of the things I don't understand about the Microsoft crowd: No passion. It is very rare to meet a Microsoft developer who is passionate about his tools. They are all just tools. A means to an end. A pay check and something to do between 9am and 5pm.
In the free software world we have epic debates over Perl vs Python or vi vs emacs or Linux vs BSD or Gnome vs KDE or..or..or..ad infinitum. No shortage of passion or causes here. And the people with passion really know their stuff all the way down to the nitty gritty details of the code. But I have never come across two windows guys in a bar passionately extolling the virtues of their particular choices as I have with free software guys.
Why? Is it because MS just doesn't offer choices? Is it because there is something soul-sucking about programming with MS tools? I have been going to Linux User Group meetings for years and they are great fun. Where is the local Windows user group meeting? I'm not aware that there is one. I just did some google searching. There was a Windows 2003 meeting last April 19th. Sponsored by...Microsoft. At a Microsoft office here in town. Hmm...hardly grassroots. There is a mailing list...with hardly a fraction of the activity of the totally grassroots Linux user group mailing list. And 15 people registered on their website. There are 101 people registered on the LUG's site.
There are a lot of people who code on the Windows platform. So why are they generally so uninteresting?
Tracy R Reed on May 10, 2007 11:37 PMI find it pretty sad how defensive/angered some of you get, its just software not you're life. Use the tool, don't let it use you.
Mike on May 10, 2007 11:37 PM@Tracy R Reed
"...debates over Perl vs Python..."
Debate is good but the constant me vs them is very annoying. I dont care what your tool/language can do or where you got it from, or how much better/moral you think it is. I more interested it what you wrote with it.
"passionately extolling"
I almost spit my coffe out while reading that, you take it way to seriously. I have talked about non-'free' eg public domain(the only truly free software), but software is not a life style, it can be part of one, but i would not expect to see any extolling. I just don't understand your method of thinking.
@Kuerwen: Are you really arguing that competition is bad? I think all Windows users should be very, very happy that Macs and Linux exist to provide at least some small amount of competition to Microsoft. I loved the era of Amigas and Ataris and Macs. That's when Computers really made progress.
LKM on May 11, 2007 12:59 AMHey Jeff, You're my hero for saying something which I completely believe in. There are too many fanboys in both camps and for someone to say, hey im Neutral and proud of it, is a great thing! Good on ya.
JimmyD on May 11, 2007 2:05 AMI can understand Microsoft but I expect and want more and more (read better) things. It's 2007 now and the backward compatibility is a good thing. But how compatibly are windows anyway? Are they dragging some dead horses? The way or technology to solve it can be different. Apple has often resortet to emulators for each major change and that I think is a very elegant solution.
What is "C:" anyway?
I belive it started as a way to access disks in CP/M ano 1976, then copied in DOS...and is still a fundamental disk mounting strategy in windows, and I belive in Vista too.
But I can imagine microsoft and others have the same problem between single problem projects and general problem projects that I often see. I often see that one only work on single problem projects that are "defined" by some requirement/goal and a generel problem (or improvments) are really never because there are now orders/projects planed for them. So one wait until there is a breakdown in design due to too many minor changes that has moved the "center of gravity" that was designed in the first place.
Edward on May 11, 2007 3:35 AMI can't afford to upgrade to the latest version of Visual Studio every couple of years at a cost of thousands of pounds every time - that money typically needs to go on other things like food and the mortgage. When you get into free tools you find things like Emacs (which gets exponentially more powerful the more you learn to use it) don't need to change every time you upgrade some part of your kit, they just keep on working like they always did; maybe you need to update a couple of bindings to keep up with changes but it's not a mammoth task and it's not expensive.
If I was working for someone who was buying all my tools for me, that's maybe another matter, but working for me it's simple economics that when there are tools out there like Eclipse and Emacs and the code they produce is no different in outcome to Visual Studio it's just not worth the expense.
Just like the guy a few posts back I spent years with ASP.Net, battling to make sites that were standards-compliant and accessible, but currently I'm working with RoR and enjoying it for it's simple, no-nonsense approach.
Ben Moxon on May 11, 2007 3:55 AMScott: NaNt is good too. I'm not saying that it isn't. But Microsoft is competing with open source with MSBuild. The cleanest most simplest way is to use what is already there. MSBuild. Why install something else? (See Jeff's new dev machine setup)
MSBuild can take a solution file and make a project file out of it, then compile it! All with a simple command.
For a decent take on MSBuild, check out Sayed Hashimi's website: http://www.sedodream.com
In particular regarding solution files: http://www.sedodream.com/PermaLink,guid,2a926fd2-70ce-4b95-a489-2d6aa24bc7da.aspx
But I didn't want to go with a third party tool to wrap around the .NET framework when the framework basically had Nant, I went with straight MSBuild with custom tasks that I created. Several of which handle encryption of web.config files during the build, and there are several that are already out there that handle VSS, SVN, CVS, IIS, ASP.NET, XML and much more. (http://msbuildtasks.tigris.org/ - Open source by the way...)
Personally, when it comes to unit testing I like NUnit better than the MS testing tools! It's something I'm comfortable with. That doesn't mean I think MS has unit testing wrong.
It's still a matter of which tool works best for the job, and which one do you feel the most comfortable with. They are all still just tools, and they pretty much all accomplish the same thing. In reality, one isn't really any better than the other. Some maybe more performant based on coding practices, but they are all still the same in reality.
When you look at an OS or development environment and its tools, its all based on a comprehension level for the user. Which, as a developer, you are a user of those tools and the surrounding enviroment. Some people "get" Java, some "get" C++, some "get" VB, some "get" SmallTalk, some "get" [insert language here]. It goes on and on and on.
Everyone looks too hard at the language/OS/enviroment of their choice and begins to defend something that is a wrapper around the same thing everything else wraps around. A piece of electronic equipment that computes, stores, and displays information. Every language does the same thing. It computes, stores and displays data.
Remember, a Schwartz is still a Schwartz.
John Baughman on May 11, 2007 9:05 AMI'm starting to work more with OS X and Xcode. It's nice buying a machine and having the whole development environment on the disks with the computer (it's not installed by default, but it's there for free).
I found Textmate is also a great (and pretty cheap) editor. Add Eclipse for Java work and these tools provide a great development environment and the only cost was $49 for Textmate.
Simdude on May 11, 2007 10:07 AMI develop with microsoft tools but have an anti-microsoft bias. Why? Because much as we hear about how important developers are to microsoft, this is true only to a point. You pour your heart and soul into developing a useful application and if you are too successful you find that almost everyone is using it. But then microsoft notices the same thing. If it is used by everyone, shouldn't it be part of the core operating system? Or shouldn't microsoft get into that market? And you find your product/technology - perhaps one you were instrumental in developing - usurped. How can you feel good about working in that kind of eco-system?
Mitch Silverman on May 11, 2007 10:30 AM>>"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?"
It doesn't. I neither love, nor dislike MS products. A lot of them are very good and I use them frequently (Access, Word, Excel, etc.). I also do a lot of work in Oracle. In my day to day work life I frequently use a combination of Oracle and Microsoft technology together. I like Oracles database for large enterprise databases. I like MS's front-end tools A LOT better than Oracles. We often put a MS face (VB forms, ASP webs, etc.) to an Oracle rear-end. Works well here. Guess I'm the very definition of "middle ground".
HugoDataway on May 11, 2007 12:32 PMThanks to everyone who pointed out Python's IDE to me. I was pretty much exclusively a Linux (and other Unices) developer from 1995 to about 2003, but I've been mostly a .NET dev since, so I'm a bit out-of-date.
All I was saying is that I personally prefer the integration of Visual Studio 2005 to the Emacs/gcc/gdb/make/man toolset that I used to use, and have a hard time imagining willfully switching back. But that's just personal preference; arguing about the Microsoft development environment vs (anything else) is like arguing with someone over why they don't like asparagus.
Jesse on May 11, 2007 12:50 PMIn all the Microsoft bashing, I still haven't seen the most damning conviction mentioned -- they are convicted software pirates. Almost as bad as the monopolist conviction in the US. Fortunately for them, the conviction was handed down in the first week of September of 2001. It got kinda lost in the news of September 11. Can't find a link right now -- French court, imaging software....
Anonymous on May 11, 2007 2:34 PMI don't hate Microsoft. Most of their programs are excellent (Visual Studio, all the office programs, etc.). The only thing that annoys me is Windows. Microsoft makes most of their profit on office and other programs, not Windows. That provides little incentive to really put a lot of time and money into it. It also has stayed too backwards compatible over the years. That turns its code into a 3.2 GHz disastrous piece of spaghetti code. I find Win32 the most inefficient and time consuming thing to program. If it wasn't for .NET, I probably would have just given up on Windows development.
John Colanduoni on May 11, 2007 5:49 PMI like to post here to be enlightened by the wonderful readers here so once again, I'll ask a question:
When people are talking about the 'microsoft stack' and all of the tools that you're 'forced' to use to program software for windows, are they not considering things like cvs (I use tortoise but want to get vault), unit testing (NUnit), profiling (ANTS) and all of the libraries/tools around (for instance: all of the things that all of the codeproject.com newsletters try to sell you) to be non-microsoft; or at least not dev tools?
Steve on May 11, 2007 6:16 PMMike Gunderloy said:
"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."
So I scanned all of the posts over at your Fresh Cup site, Mike ... and I'm not really seeing much of the nuanced view. You basically state that you think MS is a threat, mention the ribbon example and in one case link to another site with a chat transcript about a more-complex .NET ... but I must have missed the real case about MS being a threat in the long term. Most of the Fresh Cup site is links, progress reports on your growing proficiency with the non-MS tools, or musings about business opportunities.
I'm not trying to be snarky here, or start an argumentative /.-like thread or anything. But I suspect there are a lot of people who'd like to know your 'nuanced view' and where it comes from.
Something to think about, if you find a few minutes to write in more depth.
JustSomeDude on May 11, 2007 7:04 PM>> 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.
I've seen the MS-only type a lot. In fact, I've just interviewed and rejected the application of a "senior" .NET developer because he does not know what NHibernate is. IMO, most developers who claim only MS stuffs are good or only non-MS stuffs are good are just making excuses for their inability and/or unwillingness to explore things beyond their comfortable technical zone. Either way, obviously not good developers.
Well said, I've thought similar things in the past but never read anyone to put it so well.
"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 "
And then your OS dies and you have to start all over again.
I"m SICK OF IT!! Open source, Open standards now!!
figgy on May 12, 2007 11:59 AMSure, programmers who use Microsoft tools are on "the same side", and there are even folks at Microsoft itself who are making positive contributions --- Jim Hugunin, Simon Peyton Jones, maybe Anders Hejlsberg. But Microsoft as a company is going out of its way to make software development difficult (by introducing deliberate incompatibilities) and legally risky (for example, with generalized threats of claims of infringement of unspecified patents, as in the Novell-Microsoft deal, or apparently with look-and-feel claims in this ribbon thing).
If you pledge allegiance to your craft of making software, then you are declaring your dedication to free software, by making it easier for everyone else to develop software. An alternative is to pledge allegiance to some particular vendor --- Sun, or Microsoft, or Cisco. But the principle of free software is all about allegiance to your craft, and not in some exclusive us-versus-them way --- it's about opening up the craft to everybody.
The reasons people are unhappy with Miguel include suspicion that he's trying to lure unsuspecting free-software developers into waters mined with Microsoft patents, and disagreement with GNOME's general anti-user-empowerment philosophy. For the most part, it's not that they think IDEs are evil or some crazy nonsense like that.
Kragen Sitaker on May 12, 2007 9:58 PM@David H
>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.
Exactly. I'm a soft development student in college; FOSS is my friend for a few reasons, but the price is the biggest.
Just last week I was down at the school store and I found out that I could get Microsoft Expression Studio for $100 (student price through school) when it goes for $600! I said, well, for $100 for the studio version I'll give it a shot.
If it were $600 for students as well, I'd only ever encounter it if my future employer was paying for it. I have an eating habit to support, not to mention a more important hardware habit!
Scott L on May 13, 2007 3:10 PMIt's just a matter of freedom...
Real _great_ developers are not generally against some platforms, they just use what is more comfortable for them.
So you cannot say for sure that Microsoft, or Sun Java or whatever you want is better then something else...
Personally I'm more comfortable, and quickly if I use vim, ruby and my Linux box.
You can use whatever you want, it's your freedom.
IMHO people that just speak bad about something they are not good developers or they are not at all and they have nothing to do then speaking bad about something.
The last paragraph is really inspiring. Thank you for your guidance.
curiousEngine on May 14, 2007 5:42 AMBravo, Mr. Atwood.
We're all presumably doing this software thing in order to create something of value, often to be used by "regular" people, most of whom don't give a whit about deep technology-industry issues.
I worked for years with Java, open source, and Web standards, then took a job doing C# and ASP.NET. My platform of choice at home is Mac OS X but at work I use Windows. There are a lot of smart people and good things happening in all of these areas, and it's fun for me to be involved a bit in each of them.
In the end, the whole point is to make software that gets things done in an effective, efficient, and pleasant way. All of the platform and technology concerns are real and valid, but it's always good to remember that results are ultimately what matter most.
John on May 14, 2007 8:41 AMI have felt the same pain on many occasions and thought the exact same thing. But ultimately I feel that it is the same as two carpenters arguing which brand of hammer is the best, an outsider would want to smack both of them in the head and tell them it doesn't matter.
Nostalgia for older systems is cool, but older systems were incredibly simple and a text editor and compiler was all that was needed to build anything. But the modern world is multi layered and involves servers spread across a company (or the planet) and the resultant complexity makes the job 100's of time more complex.
Using multiple tools allow you to mix and match pieces to achieve the best fit and I am trying to understand your argument regarding wanting fewer applications. Fewer applications = less choice and more lock-in to a technology doesn't it? I'd say if you could find one magic program to do everything for you, you would be locked into it forever.
Cost is not really an issue. You can download Express versions of MS software for free, and host it on a free .Net run able. The only thing you really have to buy is an operating system, which is certainly not going to break the bank.
Both sides have some pretty good arguments and could learn from each other. From my experience a great developer is a great developer, and can be equally great using MS or open source, they can create open source using MS tools and technologies. It's a mindset more than a rule.
I have almost 30 years experience in the industry now and I have gripes about both sides of things. I fully agree with Jeff's assertments about Bill Gates and company but I have an equal set of complaints about the other side of the fence.
I have found that when my client doesn't want to pay a dime for the OS, development tools, dbms, or source code, then invariably he doesn't want to pay ME anything either. And being nickeled and dimed down to nothing makes it hard to feed the family.
A lack of a shrink wrap standard makes it harder to install/setup new software. You might argue it’s not that hard, but my clients (and students) are not capable of doing it on their own without ALOT of hand holding. Again, its easy to discount the time you spent learning about graphics drivers and package managers and think its is easy to do, but the learning curver is higher, much higher with linux. The old saying that any idiot can install a package under Windows has some merit.
I worked with a package called GAIM a year ago and the experience was less than positive. It consisted of hacks on top of hacks and stitched together with hacks and wrapped into a massive hack. Eventually we got something working, but I still feel we would have been better off writing the code from scratch. After about 6 open source projects I still haven't found any source that I would proudly show my friends or co-workers, but I imagine there is some out there.
Support can be nasty too. When deploying an early Java program using Swing we ended up with errors and I proceded to Sun's site and found 400 other developers experiencing the exact same problem as me and could not find a single answer. 40 hours later I determined I had to instantiate an empty JavaBeanInfo class in the applet to make the web browser happy (I will never, ever forget this) because Sun and Microsoft were fighting over some obscure API item. What frosted me the most was that Sun knew everything about this problem and refused to document it or post the solution to screw over any of the devs using IE and force them to use Netscape.
A co-worker convinced management to move to a php/java/linux solution for a particular project and after a power outage we discovered that the linux server hard drive had scrambled itself and we ended up losing our source code versioning system/ code repository. Yes it was backed up, but it took the techs 4 days to get everything installed/running again...
So in the end I feel like you might be suffering from the grass is greener syndrome and that the developer is going to have problems no matter what side of the fence you are on. And that a good developer will survive in spite of the difficulties and produce good software on either platform.
David E. on May 14, 2007 1:37 PMThe bottom line is this: Microsoft can go bankrupt or be split up.
Open Source can't.
If an organisation of developers gets attacked, the source and tools (which are freely available) coalesce around another group (or the same group wearing new shirts).
This has happened many times beforehand, and I see no reason why it shouldn't keep right on happening.
There's also control. Open Source can fork, and does, whereas if a Microsoft manager makes a dud decision, you're stuck with it. It works the same in politics, for example, The Inquisition versus the Reformers.
Freedom comes in many forms.
Leon on May 14, 2007 4:25 PMDavid E, on being "nickel and dimed" to death, I've found that thbis can work for you - or at least, it works for me.
I present two situations, one in which we install MS-only, and another which is FOSS based. The licence costs kill any decent-sized (or even relatively small) network off relatively quickly, from the MS perspective.
That saddens the customer.
Then we point out that if they install FOSS, they can spend a small fraction of the saved $$$ on customising it, better hardware, better comms, and so on. Or in other words, they spend a small fraction of the MS rip on *me* - a situation which I find quite comforting.
WRT licence costs, have a ghasp at the difference in $$$ between supporting a website on Win2k3+IIS+SQL_Server (with all of the connector and/or per-seat licence fees) vs your typical $50 (or free) Linux distro+Apache+PostgreSQL. Even MySQL, at full prices, is an absolute steal in comparison to SQL_Server.
Leon on May 14, 2007 4:35 PM"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? ..."
I've always felt that Windows is a perfectly good platform from which to ssh into a Linux system and get some real work done.
More seriously, I've lately discovered the NX protocol for X-Windows compression and the wonderful free client from nomachine.com. That, coupled with moving my email to KMail on my virtual desktop, was all that was necessary for me to overcome a rather strong Microsoft addiction.
Rich on May 14, 2007 7:48 PM> 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.
Perhaps you could have a little talk with Bill and Steve about their attitudes towards the Free/Open Source Software community. From the early days, these two have done nothing but attack and belittle our community. And then people wonder why we have an attitude toward Microsoft. When I see Steve Ballmer giving our community the respect we deserve, you'll have my ear on this point. As long as he and Microsoft's top management continue to treat our community in a hostile manner, my teeth remain clinched, and my sleeves rolled up.
Whatever Microsoft's employees may be able to accomplish with the FOSS community, they will always have their upper management screwing up warm and fuzzy fireside chats.
And yes, I started out with DOS/Windows, and moved to GNU/Linux & FOSS when I ran into glitches and licensing issues with the Windows platform. Suffice it to say, I don't like spending a week looking through the registry for a reference to some driver that was supposed to be un-installed. Nor do I care to be forced into a software upgrade by a proprietary company. They weren't Microsoft, but I had to leave the Windows platform to find a solution to my problem.
My memories of the Microsoft world are neither warm nor fuzzy, and Microsoft's management doesn't help that. Still, when I see Steve showing a genuine willingness to cooperate with our community, as opposed to being compelled by law to behave reasonably, I'll have a change of heart.
D.C. Parris
Editor-in-Chief
LXer - Linux News
> Jon H on May 9, 2007 06:28 PM
> "I haven't heard of an IDE better than Visual Studio."
The Zeus IDE: http://www.zeusedit.com
CodeCutter on May 14, 2007 8:38 PMI've taken a few stabs at Microsoft over the years, but as someone who codes in Visual Studio for a living and still enjoys using vim from time to time I've often told people "use whatever works". With the amount of emulators available and the varying ways different systems can integrate with each other I really don't see the point of politics. Mono itself is a good example of the direction we should be going in. The more integration the better in my opinion.
psyphen on May 15, 2007 12:44 AMI was a microsoft fan until about 3 years ago. I agree that today's world is much better than if Apple had won out in the 1980's; as much as open-sourcers complain of MS' vendor lock-in strategies, Apple has forgotten more about vendor lock-in than MS will ever learn. However, XP effectively kicked me out. After a year of trying to work with it's temperamantal hardware support, obliviousness to my clicks in the neverending stream of 'do not bother me with this again' buttons, and constant crashes, I dropped Windows for Linux. I cut my teeth on MS QuickC, and I was a MS fan from Dos 2.0 through Windows 98. With four kids and a full time job, though, I decided I needed something that did not require so much constant maintenance. If you're happy with Windows, good for you, but I'm glad we now have choices.
mcinsand
mcinsand on May 16, 2007 5:03 AMMany anti-Open Source (anti-OS) and anti-Microsoft (anti-MS) guys didn't dip their foot deep enough into the other platform. You could say why the other platform/application sucks. But do you really think a technology that contributed by hundreds of engineers is really worthless? I don't think so, everyone could always learn new things from the worst application, right?
The separation between OS and Microsoft guys are too far right now. OS hater say Microsoft products give them better job security and money to support family, and MS hater say OS give them more freedom and free software.
I guess most of the people who read Atwood's blog would be geeks. So don't just blindly blame MS is stopping the world to go ahead, or OS is violating laws. Even they are proved, geeks like us aren't care much about it. We care about technology.
We are professional and not politician. I do believe every engineers in computer industry is important to bring the world ahead. So, can we just focus just on technology and not money/business/freedom/family/whatever? Can we just do a very fair technology-wise comparisons amongst PHP/JSP/ASP/ASP.NET...? Can we redirect this blame war to focus purely on technologies?
To move the world ahead, we need to unite together and make the best technology better.
"We are allies, not enemies"
Compulim on May 16, 2007 2:16 PMI didn't have the patience to wade through all the comments above, but one thing I find very frustrating as a Microsoft employee is that I am not *allowed* to familiarize myself with what the open-source community is doing. Sure, I can go look at their screenshots - but explore the source code? I would be tainted, unable to contribute to Microsoft products any more. The wonderful world of viral licenses. Sure, maybe *some* of the open source code is OK to look at, but who has the time to read the license and follow up with the legal department to be sure?
I feel the same about patents - I can't look at them, can't ask questions about them, even though they obviously represent a substantial element of value in my profession of choice.
Bruce on May 16, 2007 2:29 PMJeff,
I completely agree with your article. After reading some of the posts, I all the more think that both camps are often self-righteous in their views.
Concerning the past decisions by Microsoft, Sun, etc., in a perfect world there would be no unethical outcomes, by any company. Concerning being religious, the Christian scriptures states that, "all have sinned." (Romans 3:23) That includes me.
Mark on May 17, 2007 12:41 PMGood article, I agree with you completely about the zealots on both sides of the divide. I've worked as a software consultant (in a coding capacity) my day job focuses on Microsoft technology (initially VB but mainly C# now) but I'll typically be using/wrting in Java and using a variety of Open Source and propriety software that solves the problems I have. I guess it all comes down to "The right tool for the job"
David Hayes on May 17, 2007 1:06 PM"Can you even name any startups that use Microsoft development tools?"
Yup. CubicleSoft. My company.
VerifyMyPC, MyUpdate Toolkit, and my latest product in the pipeline. Should become available in a week or two.
>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.
>
>
>Chip on May 9, 2007 03:39 PM
Just to note that C# is a ECMA standard and is not owned by anyone like Visual Basic. Miguel de Icaza used this standard to write MONO
Like to add that Miguel de Icaza, IMO, is a great programmer to tackle this and should be noted for his work.
Paul on May 18, 2007 6:01 AMI have to comment on those who think the Mono project is 'bad' or that Miguel is being misled somehow - Mono is a very important part of my current development. I'm building a MUD that I compile using VS2k5 that works, out of the box, on both Mono and Windows.
I started as a PHP\MySQL guy because of the expense, but nowadays that isn't even an excuse. .NET is incredible for me, and thanks to Mono, I can now concentrate on development rather than separating out pieces of my code that i'll need to customize for each platform. Mono might not be an MS initiative, but they had the foresight to make it possible for someone to pick that up. Could you do that with Java before? Probably, but it was never as accesible - which leads me to my final point.
I don't care, either way, about open source or MS only, but it comes down to the simple fact that Open Source folk are living in a bit of a dream world. In theory I like the way Open Source works. I've beenfitted, and learned, a tremendous amount from it - however for it to become the standard there would have to be largescale SOCIETAL changes. Forget companies, forget platforms, think about the end user. People don't want to have to stop and learn about something in order to use it.
I'm a developer, and consider myself a fairly intelligent individual, but the thing that constantly puts me off of, say, Linux, is that it's so alien. If it were just a difference of style it would be one thing, but its more than that - you have to *know* what the hell you're doing to really get the most out of the platform. Someone said that things might maybe change when the younger crowd came into 'power' but the reality is that it would still be only for business.
Lets face it, open source is for geeks and only for geeks. Normal users vastly outnumber us and Microsoft\Apple are the answer for normal people. Normal users don't want to have to pick between dozens of open source, compatible, pieces of softare - they want to look in one place and get that.
I'm almost hoping that one day Linux and open source do take center stage, i'd love to see how these developers plan to eat and feed their families. I'd love to see how these developers deal with the fact that others might be using their code to save themselves a bunch of time and make a bunch of money.
Vassi on May 18, 2007 9:53 AMMost software developers and users are neither Microsoft lovers or haters. They don't care as long as the software/technology is useful to them. It's just that those in the extreme (Microsoft lovers or haters) are generally more vocal and we hence notice their sentiment more.
Mooky on May 21, 2007 4:57 PMThe vast majority of developpers I know are not zealots, far from it. They stick to what they learned in school, and don't seek to know other stuff. It's simply a job for them and they don't really care about the origin of the tools. Zealots, on the other hand, from either camp, are far more verbose, they want to convince. I find both attitudes sad. I do care about the tools I use, and am always looking out for new ideas, products, concepts, etc and I don't care if they are from Ms or open source or from the Apple world or BSD, or Unix, etc. It is, for me, the best way of improvement, and even after 15 years in the field, there is no greater pleasure for me than when I stumble in awe on a new idea, a nifty hack or cool piece of soft.
alan furia on May 24, 2007 7:03 AMYes, we are sharecroppers (thanks Peter). Microsoft is a business and it's a question of money: if we want to keep using MS software, someone (our companies or clients) will have to pay MS some part of the IT budget instead of paying us. Then again, MS is very good at getting licenses for their software to make business sense, although I've never had a job where we aren't behind the curve in terms of latest MS versions at least partly for financial reasons (and supplemented our MS "stack" with open-source tools). IBM is bullish on open source because it can use the fruits of its open source efforts without licensing anything. Most interesting to me now is the way .NET is converging with open-souce, dynamic languages like Python and what effect this will have on the marketplace.
Marc on June 4, 2007 12:19 PMMicrosoft may not be the best solution around, but, they are not the worst either. For the last 10 years I have been listening to people complain about Microsoft. I have no love for microsoft one way or the other, however, (for the most part) when I use a Microsoft product it works. I don't have to spend a lot of time tweaking it or getting it to work well with other Microsoft programs. The stuff just works well out of the box. Are there better products out there...of course there are. Will I check them out...of course I will. I may even add them to my toolkit of products that help me get the job done. I get paid for results, not because I use one technology over another. I say use whatever product helps you get the job done quickly and correctly.
Scott on June 5, 2007 4:29 AMI think I'll still use Microsoft Tech for Games
Luna on June 5, 2007 8:07 AMHow many people on this thread have a shopping list of programming languages that they've learned over the years? How many of those languages are based on, subsets of or share concepts with each other?
I can't think of time where I have programmed the same langauge in the same way for the same purpose for a prolonged period of time.
The world evolves and so do the people, companies rise and fall, concepts and methodologies come and go and stay in and out of vogue.
If food, family and survival are your reasons for staying or going with a platform then you've got greater problems. If your choice of platform is because it's fashionable and gives logo's to your tag you have another set of issues. Maybe your the kind that likes to stick it to the 'man' -- well good luck in the battle, your fighting for what?
Programmers are problem solvers that use technology as the answer.
The red hammer works great in one scenario and the blue one works well in another. Because the blue works doesn't mean your locked into a future of blue handled tools. If someone asks you to make something only using the red tools (because thats all they have) then you craft your wares using those items.
If you're good at programming, then you can switch back and forth and learn new things as you need them. The more diverse expierence you have the better you get and it makes it easier to adapt to new things.
It's convenient to pick a side as it limits the choices and makes your life easier. If your incapable of seeing the 'other' side then you should turn around and get back to work, your wasting everyone's time.
Wolfgang on June 7, 2007 11:37 AMI've been developing software for various Microsoft platforms since Windows 3.1 (Win16). Back then I primarily programmed in C and transitioned to C++ after a couple years. I've dabbled in Java but once the .NET Framework came out, I found very little use for it. Over the last few years I've mainly been developing integration services, frameworks, and tools using Microsoft tools and products. Overall, Microsoft is a fantastic company when it comes to supporting developers. MSDN is a fantastic resource and is overflowing with great and, admittedly, sometimes not-so-great, information, tools, free software, guidelines & best practices, docs, etc.
This article states that it is becoming increasingly complex to develop with Microsoft products. The following list is provided as an example of developing against .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
If we clean up that list a bit to represent what the full release of "Orcas" will ship with, the list looks more like:
Windows Vista
Visual Studio 2008
ASP.NET 2.0 AJAX Extensions (might be included in .NET 3.5?)
It is also interesting to note that you don't need to develop under Vista to take advantage of interesting .NET 3.0 functionality, namely WCF and WF. You can also develop against the .NET 3.0 Framework on WinXP SP2 and Windows 2003 using VS2005 w/SP1 & WCF/WF extensions add-on.
If I want to develop in Java, I have to install:
Linux/Windows/whatever
NetBeans or Eclipse
Java SE and/or Java EE
Apache (and Axis 1.4)
JCA extensions/updates
etc.
Developing against the .NET Framework is no more difficult or complex than developing against the Java Framework (and supporting SDKs.) If anything, I find that Microsoft has done a fantastic job of clearly organizing and documenting the various frameworks that they provide. I find the Java world very convoluted because you have a plethora of open source libraries that are poorly documented (Javadocs that just detail method signatures and class hierarchies are weak excuses for documentation), poorly supported, usually not vigorously tested, and usually quite buggy.
Personally, I like to use whatever products allow me to be the most efficient and create the best solutions for my clients. Microsoft tools allow me to do that. What would take me 5 lines of code in C#/.NET might take me 15-30 lines in Java, three 3rd party supporting libraries, and a boat load of configuration headaches. With Microsoft's recent push towards interoperability and open standards (WS-*, SAML, etc), things are just getting better and better for MS developers. Microsoft's latest frameworks - WCF, WPF, and WF - are incredibly useful, well architected, and well documented/supported.
I've got nothing against the open source community or Java, but until I see a real reason to switch, I'll stick with my efficient, well documented, well supported MS tools. While they might not be perfect, they are certainly much better than the alternative.
Anyone remember Netscape? I wouldn't count Microsoft out. Microsoft has always provided great support to developers. This is arguably their claim to fame. These days, however, that isn't enough. Microsoft needs to start embracing and promoting better design and user experiences in the MS community. There are new shops using Microsoft's latest frameworks. As Joel points out, these are extremely well thought out and documented. Some of the most recent WPF design and development coming out of the next generation software agencies is proof there is still life. Take a look at the New York Times WPF reader or Nostalgia from thirteen23. Never say never.
Jake on September 1, 2007 4:49 PMAfter being a Borland programmer for years and switching to the MS environment, I have issues also. Everyone wants MS stuff, but I can't see past the bugs. I mean, I have never had the IDE crash or destroy my code using borland tools, but constantly have problems with the MS IDE. I have lost hours of work...and it is just not on a single machine. Stability is my issue, of the IDE and the stack. For those that have to support the system, a question for you...what do you need to do when one .net service hangs...there is only one choice, reboot the machine. Not good for a service oriented architecture. I have to create high availability just to get around bugs MS says they will fix in the next patch (several patches ago).
cam on November 13, 2007 8:46 AMcam - you obviously have no idea what you're doing! Vs2005 SP1+ and the framework are notoriously stable. I've delivered 100% availability for our big SOA / SaaS app in the last 2 years. We've had absolutely NO problems at all (other than the DC having power problems - damn you redbus!).
Ignore cash and politics as neither of these matter if you're running a profitable organisation. People are where the cost is. Personally, I'll stick to .Net until someone delivers something truly better. There is nothing else out there which can use the same technologies for a) web, b) mid tier, c) desktop apps, and d) mobile apps, has available developers by the dozen, has low entry requirements into development, produces real results quickly and doesn't get developers too frustrated.
I've used RoR extensively. It doesn't perform, has way too many workarounds if you want to do something slightly out of "the ruby mindset", is incredibly hard to find good developers and the language is hideous. There are way too many zealots as well.
I've used PHP extensively. It doesn't perform either, is a mess of a language, I've never encountered a good developer in London, it's insecure by design and it doesn't promote clean design.
I've used Perl for about 10 years now. It's a mess. Need I say any more.
I've used Python extensively. It's the nearest competitor to .Net but it doesn't have the tool support or a framework suitable for delivering big applications with unless you want to write everything from scratch. It also runs on .Net as IronPython on the DLR so might as well just use .Net anyway.
Java is just too fragmented (how many frameworks?) and configuration oriented to be useful! Eclipse is just a crash-a-thon. I've not tried anything else in it, so that is the limit of my experience.
Mono is good but it's just .Net at the end of the day, so why not go with the genuine thing and benefit from completeness.
I'd like to see something better than .Net, but it doesn't exist. Yet! When it appears, I'll be there.
Chris on December 1, 2007 1:59 PM> 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.
Is it just me or did you completely skip over Mike's main point about Microsoft being "a grave threat to the future of software development through its increasing inclination to stifle competition through legal shenanigans"? But instead choosing to change his reason to something about keeping with Microsoft's "fast pace"? wtf?
Damien on January 3, 2008 11:47 AMMicrosoft doesn't "release technology" at a blistering pace, they copy other peoples work at a blistering pace.
The real innovation happens outside of Microsoft, then they copy it and run the innovators out of business.
You can only do that for so long before the innovators band together.
Watch for the Google / Apple / Adobe combo.
Lolster on March 16, 2008 7:07 AMI have nothing to add because you get to a point where you decide to switch and you commit and then you wonder why you did not do it earlier.
I jumped into the Python development community and have never looked back on .NET.
I have found the job postings are exploding in the Python space and being an early adopter I am getting more pay, and it is a lot of fun being on a team where we are all rather new and exploring the lovely Python programming paradigm. It is also a good feeling knowing we will soon be the old toothed wisened ones of the Python space and be the go to people =)
Lovin' it MS Free at last!
Jan
>>"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?"
Why is everyone SO Addicted to tools that write code for you and dumb you down. Why not just write it in a text editor (notepad,vi,emacs)?
I have been writing code for 20 years. I have been a MS solutions provider, I have worked writing asp (old) and VB. I have written in java and prefer that. I was forced to use an IDE for the MS stuff and hated it.
I now, 20 years later, use Windows, Apple and Linux for desktops. But I use Linux for all servers everywhere although my company does have windows servers. I take care of all the linux machines, by myself and there are several people needed to take care of the windows servers. I have not had to fix anything on the linux servers in the past year. In fact they haven't even been shut down! They are stable. Something that cannot be said confidently about windows servers.
I write EVERYTHING in a text editor. I contribute stuff to open source community, etc. All from the same editor.
Jamie on November 7, 2008 10:46 AMAs a programmer I have always been annoyed at Microsoft's failure to follow their own standards. It horribly obvious that every API was written by a completely different person/team and none of them have ever spoken to each other. It's all a bunch of design by committee that ends up being work-arounds for their own API's! Argh!
And don't get me started on Microsoft's documentation. What a joke. Most of their "examples" don't work and even when they do they are usually really excellent examples of bad coding practices.
For instance you should NEVER teach someone how to do something in a way you would never actually do, like using "my" in front of variables and objects. Have you ever in your professional life prefixed a variable with "my?" Or would you use Microsoft's own standards and name the variable appropriately?
If you wouldn't do it in production code then don't use it in an example! Duh!
But I think that's because, in my uninformed opinion, they use summer interns to write their documentation because the "real" programmers couldn't be bothered.
Mitur Binesderti on May 7, 2009 6:46 AM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |