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.
Posted by Jeff Atwood View blog reactions
« Your Favorite Programming Quote Zoomable Interfaces »
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 02: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 03: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 03: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 03: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 03: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 03: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 03: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 03:39 PMWe can be friends and all, but I'll still never buy an iPod.
Josh on May 9, 2007 03: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 03: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 03: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 03: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 03: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 03: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 03: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 04: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 04: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 04:02 PMEver heart of that pretty big JAVA IDE called Eclipse?
No, seriously, whats so special about VS05?
jan on May 9, 2007 04: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 04: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 04: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 04: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 04: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 04: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 04: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 05: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 05: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 05: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 05: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 05: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 06: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 06: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 06: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 06: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 06: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 07: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 08: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 08: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 09: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 09: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 01: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 01: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 01: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 02: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 02: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 02: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 03: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 03: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 03:21 AM"Right tool for the job and nothing else matters." Very true.
Kashif on May 10, 2007 03: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 03:27 AMHear hear!
Wilfred Knievel on May 10, 2007 03: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 03: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 04: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 04: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 04: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 05: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 05: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 05: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 05: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 05: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 don´t know only to drop controls around...
Regards.
wmk on May 10, 2007 05: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 06:23 AMStartups using Microsoft: Page Flake, Writely was written in .Net too
Tim on May 10, 2007 06: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 06: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,