May 8, 2007
Although I am generally platform agnostic, I make no secret of the fact that I am primarily a Microsoft developer. In a way, I grew up with Microsoft-- as a teenager, I cut my programming teeth on the early microcomputer implementations of Microsoft BASIC. And I spent much of my professional life writing Visual Basic code. When Microsoft rebooted their programming franchise with .NET in 2003, I was thrilled and reinvigorated, glad to finally have a viable exit strategy from the glass house that was Visual Basic.
As a developer who grew up on a steady diet of Microsoft tools, I never understood the pockets of rabid anti-Microsoft sentiment in the programming community. To me, Microsoft was the least of all possible commercial evils, a generally benevolent dictatorship. Humor me for a moment and imagine replacing Microsoft with one of its competitors: Sun, IBM, Oracle, or Apple. I don't know about you, but those alternate histories send a chill up my spine. Yes, Microsoft is a near-monopoly, but as giant, evil monopolistic corporations go, you could do a lot worse. Microsoft is far from perfect, but they generally do the right thing as far as I'm concerned.
Microsoft has always been a developer-centric company to their very core. From Steve Ballmer's developers, developers, developers, to Bill Gates' centerfold shot, it's always been abundantly clear that Microsoft is a company which prides itself on taking care of its core constituency: developers.
Although I'm still satisfied with my place in the Microsoft development universe, some developers desperately want off the Microsoft treadmill. Mike Gunderloy is a notable example:
I've spent the bulk of the last fifteen years developing some amount of reputation and expertise in the Microsoft universe, having published dozens of books and hundreds of articles, worked as an editor and consultant, written (as a subcontractor) parts of various Microsoft products, and so on. I'm also the editor of the Larkware site, which tracks news in the Microsoft software world for developers.
Unfortunately, over that time I've also come to the conclusion that, even though it is staffed largely by smart and ethical people, Microsoft itself represents a grave threat to the future of software development through its increasing inclination to stifle competition through legal shenanigans. Its recent attempt to claim that no one can implement a user interface that looks anything like the Office 2007 ribbon without licensing some nebulous piece of intellectual property represents a new low in this regard.
I'm in a bit of a bind. Unlike fifteen years ago, I've got a family, including four kids, and I can't afford to just walk out on a career that brings in good money. But I rather desperately want to find an alternative. This blog will record some of my explorations as I hunt around in other corners of the software world, trying to decide if there's a viable business plan for me that can include weaning myself off of Microsoft software.
Mike started a new blog, A Fresh Cup, where he's reinventing himself as an open-source developer. If you were wondering why the content at Larkware's Daily Grind has degenerated so much recently (and boy, has it ever), now you know. His heart's just not in it any more.
I can understand where Mike is coming from. Microsoft releases new technology at a blistering pace, and keeping up-- not to mention dealing with all the obsolete baggage you're carrying around-- is half the challenge. Just take a look at the stack I have to install on my development machine to do development work in .NET 3.0:
- Windows Vista
- Visual Studio 2005
- Visual Studio 2005 Team Explorer (source control)
- Orcas Extensions for Visual Studio 2005 (WPF & WCF project templates)
- SQL Server Express SP2
- Visual Studio 2005 SP1
- Visual Studio 2005 SP1 Update for Vista
- ASP.NET 2.0 AJAX Extensions 1.0
- Expression Blend
Historically, I've used Microsoft development environments because they made my life easier. It's hard to look at this list and see how it's any easier than the open source alternatives. I also begin to look longingly at the open source developers who have been plugging away productively in Perl or Python over the last five years. Sometimes, you wonder if choosing an environment where things change more slowly isn't a better long term evolutionary decision. Perhaps there's a kernel of truth in Paul Graham's sensationalist Microsoft is Dead article: can you even name any startups that use Microsoft development tools?
So part of me agrees with Mike. To paraphrase Chris Rock: I'm not saying he should have given up on Microsoft. But I understand.
Mike's certainly entitled to take whatever steps he deems necessary for his professional development. Still, his attitude frustrates me, because it falls so egregiously into the stereotypical, religious love/hate dichotomy that I've observed again and again in software developers. You either love Microsoft and use exclusively Microsoft products, or you hate Microsoft, and you vow never to use any of their products ever again. There's nothing in between. No middle ground. Why does it have to be an all or nothing proposition? As far as I'm concerned, every software developer, regardless of what's on their tool belt, has the same goal: to craft useful computer software that delights users. We're allies, not enemies. Friendly rivalry I can understand. But the rabid partisanship that I typically see-- on both sides of the fence-- isn't helping us.
I also find that both the Microsoft community and the open-source communities are far too insular and provincial. I had the great pleasure of meeting Miguel de Icaza at MIX this year. Miguel is one of my heroes, as he was instrumental in bringing .NET to the world of open source with the Mono project. What truly surprised me, though, was how few MIX attendees knew who Miguel was, despite his groundbreaking contribution to the .NET programming ecosystem. To me, he's famous. A celebrity. But because Miguel has roots in the open-source community, he barely exists to the majority of Microsoft-centric developers. They didn't even know who he was! And those who did recognize him had about a 50/50 chance of disliking him on principle. As Miguel pointed out during the open source panel, he's disliked by both camps: open-source zealots think he's sold out to Microsoft, and Microsoft zealots think he's destroying the value of the .NET platform.
This is wrong. This is not the way things should be.
As a software developer, you're doing yourself a disservice by pledging allegiance to anything other than yourself and your craft-- whether it's Microsoft or the principle of free software. Stop with the us vs. them mentality. Let go of the partisanship. We're all in this thing together.
I'm a pragmatist. For now, I choose to live in the Microsoft universe. But that doesn't mean I'm ignorant of how the other half lives. There's always more than one way to do it, and just because I chose one particular way doesn't make it the right way-- or even a particularly good way. Choosing to be provincial and insular is a sure-fire path to ignorance. Learn how the other half lives. Get to know some developers who don't live in the exact same world you do. Find out what tools they're using, and why. If, after getting your feet wet on both sides of the fence, you decide the other half is living better and you want to join them, then I bid you a fond farewell.
But either way, we're still friends.
Posted by Jeff Atwood
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.
@HJ - you obviously have no clue if you think that Open Source is not cutting edge. I doubt that you've any experience of anything Open Source. Have you actually hosted apps on Linux? Tried Firefox? Grid computing? Xen virtualization?
I'm not sure what you mean when referring to 30 year technology - are you talking about BSD/Unix/Linux? If so, these technologies are driving most of the Internet the time time I checked, not to mention mission critical enterprise systems. OSX is based on BSD and it's a great modern OS (Vista does a reasonable job of copying it). Linux is even shinier with Compiz/Beryl.
Your reference to Perl - OK if you've never had the need to use a scripting language like Perl then you will not see the value in it. You wouldn't use it to write eBay but again there's nothing in the MS world that does what Perl does unless you use something like IronPython or IronRuby (both of which are Open Source and are ports of cracking languages). If some of these Open Source scripting languages are so lame then why is Microsoft baking in scripting support into the next version of .Net?
In summary, don't talk about what you don't understand. Closed Source and Open Source BOTH innovate and get inspiration from the other side. Use whatever gets the job done. My personal preference is for good Open Standards support so Microsoft wouldn't be my first choice but I would definitely use their products/technology if I thought it was a good fit to the project that I was working on - MS has some fantastic software. It's a shame that there are so many muppets in IT.
I definitely share some of flynnguy's heart here. But flynnguy, you are convincing only the open source choir and converting no one. If you really want to do some good, keep your mouth shut for a few days while you read "How to Win Friends and Influence People." Your writing will become a lot more effective, in the sense that you will convert a lot of people to use open source tools.
With that off my chest...
I program for fun. I left Microsoft around 1997 when I discovered that under the Linux command line was all the development tools I thought I'd have to pay thousands of dollars for, and a nice stable OS too. Revision control I thought costed $1000 per seat, editors and build tools and compilers for every language I could imagine I thought costed $200+ per seat per tool and/or language, and a never ending fountain of new software to play with, to me worth infinity dollars. I felt like I'd been ripped off my whole programming career and began the process of expunging MS from my life.
This article makes me think, "Why did I do this? Why does it always have to be a violent revolution?"
Reflecting on what I just wrote, wow, I'm insightful!
Now I'm going to ruin it:
Look at Apple right now. They made a mutually beneficial effort to make themselves _compatible_ with the rest of the open source community. As a result I've seen a lot of Linux desktops turn Apple. But the Linux guys don't hate the Apple converts. Well not even half as much; it's like an order of magnitude less hate. I could buy a mac now, and I could still easily do a lot of stuff the way I'm familiar with. I can manipulate an Apple build environment from my Linux machine easily with Emacs Tramp.
Apple and open source software play pretty nicely. Until, that is, you start trying to make universal binaries from uninitiated free software. Hate! Hate! But that's optional for most people.
But if I got disillusioned with Free Software today, where would I go? MS? I'd have to cut bait and regain 10 years of my career. If I fled to Apple, it would be a really gentle transition.
Apple chose to make things this way, maybe by accident, but this is the way things are.
MS, on the other hand, has enough resources that they could make an effort to bridge the gap, but they don't. Or when they do it's under the auspices of labeling my OS as something that must be escaped, and the bridges feel like temporary offerings. The community hate is the official company line.
Seems like all the compatibility work, (.net, samba etc.) is happening on our end, without the benefit of docs, while the other side of the divide has the benefit of source availability but won't even ship ssh out of their box.
So I'm sorry to say, I fall in your trap, but I've got good evidence to point to the fact that I'm not the problem here.
I don't really understand the mono project. That is, what do they think the endgame will be? Let me try to lay it out:
Assumption: Microsoft is really serious about .NET, it's not just a red herring. MS wants all developers to move to .NET and they themselves will eventually move all their products to .NET.
Assumption: The ultimate goal of Mono is 100% .NET compatibility. Any program written for .NET will work on Mono without the developer having to even think about it.
Now, if both of these assumptions are true and the events assumed in them come to pass, then doesn't that endanger the Windows near-monopoly? That is, .NET developers and users will have a real choice about what operating system they use.
Given Microsoft's past behavior, which of the following is more likely to be their reaction to a threat to the Windows near-monopoly:
A) Shrug and say, "oh well, Windows was a good ride while it lasted. I guess we'll just have to compete on a level playing field now."
B) Do everything within their power to cripple or destroy Mono.
I don't see how any sane person who has looked at Microsoft's history can pick anything other than B). Maybe if the senior management changed, but Gates and Ballmer? Nope, they're "destroy your enemy at all cost" sort of people. They've proven this again and again.
Now, I'm not saying that MS would succeed in crippling or destroying Mono. Just that they would try. And even a failed attempt would suck up huge amounts of time for Mono developers (and would probably scare commercial developers away from Mono).
So it seems to me that Mono is only "allowed" to exist by MS by the degree to which it is not-completely .NET compatible and therefore is not a real threat to Windows. (Just like how MS is quite happy with a single digit marketshare Mac OS, but would change their tune if Apple ever got over, say, 20%.)
"I haven't heard of an IDE better than Visual Studio. Do Perl and Python developers even HAVE an IDE, or do they just use vim or Emacs?"
If an IDE needs to run in Windows (Vista, XP, 2000...) It'll crash.
So I think any IDE that runs on any OS, is better than VS... At least if you really know what you are coding and dont know only to drop controls around...
As 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.
Startups using Microsoft: Page Flake, Writely was written in .Net too
I 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.
I'm a software developer that's been in both camps, using Visual ____ IDE's + Compilers for years on many projects, then switching off to open source projects, then back again.
Both sides have value, but microsoft's lunch is currently being eaten for good reason. Java has really taken massive inroads into the enterprise space. C# has taken some of that back, but Java somehow became the new cobol, which amazes me in more ways than I can count. This means java programmers will be around connecting their beans and tomcat serverlets back into new stuff for years to come.
For small projects, Microsoft has not created scripting languages that are *small and portable*. This is where ruby, python, and perl have eaten its lunch. All three are much easier to use than their .net equivalents because they're working within minutes and work the same on innumerable platforms of the last 5-10 years of all operating systems. If they'd like to try to reclaim this. Repackage IronPython in something as standalone and simple as python2.5 and pythonforwin. The CLR+.Net runtime are a cool idea, but don't make a developer install the moon and the stars just to use the microsoft alternative to their usually easy to install and use program.
Microsoft has some (very important) things going for it:
If you don't care too deeply how things work, you can get quite a bit of stuff pre-made for you, that work okay out of the box. This only requires a little cash, or can even be free with the new express studio.
Setting up builds that work for each developer is simple for small to medium small projects that don't require tons of external tools and libraries
"Open Source" (I mean, doesn't this translate to != MS in this discussion) has the following things going for it:
Rarely is one company is dictating implacable, opaque api's
Often simple enough to be completely understood
Eschews code generators instead using libraries
Often a product of multiple dedicated people with academic training, or a single passionate developer, not an often anti-academic group of developers who view themselves as immune from reading research.
Often conforms and contributes to standards
Often very well documented, or small enough to require less documentation
Errors in API's/libraries are fixed quite quickly.
You can often run on any platform under the sun
You can easily understand the licensing terms for embedded projects
You can install the development environment on as many computers as you'd like (important for those of us who like to work at home some times)
The development environment we use can be customized per developer (I've been on a project where one guy was using the VC ide, another emacs, another VI and another still codewright).
Setting up builds for large projects is much easier
All the development tools are usually redistributable.
All the libraries are redistributable.
In summation, Microsoft gives you a couple things quickly, but often forces deeper, harder and more complete commitment to even finish simple projects. Open source API's and tools are often shallow, giving up their functionality in simpler ways that allow them more flexibility of application and integration with a wider variety of code.
For some people, the instant pile of features .Net gives you are enough to make it the thing to use. But this also requires the willingness to accept the risk of the lock-in, closed decision making process about API's, lack of responsive and affordable support, and opaque development roadmaps. These things make many programmers tremble in the night.
And frankly, Microsoft has dome some amazingly untrustworthy things in the past. If people are leary of them, it is not without good reason.
Definitely hit another nerve Jeff... Way to go! Love all your posts!
"Humor me for a moment and imagine replacing Microsoft with one of its competitors: Sun, IBM, Oracle, or Apple."
This statement totally misses the point. It assumes there has to be *some* big monopolistic company controlling our platform. That is not only false, but it is the exact thing people are complaining about.
Instead, I ask you to imagine a world where IBM's BIOS was never reverse-engineered, and thus IBM kept total control over the hardware platform from 1980 till now. Comparatively, how stunted would the PC platform be today, without all that development and support from hundreds of third party shops for the last 25 years? Sure, IBM would probably have come up with some innovations all by themselves. Are they smarter than a marketplace full of hungry competitors? Hell no!
Now take that mental delta, and apply it to PC software. *That* is what Microsoft's software monopoly has done to us.
I'll admit that I've tried it a time or two, but I've never inhaled!!!!
I am a MS-based programmer and like the majority am staying that way to pay the bills.
But my main problem with MS, in general, is how they use their products to dictate how things will be done. They've pre-decided that the best way to program everything is their way. I strongly disagree.
My second issue would be with product bloat. They stuff way too much in to their products that an everyday person has to weed through to do anything truly productive.
My last issue would be that I think their products, specifically VS, are too-tightly connected to the OS. I have never had to wrestle with permission issues so much in my life. I still don't understand why I have to give myself permission to run something that I've coded on my own machine.
I am probably one of the few people that think the jump from VB6 to VB.NET was a step backward.
"Follow the money" as they say. Trace the tree of "us vs. them" and at its root you will find Mr. Steve Ballmer. It is he who encourages the dichotomy, solely for his own ego.
I too find the religious zealotry tiresome, after abandoning Windows development years ago, and I take great comfort in this Larry Wall quote:
"True greatness is measured by how much freedom you give to others, not by how much you can coerce others to do what you want."
"... I haven't heard of an IDE better than Visual Studio. Do Perl and Python developers even HAVE an IDE, or do they just use vim or Emacs?"
Yes you have. (See the last quoted word).
Emacs most definitely is an Integrated Development Environment. The only thing I know of that Visual Studio does that emacs doesn't is WYSIWYG GUI development. That's probably a really big "only" for some folks. However, I do mostly system's programming, so I'm not one of those people. The power of the text editor is by far the most important thing about an IDE to me, and that makes emacs vastly superior to Visual Studio.
As the owner of a small development shop, I get the best of both worlds - I do work both in Rails and .Net, depending on the needs or preferences of each client. But with projects like SubSonic out there, the two paradigms aren't that far apart anymore! I like the fact that MS (and the MS ecosystem) is taking some cues from the OSS community.
So, although I plan to buy Mike a beer and pick his brain during Railsconf next week, I'm not following him off the cliff. Unless my clientele goes 100% Rails, I'll keep one foot in both camps - and laugh at the zealots on both sides!
Howdy Doody Jeff,
Isn't this a case of 'silent majority', as in why would I envangelize my profound non-committal either way, i.e. the reason you think the world is polarized on this subject is the fact that the two poles are so loud and noisy (no disrepect to the Polish intended here).
Picture it like a noisy penguin and a noisy polar bear having a shouting match at either ends of the Earth - it would give the impression that no-one else lived in between them, while the case is that the majority are just 'quiet whatevers'.
PS Why are you blogging about Mike Gunderloy saying something, isn't that what Mike's blog/newsletter is for? Look out for my 'Jeff Attwood Considers Mike Gunderloys Plan: My Reaction' blog post any time now...
The issue I have with non-Microsoft developers is that they believe all the MS IDE's do is drop a few buttons on a page and somehow that makes the code work. VB is probably the cause of it, but like any half-decent VB programmer I had to resort to API's in order to make the program do anything fancy.
Perhaps they don't understand that you don't have to use VS to create .Net projects. If you are sadistic enough you can compile the code from scripts, but I would rather be spending time working on the core code instead of setting up the development settings (although I do believe the OS tools are better for this on large teams).
Oh and please stop referring to Microsoft as Micro$oft and the MS developers as "fanboys" because it cancels out any intelligent points you make.
Love your blog, Jeff, but did you purposely overlook the fact that Microsoft has famously used tactics that would bring a tear of envy to Tony Soprano's eye? Their illegal bullying of our entire industry should not be overlooked or so easily forgotten.
This is not a moralistic rule-of-law kind of stance. If we fail to shun the ruffians in our business, then our business will be owned by the ruffians and innovation suffers. See: Russia. We all programmed Visual Basic in the 90's because there pretty much was no other game in town. OOP and elegance weren't even possible in that nightmare. The US gov't gave them a slap on the wrist, but it was, as I remember it, developers, developers, developers who said "screw you" to Redmond and embraced the web, not Windows, as the platform of choice.
Microsoft is unrepentant. Now they are spreading FUD about Linux and trying -- yet again -- to get their proprietary mits on the web via Silverlight. Stop enabling them.
I'm a little concerned at a statement I caught at the end of your post Jeff. Not to mince words:
"Stop with the us vs. them mentality... We're all in this thing together"
But then in the next paragraph you said:
"For now, I choose to live in the Microsoft universe. But that doesnt' mean I'm ignorant of how the other half lives."
If we truly want to get rid of the us vs. them mentality, how can you say something like "how the other half lives"? Or maybe I'm just taking things out of context. I still need to pour through all the other comments here, but great post.
Let's be straight here, I'm a Microsoft MVP and Microsoft has been good to me. To a certain extent, I'm a Microsoft pimp. I pimp their products and technologies on my blog, when I speak, and every chance I get. However, I also drag them through the mud when they're wrong or produce confusing/stupid/dumb/moronic/non-working/etc. tools. That's the beauty of being an MVP. I get to play in both camps and tell it like it is. Okay, I'm not going to cut of my nose despite my face, but I'm also not going to sugar-coat things that are just wrong in the Microsoftverse. As am MVP I take the pain and suffering so that I can pass on the experience to others in the hopes that they won't go through what I did. It's a bit of a self-mutiliation mentality, but it's my choice.
I'm also an open source guy. Any project I do generally goes straight back into the community. I come up with a way to improve a gap that MS failed to fill, and I fill it then unleash the hounds onto the rest of the geeks out there to do what they will with it. I don't however consider that another camp. If MS came to me and said "Bil you can't be an MVP and release all these open source projects" then I would stop being an MVP. However I wouldn't stop doing what I'm doing now and would still praise and bash MS for things they do (like putting us through CTP hell like they are right now). The only difference is that I won't get the inside connections I have now that help me position the community for the future.
Anyways, I completely agree with you that software development is about software development, no matter what label you slap on it, what sponsor you have behind it, and what platform it lives on. I choose to build on the Microsoft platform just because it's the way it works. If I could build everything on Linux and target Windows without jumping through hoops (and Linux offered me some value-add over Windows) then I would do it. Or Mac. Or whatever. The reality is that the largest audience out there for the type of software that I build is Microsoft centric, so you build what works. If I had 1000 Mac users banging down my door for Mac software, I'd gladly spend the time doing that however in my experience, it's been 1000 Windows users to 10 Mac (or Linux) users and while I'm all about sharing, I can't sacrifice the good of the many for the good of the few.
Okay, enough babbling and I'm not sure how this all relates to the post but maybe food for thought. Thanks for your bandwidth.
As someone who has developed on the MS platform almost exclusively for 8 years, I can say this: I'd be MUCH happier if I never had to look at another piece of C# code. I've worked with both professionally but I've been in a .NET shop the longest. Having seen both sides, I'd choose open source over Microsoft.
"There's nothing in between. No middle ground. Why does it have to be an all or nothing proposition?"
Jeff, are you really on the middle ground? All of your articles seem blisteringly pro-Microsoft and anti-anything else. That makes this article sound hypocritical because in the past, you've been very quick to discount anything that isn't from your own camp.
That's how it seems to me anyway.
eBay was originally written in perl, and is now one of the largest Websphere installations on the planet.
I could not agree more with this blog entry. For some reason that I cannot comprehend, majority of people are either against MS technologies or against non-MS technologies. This is so dumb. And that talk about open source vs Microsoft, my goodness. I am developing with C# 99% of my time and for majority of my tasks I use only open source software. I just cannot understand how choosing one eliminates the other. And having such a diverse environment in software world only helps. Each platform competes and strives to be better and excel above all. In the end, we, developers, win.
I think the only thing that hurts the community now more than ever is the die hard MS only people who due to their own laziness choose to ignore everything else and advocate their lifestyle to the rest. If we can eliminate those, we are in good shape.
I am still confused with this notion that you are either MS or open source developer. So stupid, you can and should be both.
PS. I cannot believe people at the MIX couldn't recognize Miguel or know the name. I mean common, where do you live, in the moon?
It's a little nave, in my opinion, to think of Microsoft as a benevolent dictator. Microsoft creates and cannibalizes markets at an astonishing rate, giving developers the tools and technologies they need to be inventive... and then turning around and competing with them when the market shows promise. They've slowly expanded into nearly every technology arena, threatening the very developers they proclaim to love and support.
And yet most of us have little choice. The vast majority of commercial software developers must target MS operating systems to have a chance at success. Until the monopolistic cycle is broken, there is little choice in the matter. Microsoft has successfully seized control of the playing field.
How's this for blowing people's minds: I like to develop open source software for Windows in unmanaged C++. Mostly because I like for just about everyone on the planet to be able to run my programs without needing to install fifty megs of "frameworks" and "libraries."
Blind platform advocacy is weakness. Great tools speak for themselves. People cling to these movements to feel like they are a part of something. You look at a site like Slashdot, infested with blowhards who insist that using Microsoft technologies is morally evil. They fail to see that is merely a choice. I'll be the first to say that a lot of MS software is merely average at best. But I don't see substantially better efforts elsewhere.
As for non-Microsoft development tools, I have yet to be impressed by a Java IDE. Any IDE which needs to garbage collect (and thus preventing me from typing) doesn't cut it in my book. I'm talking about you, IntelliJ. Eclipse is...average, at best. The Java development world fails to impress me overall, seems like a bunch of people inventing as many frameworks as they can. And don't get me started on "application servers," either.
I suppose the deciding factor on technologies for me is the Just Works factor. Can I do what I need to do with it quickly? Or do I have to place special libraries in certain places, tweak environment variables, and muddle through config files just to use it?
The universe runs on duality, and people run on a need for social acceptance. You're always going to see partisanship.
It seems like you've glazed over the bit where Gunderloy mentions Microsoft's "increasing inclination to stifle competition through legal shenanigans".
I'm a pretty die-hard Window's developer, but I agree with him. It's not so much about the tools, it's more about associating yourself with a company that can be a bit shady.
To Jeff's "pain" about all of the things he needs to install to get up and running, that pain is at least temporary as Visual Studio Orcas will have all of the updates rolled up into one so your installation list goes from 9 items to four items. You could also try Visual Studio Orcas Beta 1 as well, but that depends on your tolerance for using the latest and greatest.
As for Mike, that's too bad as I did enjoy the daily grind...
Interestingly, on the Mac side of things, there's no dichotomy between "Mac devs" and "Open Source Devs." Lots of Mac apps are based on open-source stuff, lots of Mac devs contribute to open source or have parts of their code open, and stuff like BSD and X11 makes it easy for open source devs to port to Macs.
it is interesting to me to read the "let's exit the Microsoft building" experience from the hard-core Microsoft developer's angle. i'm almost 50 and have coded for a living for 28+ years. i've written code in more dead languages hosted on dead platforms than most even know existed. i've done some Microsoft-centric development and a fair amount on Unix and an even bigger amount on VMS. i vastly prefer to develop on non-Microsoft platforms. but i digress...
as a user of Microsoft product, i have been a Windows user since Windows 3.1 was a _new_ product. frankly, since the release of Windows 2000 the product has been going downhill in many ways. i do not think XP was so much better than 2K and Vista is just an atrocity from a user's viewpoint. Vista wants tons more hardware, restricts my freedom and causes me to spend tons of cash on new software to replace stuff that currently works. add that to the fact that Windows is completely retarded with respect to handling external USB devices (can anyone explain to me why plugging in a 4th USB memory stick caused XP Pro to invalidate the drive letter of another stick using that drive letter and why the hell it wouldn't restore that original drive letter after a reboot? oh yeah, that happened on a _work_ PC where admin rights have been taken away so don't bother telling me to change the drive letter back...)
no, the Microsoft platform has become a stupid, ugly caricature of a thing. it is bloated. it does retarded crap to USB drives. (can anyone clearly explain what the hell "delayed write failed" means and how to FIX IT???) with Vista, it is toadying up to hollywood and the RIAA and restricting my ability to use my PC.
no, i join those developers in "exiting the building". Microsoft has lost its way and needs to refocus on what real users and developers need and want. every attempt they have made in that direction seems to me to be complete failures. XP is not easier to use. Vista certainly isn't either. they hide essential processes from the user (like assigning drive letters when a USB stick gets plugged in -- do we really need frickin' drive letters anymore?) and make it nightmare to manage. as a developer, do you really want to have to go "back to school" every couple of years to re-learn how to program the beast? not me... i realized that when they rolled out VB.net and invalidated most of what i already knew in VB6. i still use VB6, they can keep .net...
but now that Ubuntu Linux runs on my laptop instead of XP Pro (that was a story to tell as well -- how is it you can't even tell whether the USB port is 1.1 or 2.0 from the system management tools so that you can fix the driver which complains EVERY time you plug in a USB disk?) i will turn my attentions to non-Microsoft development. i have all the reference books necessary to go back to my roots since the major interfaces aren't significantly different from their Unix roots.
no, i applaud these guys for leaving. Linux, like OS X, just works better (as long as you have the hardware support necessary -- some vendors won't release hardware specs so that appropriate drivers can be written).
Microsoft needs to learn how to get lean and mean. reduce the resources required to run their crap; reduce the learning curve to be able to use it; eliminate the "relearn how to develop every 2" cycle. no, the monopolists of Redmond need to have a corporate near-death experience to re-learn who really pays for their existence.
*Excellent* post - compelling and very well written. Keep it up!
"As for compiling, check out MSBuild. It totally rocks, and is highly extensible."
I recently read a post that generated a comment about it being important to be creative not negative i.e. a 'positive advocate' when discussing 'why?' : http://diveintomark.org/archives/2007/05/02/silly-season (comment 86).
This blog post is definitely following in that vein - i.e. discuss what the positives might be or at least highlight the debate we're all having either privately to ourselves, our peers or publicly to strangers via our bogs :-)
My perspective, when reading posts that suggest 'the business case is compelling to work with Microsoft tools', is that if it's just business then you're happy when things like this happen: http://weblogs.asp.net/edaniel/archive/2006/01/05/434548.aspx to protect your markets by playing the standards game - the most recent being the ODF / MSOOXML debacle.
For many of us the change means giving up something you've invested hard to create: http://weblogs.asp.net/cgarrett/archive/2006/10/03/MVP-no-more.aspx
I like the alt.net tag - I think that's where we should all be now because we can't trust anyone to look after developers when they're such an important value proposition to these businesses - perhaps one of the few titans we might entertain will be Sun Microsystems as they've given more than anyone else and continue to do so - I like Sun much more than Microsoft today.
What I want to see is all those top business schools getting their under-grads producing term papers on how Microsoft needs to shake up its strategy and create a disruptive business that will be ready to support a new model, one that opens up everything Microsoft, to the world and then what will open source do? Improve it for a start, remove platform adoption, vendor lock-in, compatibility and interoperability problems/fears and allow the immense partner network Microsoft has stay in business at the short-term expense of Microsoft shareholders who are certainly far fewer than the community of Microsoft users - could Microsoft really understand that type of user-centric market positioning that empowers everyone? Perhaps not but it was fun thinking they might!
I don't understand how you can see a bloated operating system like Microsoft Windows insert version here in any way of having better tools (for development of all things!) over free and open source operating systems which can run both Microsoft's bloatware and BSD/GNU products.
Then again, you have been known to be a shill for Microsoft, as well as 90% of your "readership."
I feel exactly the same way. I am a Microsoft consultant by day, but I want to learn the dark side (or is MS the sith? I forget) and promote open source in my spare time. A great example is a href="http://www.OpenAjax.Com"OpenAjax/a - I donated this domain for FREE to the Alliance to promote Openess in Ajax. Recently I found out that both Google and Microsoft joined OpenAjax, so now nearly all large companies are working together to promote Open Ajax
I can name a startup that uses MS tech. SMS.ac (http://www.sms.ac) is making a killing with text messaging. It is not just hype and dreams either, they are actually making money.
This is a rather odd post, Jeff, given that you often come across as a pretty dyed-in-the-wool Microsoft cheerleader (to me at least). I don't intend that to be derogatory, but you just honestly seem to embrace and applaud Microsoft initiatives a little more eagerly and enthusiastically than most pragmatists.
I regular walk in the lands of all technologies, and I will say quite assuredly that the *worst* of the "our camp/your camp" warmongers are none other than the Microsoft faithful, fearful of change, desperately clutching onto whatever Microsoft fed them today and declaring it a revolution of innovation.
And it isn't just about technology, and it's naive to imagine that it is so. I use a plethora of great Microsoft technologies, and make a lot of money doing the same, but Microsoft's agenda and conflict of interests are always on the top of my mind.
I've spent the better part of 20 years as what some would call a Microsoft bigot. I'd prefer to look at it as going where the market share is. I deliver business technology solutions with the stack my (and Microsoft's) customer has chosen and the one that gave microsoft the market share to be considered a monopoly. I just like building solutions and don't care whether Microsoft squashes competition as long as they do not squash innovation. I do not believe they do or can. Sure, they like any business are going to try to remain on top. If you don't then you should live in a cave because that's butters your bread.
As for whether or not any startups are using the .Net stack. Who cares. Microsoft and those of us supporting their stack, spent well over a decade building and proving their stack was adequate at the Enterprise level. Why do some now turn-around and claim they arent' the best for a startup business that can't afford to buy the Enterprise stability and scalability in the .Net stack? Microsoft makes its money and I make my living on market-share and if you lined up all the start-ups in a row there isn't enough revenue to line up against even 1 or 2 of the largest Enterprises. Do we want rock-solid stability, scalability and frameworks for rapid development or do we want a platform thats cheap enough to enter a market? I know where I'd rather bet my mortgage payment :-)
I don't intend that to be derogatory, but you just honestly seem to embrace and applaud Microsoft initiatives a little more eagerly and enthusiastically than most pragmatists.
What evidence do you have to support this statement?
I like Microsoft. I said that at the top of this entry. But I'm far more skeptical than the typical MS developer in a typical MS shop. If you think *I'm* a cheerleader, you're in for a very rude awakening.
My agreement with your thang comes with a few suggestions:
(i) Use VMware (not Virtual PC) on Windows and install a Linux desktop VM and start to SLOWLY migrate as much as you can to the Eclipse world of PHP, SQLite and MySQL (XAMPP). This move is laughable to many hardcore Microsoft developers.
(ii) Move your MSDN development environment to another (Windows) VM and leave your Windows host OS clean. Now you can see the Windows world on your host machine like people who are not developers do. Sounds simple but this is very important.
(iii) Stop using "controls"---especially ASP.NET controls. My new ASP.NET designs prioritize ASHX files over ASPX files. My move was to use XSLT as much as I can. Again, this is utterly crazy to most .NET heads---Juval Lowy literally hates XML.
(iv) Use YUI for AJAX and not MSDN AJAX solutions. This makes your Web clients server-neutral. You can spend hours and hours designing a UI for the web---do not lock it in to a Microsoft server!
More related stuff:
"Random Screen Shots: The New Songhay System ASP.NET Design Pattern"
Your list isn't really fair... You are using cutting edge technology before it is mainstream. Wait a few months for Orcas and your list will cut in half to
* Windows Vista
* Visual Studio 2007 (Orcas?)
* Visual Studio 2007 Team Explorer (if not included w/ Orcas)
* SQL Server Express SP2
* Expression Blend (unless this is in Orcas too)
You make a valid point that I fully support. The two camps have a lot to learn from each other, brother. And if, as professionals, we're to select the best tool for the job then we should put on our level-heads and make the appropriate choices.
I actually went the other way to Mike Gunderloy. From open-source tools to Microsoft. I did this not because I wanted to but a family move necessitated it. I had no fear of the transition because, like you, I started on Microsoft BASIC and VB. I wouldn't say it was like coming home though. Far from it. But there are some things that Microsoft does fantastically well. It's clear that a lot of thought and testing goes into the products they create. And most importantly how those things might integrate/inter-operate. Hats off to them for that because sometimes it feels like open-source has a much harder task of this. Being a very much more disparate and disconnected development organism than Microsoft.
The thing that I can't get my head around about Microsoft is the almost dizzying amount of tools and techniques available. Some of them are clearly complementary but some seem competing. I'm guessing that I'm observing years of evolution/purchasing compressed into a single tool set though. This means I'm seeing all the evolutionary dead-ends as indistinguishable from the alive ones. Now if Microsoft could only indicate which ones are effectively abandon-ware (this is obvious in open-source) my life/job would be a lot easier.
Having said all of that, when I program in my spare time I do it using open-source tools. They're cheaper and I feel more like I'm in control of the project. And isn't that the point of software? It's meant to make the user feel like he's in control.
What evidence do you have to support this statement?
Just a personal perception that is likely entirely wrong.
If you think *I'm* a cheerleader, you're in for a very rude awakening.
I've dealt with bigoted, zeal-filled, indoctrinated amateur Microsoft evangelists for years (the *worst* are the ones who desperately want to work for Microsoft, hoping that fighting the "good fight" will earn them some attention).
Sadly there was a period in my career when I was a Microsoft apologist, thinking it was necessary for me to "set things straight" on sites like Slashdot.
If anything the number of Microsoft cheerleaders has seen a dramatic slide over the past several years, and I think it has to do with Microsoft becoming less interesting as a prospective employer.
@jaynicks: Your link to Grygus doesn't help your argument, I'm afraid. Anyone who thinks (from the bottom of the page you linked):
"A major part of the .Net strategy is to centralize the software you use and your own business and personal data on Microsoft owned serves so they can charge you a monthly fee for access to your own stuff. Access will be, of course, by Windows PCs and Windows mobile devices, only through Microsoft's .Net servers and only by using Microsoft .Net software, which you rent by the month. Fall behind on your .Net payments and you are out of business."
can't really be taken seriously IMO. I don't see MS trying to get me to give them my business or personal data and pay them a monthly fee; it just hasn't happened. And, since the linked page was from 6 years ago, surely it should have by now... Shouldn't it?
@H. Eriksson: Apple being the ruler of the world would be just as bad, if not worse. Apple is it's own monopoly in its' own right. Can you buy OS X to run on hardware that isn't Apple's? Can you buy Apple computers with Windows Vista pre-installed?
@dennis parrott: "Delayed write failed" means that you got bit by disk write caching. It's usually caused by not properly stopping the USB device (safely removing it); data in the cache for latter writing can't be written if the device is no longer available. To fix it, you can either *always* use "Safely remove hardware" before removing the drive, or disable caching for that drive.
@Jeff Atwood: I agree with you for the most part. A couple of disagreements, though.
The list of *have to install* items is exaggerated. You just need the .NET 2.0 and 3.0 stuff and Notepad, technically. Because you *choose* to install all the other cruft doesn't mean it's *required*. Hell, with a little work you can use Borland Developer Studio as your IDE.
I think Open Source is fantastic. I use various OS libraries and tools, and always donate something if there is a way to do so and I find the project useful. However, I'm firmly in the MS camp as far as operating systems go. Why? Because that's how I earn a living. I write Win32 applications for PC users, both business and consumer. When 94% of the desktop software market belongs to Windows, I'm writing software for Windows. I don't use MS's IDE's, because Delphi is 1000 times better. I can do a full build of a 1M LOC project and be running it in the time VS takes to change the cursor to an hourglass. I have all of the code completion stuff (Code Insight), all of the code template stuff, and all of the other developer productivity features too.
I spent about a year learning Linux a while ago, thinking it would be pretty cool. It was, but it'll never be a big desktop OS for consumers. It's too hard to remember all of the different places you have to go to change configuration stuff, and KDE/Gnome are still waaaay behind XP or Vista. (An example? I have a widescreen Gateway laptop, and the screen resolution is 1366 x 800. Try getting X support for that, especially "out of the box", so to speak. g) But I don't belittle the people who choose to run Linux instead; more power to them. I just don't have any reason to join them.
Apple has the same problem. They don't have any market share, despite all of the amazingly funny ads they've been running lately. (My favorite recently is the relatively new "Mac Geek" one, BTW.) And as I mentioned above, they're basically their own type of monopoly, albeit considerably smaller.
"Only listen to Microsoft Sales pitch, or open my eyes and realize that nearly all significant I.T. work done in the last 10 years has not been done on the Microsoft platforms"
Nice quote. I'd like to see you back that up with some real evidence.
Anyway a look at history will help some here. If Microsoft hadn't won the hardware wars with software, we'd be much worse off in my opinion. Back in the early days of PCs, circa 1982-1984, you'd walk into a software store, Babbage's was the biggie then, and you'd find software for 10 or so different hardware platforms. There was nothing worse than having a TI 99/4A and wishing you could play a game that was on the Commodore 64 or one that was on the Apple IIe or one that was on the Atari 400 or one that was on the Amiga...ad nauseum.
A lot of you are too young to remember those days. Having many different platforms with different software SUCKED! Nothing written for one system would run on a different one. That led to endless confusion and stifled the market. Along about that time, cloned IBM PC hardware was starting to show up. Microsoft realizing that this could be a major new market released it's own version of PC-DOS called MS-DOS that would work on not only the IBM PC's but the clones as well.
The availability of cheap clone hardware and MS-DOS lead to the end of the hardware wars by the late 1980's. By then you pretty much had PC clones and Macs and that was it. When you walked into a computer store there was much less confusion. You in essence had only two choices to worry about. PC or Mac and PC was about 90% of what people wanted. This meant that PC's were the de facto standard. And standards are good things right? Heck yeah they are, we could all get on with business and not worry about compatibility.
It was this worldwide computing standard running Microsoft software that has created so many jobs and wealth that the entire world has benefited from over the last 25 years. So in that way I say bravo to Microsoft. That doesn't in any way mean Microsoft is a good company, but the benefit of having a standard computing platform is undeniable.
Open source efforts and internet operating systems may eventually make Microsoft a footnote in history. But at least give them credit for bringing us all together and giving us the chance to make that choice in the first place.
There was nothing worse than having a TI 99/4A and wishing you could play a game that was on the Commodore 64 or one that was on the Apple IIe or one that was on the Atari 400 or one that was on the Amiga...ad nauseum.
You have an interesting memory of that time. I remember a period of incredible innovation and progress, where innovation could be rewarded and was much more difficult to stomp out. The Amiga was a culmination of that innovation, featuring software and hardware innovations that we didn't see on the PC side about 9 years later.
We don't know how the world would have turned out if Microsoft wasn't there to "unite" us, and I don't think I'll be sending a thank-you note to Microsoft for their selfless efforts.
I have been a pro-Free Software guy for a long time. I got started with it in 1993. Before that I was a DOS/Windows user. I have come to love the community. It is so easy to find passionate people who really care about the code and their craft.
That is one of the things I don't understand about the Microsoft crowd: No passion. It is very rare to meet a Microsoft developer who is passionate about his tools. They are all just tools. A means to an end. A pay check and something to do between 9am and 5pm.
In the free software world we have epic debates over Perl vs Python or vi vs emacs or Linux vs BSD or Gnome vs KDE or..or..or..ad infinitum. No shortage of passion or causes here. And the people with passion really know their stuff all the way down to the nitty gritty details of the code. But I have never come across two windows guys in a bar passionately extolling the virtues of their particular choices as I have with free software guys.
Why? Is it because MS just doesn't offer choices? Is it because there is something soul-sucking about programming with MS tools? I have been going to Linux User Group meetings for years and they are great fun. Where is the local Windows user group meeting? I'm not aware that there is one. I just did some google searching. There was a Windows 2003 meeting last April 19th. Sponsored by...Microsoft. At a Microsoft office here in town. Hmm...hardly grassroots. There is a mailing list...with hardly a fraction of the activity of the totally grassroots Linux user group mailing list. And 15 people registered on their website. There are 101 people registered on the LUG's site.
There are a lot of people who code on the Windows platform. So why are they generally so uninteresting?
I find it pretty sad how defensive/angered some of you get, its just software not you're life. Use the tool, don't let it use you.
So you are saying there is no more innovation and creativity anymore? No more progress? Surely you jest?
So you are saying there is no more innovation and creativity anymore?
I wouldn't go nearly that far, but it definitely isn't as vibrant and alive.
Perhaps it's just clouded reminiscing, but I look back at Compute! and similar magazines from the mid-80s, and there was just such activity and excitement. The number of successful uISVs was enormous, and everyone had a real shot at taking on the big boys.
Yeah I agree it was an exciting time. I was no fan of IBM or Microsoft at the time. I guess you could say I was a zealot for Mac and Amiga even though the term wasn't really used. I could not for the life of me figure out why everyone couldn't see these machines were so much better than the PC and DOS.
The only point I was trying to make was that regardless of the intentions of Microsoft, I think society and technology in general benefited from the unity they provided...er...sold to us.
Hi 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.
While I agree that MS pumps out new IDE's and versions of the framework at a break neck pace, I don't feel that it's necessary to convert my code everytime a new version of the framework is rolled out. Perhaps web developers face challenges there that I don't on the desktop, I don't know. But I can you that I currently support apps in VB6 , .Net 1.0, 1.1 and 2.0 and I don't have a problem with that.
I guess I just wonder why you say something like "Sometimes, you wonder if choosing an environment where things change more slowly isn't a better long term evolutionary decision."
The VB6 environment has been static for 8 years. So far there's no reason to change other than the fact that you could do things better in .Net 2.0.
I think that jaynicks hit an important point: this isn't a healthy industry right now. Microsoft seem want to dominate everything they can (try thinking of a major IT vendor that they *aren't* now competing against), and they often seem to be more about squeezing customers or putting others out of business with lower cost clone products, rather than being innovative or useful to their customers. It's unhealthy and has had weird effects, including pushing lots of disparate groups and companies towards the opposite corner. To be pro-Microsoft these days I think that you have to close your eyes to a lot of unpleasant technical and ethical issues.
I've used Microsoft products my entire life, and much of my work still involves Microsoft stuff like Windows and .NET, but I've found the air a lot cleaner on the Linux side, so that's where I now spend as much my time as I can. It's not about the rate of change (Open Source moves faster, especially at the leading edge), but about being able to be enjoy what I do, without the screw-or-be-screwed attitude that Microsoft senior management seem to have.
"Can you buy OS X to run on hardware that isn't Apple's? "
Why in the heck would you want to? We've seen the kind of stability that leads to with Microsoft Windows for the past 10 years. Do you want to be able to run Tivo on your toaster? Do you want to upgrade your cars computer? Why wouldn't you want to run an OS that is tuned to run on the hardware?
I'd love to see an MS branded laptop or desktop, provided they went for quality manufacturers and not "Uncle bobs NIC-a-torium" or "Hard-drives-r-Us". Look at the Xbox and Xbox 360 as examples of what you can do with MS software when they control the entire machine. The graphics on the 360 blow away any Pc except the ones running $700 pro graphics cards.
really 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++).
"Sometimes, you wonder if choosing an environment where things change more slowly isn't a better long term evolutionary decision."
I'm glad I scanned through the comments first. Martijn Fassen's comment largely encapsulates what I was going to say, so I'll just add this little bit:
Much of the rapid development in the open-source world is in optional frameworks, libraries, and so on. Rarely does anything spring forth fully formed, and even when they seem to, they usually have been percolating in obscurity for a while. The deeper you go down the stack, the more slowly things change, with loose coupling between layers usually being a design goal and the primary basis for backward and forward compatibility (ie. you can usually replace a layer without disrupting things above or below).
Microsoft's stack, by contrast, is tightly integrated for both good and ill, with *binary* compatibility being the primary basis for backward compatibility. This makes big-bang releases inevitable, as well as forced migration off of technologies 2-3 releases ago.
This means that in Open Source, while you are usually not forced to adopt anything, and old code will stay useful for a long time, if you do want to remain current, there is always something new to learn. Change is constant.
Whereas, with Microsoft, you only need to change your stack every few years, but you *must* change your stack in lockstep (relatively speaking) with the rest of the industry, and much of your existing investment in tools and code will be obsoleted. Change is episodic.
Emacs 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.
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.
You can slice and dice Microsoft any way you like. The lets be friends approach has been tried and it failed. The Borgrosoft either assimilates or renders irrelevant all who snuggle up to it. Not out of mallace (at least not that we can readily tell) but simply out of the volume of stuff it spews.
Borland is the best example of a little guy with great tools who have snuggled up to MS. The Delphi language has been a huge technical marvel for decades. You dont have to look far to see what happened. Microsoft hired a new architect for Dot Net, C# and company. Guess who? The guy who invented Delphi! So for those who love the IDE, and the C# language, and all the stuff that makes you want your Microsoft, say Thanks Borland.
Hey Jeff, You're my hero for saying something which I completely believe in. There are too many fanboys in both camps and for someone to say, hey im Neutral and proud of it, is a great thing! Good on ya.
In all the Microsoft bashing, I still haven't seen the most damning conviction mentioned -- they are convicted software pirates. Almost as bad as the monopolist conviction in the US. Fortunately for them, the conviction was handed down in the first week of September of 2001. It got kinda lost in the news of September 11. Can't find a link right now -- French court, imaging software....
I can understand Microsoft but I expect and want more and more (read better) things. It's 2007 now and the backward compatibility is a good thing. But how compatibly are windows anyway? Are they dragging some dead horses? The way or technology to solve it can be different. Apple has often resortet to emulators for each major change and that I think is a very elegant solution.
What is "C:" anyway?
I belive it started as a way to access disks in CP/M ano 1976, then copied in DOS...and is still a fundamental disk mounting strategy in windows, and I belive in Vista too.
But I can imagine microsoft and others have the same problem between single problem projects and general problem projects that I often see. I often see that one only work on single problem projects that are "defined" by some requirement/goal and a generel problem (or improvments) are really never because there are now orders/projects planed for them. So one wait until there is a breakdown in design due to too many minor changes that has moved the "center of gravity" that was designed in the first place.
I don't hate Microsoft. Most of their programs are excellent (Visual Studio, all the office programs, etc.). The only thing that annoys me is Windows. Microsoft makes most of their profit on office and other programs, not Windows. That provides little incentive to really put a lot of time and money into it. It also has stayed too backwards compatible over the years. That turns its code into a 3.2 GHz disastrous piece of spaghetti code. I find Win32 the most inefficient and time consuming thing to program. If it wasn't for .NET, I probably would have just given up on Windows development.
I like to post here to be enlightened by the wonderful readers here so once again, I'll ask a question:
When people are talking about the 'microsoft stack' and all of the tools that you're 'forced' to use to program software for windows, are they not considering things like cvs (I use tortoise but want to get vault), unit testing (NUnit), profiling (ANTS) and all of the libraries/tools around (for instance: all of the things that all of the codeproject.com newsletters try to sell you) to be non-microsoft; or at least not dev tools?
Mike Gunderloy said:
"I still think Microsoft makes a lot of superior tools, and if I were choosing an IDE purely on technical merit, I'd still be using Visual Studio. Unfortunately, I think that sort of thinking is long-term counterproductive while the company remains a threat to the very profession of software development (and yes, I mean that literally). I've developed that point in somewhat more depth in other posts over at A Fresh Cup so I won't rehash it here."
So I scanned all of the posts over at your Fresh Cup site, Mike ... and I'm not really seeing much of the nuanced view. You basically state that you think MS is a threat, mention the ribbon example and in one case link to another site with a chat transcript about a more-complex .NET ... but I must have missed the real case about MS being a threat in the long term. Most of the Fresh Cup site is links, progress reports on your growing proficiency with the non-MS tools, or musings about business opportunities.
I'm not trying to be snarky here, or start an argumentative /.-like thread or anything. But I suspect there are a lot of people who'd like to know your 'nuanced view' and where it comes from.
Something to think about, if you find a few minutes to write in more depth.
Scott: NaNt is good too. I'm not saying that it isn't. But Microsoft is competing with open source with MSBuild. The cleanest most simplest way is to use what is already there. MSBuild. Why install something else? (See Jeff's new dev machine setup)
MSBuild can take a solution file and make a project file out of it, then compile it! All with a simple command.
For a decent take on MSBuild, check out Sayed Hashimi's website: http://www.sedodream.com
In particular regarding solution files: http://www.sedodream.com/PermaLink,guid,2a926fd2-70ce-4b95-a489-2d6aa24bc7da.aspx
But I didn't want to go with a third party tool to wrap around the .NET framework when the framework basically had Nant, I went with straight MSBuild with custom tasks that I created. Several of which handle encryption of web.config files during the build, and there are several that are already out there that handle VSS, SVN, CVS, IIS, ASP.NET, XML and much more. (http://msbuildtasks.tigris.org/ - Open source by the way...)
Personally, when it comes to unit testing I like NUnit better than the MS testing tools! It's something I'm comfortable with. That doesn't mean I think MS has unit testing wrong.
It's still a matter of which tool works best for the job, and which one do you feel the most comfortable with. They are all still just tools, and they pretty much all accomplish the same thing. In reality, one isn't really any better than the other. Some maybe more performant based on coding practices, but they are all still the same in reality.
When you look at an OS or development environment and its tools, its all based on a comprehension level for the user. Which, as a developer, you are a user of those tools and the surrounding enviroment. Some people "get" Java, some "get" C++, some "get" VB, some "get" SmallTalk, some "get" [insert language here]. It goes on and on and on.
Everyone looks too hard at the language/OS/enviroment of their choice and begins to defend something that is a wrapper around the same thing everything else wraps around. A piece of electronic equipment that computes, stores, and displays information. Every language does the same thing. It computes, stores and displays data.
Remember, a Schwartz is still a Schwartz.
I'm starting to work more with OS X and Xcode. It's nice buying a machine and having the whole development environment on the disks with the computer (it's not installed by default, but it's there for free).
I found Textmate is also a great (and pretty cheap) editor. Add Eclipse for Java work and these tools provide a great development environment and the only cost was $49 for Textmate.
I develop with microsoft tools but have an anti-microsoft bias. Why? Because much as we hear about how important developers are to microsoft, this is true only to a point. You pour your heart and soul into developing a useful application and if you are too successful you find that almost everyone is using it. But then microsoft notices the same thing. If it is used by everyone, shouldn't it be part of the core operating system? Or shouldn't microsoft get into that market? And you find your product/technology - perhaps one you were instrumental in developing - usurped. How can you feel good about working in that kind of eco-system?
You either love Microsoft and use exclusively Microsoft
products, or you hate Microsoft, and you vow never to use
any of their products ever again. There's nothing in
between. No middle ground.
I've seen the MS-only type a lot. In fact, I've just interviewed and rejected the application of a "senior" .NET developer because he does not know what NHibernate is. IMO, most developers who claim only MS stuffs are good or only non-MS stuffs are good are just making excuses for their inability and/or unwillingness to explore things beyond their comfortable technical zone. Either way, obviously not good developers.
@Tracy R Reed
"...debates over Perl vs Python..."
Debate is good but the constant me vs them is very annoying. I dont care what your tool/language can do or where you got it from, or how much better/moral you think it is. I more interested it what you wrote with it.
I almost spit my coffe out while reading that, you take it way to seriously. I have talked about non-'free' eg public domain(the only truly free software), but software is not a life style, it can be part of one, but i would not expect to see any extolling. I just don't understand your method of thinking.
"You either love Microsoft and use exclusively Microsoft products, or you hate Microsoft, and you vow never to use any of their products ever again. There's nothing in between. No middle ground. Why does it have to be an all or nothing proposition?"
It doesn't. I neither love, nor dislike MS products. A lot of them are very good and I use them frequently (Access, Word, Excel, etc.). I also do a lot of work in Oracle. In my day to day work life I frequently use a combination of Oracle and Microsoft technology together. I like Oracles database for large enterprise databases. I like MS's front-end tools A LOT better than Oracles. We often put a MS face (VB forms, ASP webs, etc.) to an Oracle rear-end. Works well here. Guess I'm the very definition of "middle ground".
Thanks to everyone who pointed out Python's IDE to me. I was pretty much exclusively a Linux (and other Unices) developer from 1995 to about 2003, but I've been mostly a .NET dev since, so I'm a bit out-of-date.
All I was saying is that I personally prefer the integration of Visual Studio 2005 to the Emacs/gcc/gdb/make/man toolset that I used to use, and have a hard time imagining willfully switching back. But that's just personal preference; arguing about the Microsoft development environment vs (anything else) is like arguing with someone over why they don't like asparagus.
@Kuerwen: Are you really arguing that competition is bad? I think all Windows users should be very, very happy that Macs and Linux exist to provide at least some small amount of competition to Microsoft. I loved the era of Amigas and Ataris and Macs. That's when Computers really made progress.
Well said, I've thought similar things in the past but never read anyone to put it so well.
Sure, programmers who use Microsoft tools are on "the same side", and there are even folks at Microsoft itself who are making positive contributions --- Jim Hugunin, Simon Peyton Jones, maybe Anders Hejlsberg. But Microsoft as a company is going out of its way to make software development difficult (by introducing deliberate incompatibilities) and legally risky (for example, with generalized threats of claims of infringement of unspecified patents, as in the Novell-Microsoft deal, or apparently with look-and-feel claims in this ribbon thing).
If you pledge allegiance to your craft of making software, then you are declaring your dedication to free software, by making it easier for everyone else to develop software. An alternative is to pledge allegiance to some particular vendor --- Sun, or Microsoft, or Cisco. But the principle of free software is all about allegiance to your craft, and not in some exclusive us-versus-them way --- it's about opening up the craft to everybody.
The reasons people are unhappy with Miguel include suspicion that he's trying to lure unsuspecting free-software developers into waters mined with Microsoft patents, and disagreement with GNOME's general anti-user-empowerment philosophy. For the most part, it's not that they think IDEs are evil or some crazy nonsense like that.
"Just take a look at the stack I have to install on my development machine to do development work in .NET 3.0:
* Windows Vista
* Visual Studio 2005
* Visual Studio 2005 Team Explorer (source control)
* Orcas Extensions for Visual Studio 2005 (WPF WCF project templates)
* SQL Server Express SP2
* Visual Studio 2005 SP1
* Visual Studio 2005 SP1 Update for Vista
* ASP.NET 2.0 AJAX Extensions 1.0
* Expression Blend "
And then your OS dies and you have to start all over again.
I"m SICK OF IT!! Open source, Open standards now!!
I can't afford to "get my feed wet on both sides." My work involves PHP, Apache, and MySQL. To test the water on the other side, I would need an XP (or Vista) license, a MS SQL license, and Visual Studio (to learn ASP). Rather than pay for these licenses - just to see what advantages and disadvantages MS offers - I have to go with legally free software.
Exactly. I'm a soft development student in college; FOSS is my friend for a few reasons, but the price is the biggest.
Just last week I was down at the school store and I found out that I could get Microsoft Expression Studio for $100 (student price through school) when it goes for $600! I said, well, for $100 for the studio version I'll give it a shot.
If it were $600 for students as well, I'd only ever encounter it if my future employer was paying for it. I have an eating habit to support, not to mention a more important hardware habit!
It's just a matter of freedom...
Real _great_ developers are not generally against some platforms, they just use what is more comfortable for them.
So you cannot say for sure that Microsoft, or Sun Java or whatever you want is better then something else...
Personally I'm more comfortable, and quickly if I use vim, ruby and my Linux box.
You can use whatever you want, it's your freedom.
IMHO people that just speak bad about something they are not good developers or they are not at all and they have nothing to do then speaking bad about something.
I have felt the same pain on many occasions and thought the exact same thing. But ultimately I feel that it is the same as two carpenters arguing which brand of hammer is the best, an outsider would want to smack both of them in the head and tell them it doesn't matter.
Nostalgia for older systems is cool, but older systems were incredibly simple and a text editor and compiler was all that was needed to build anything. But the modern world is multi layered and involves servers spread across a company (or the planet) and the resultant complexity makes the job 100's of time more complex.
Using multiple tools allow you to mix and match pieces to achieve the best fit and I am trying to understand your argument regarding wanting fewer applications. Fewer applications = less choice and more lock-in to a technology doesn't it? I'd say if you could find one magic program to do everything for you, you would be locked into it forever.
Cost is not really an issue. You can download Express versions of MS software for free, and host it on a free .Net run able. The only thing you really have to buy is an operating system, which is certainly not going to break the bank.
Both sides have some pretty good arguments and could learn from each other. From my experience a great developer is a great developer, and can be equally great using MS or open source, they can create open source using MS tools and technologies. It's a mindset more than a rule.
I have almost 30 years experience in the industry now and I have gripes about both sides of things. I fully agree with Jeff's assertments about Bill Gates and company but I have an equal set of complaints about the other side of the fence.
I have found that when my client doesn't want to pay a dime for the OS, development tools, dbms, or source code, then invariably he doesn't want to pay ME anything either. And being nickeled and dimed down to nothing makes it hard to feed the family.
A lack of a shrink wrap standard makes it harder to install/setup new software. You might argue it’s not that hard, but my clients (and students) are not capable of doing it on their own without ALOT of hand holding. Again, its easy to discount the time you spent learning about graphics drivers and package managers and think its is easy to do, but the learning curver is higher, much higher with linux. The old saying that any idiot can install a package under Windows has some merit.
I worked with a package called GAIM a year ago and the experience was less than positive. It consisted of hacks on top of hacks and stitched together with hacks and wrapped into a massive hack. Eventually we got something working, but I still feel we would have been better off writing the code from scratch. After about 6 open source projects I still haven't found any source that I would proudly show my friends or co-workers, but I imagine there is some out there.
Support can be nasty too. When deploying an early Java program using Swing we ended up with errors and I proceded to Sun's site and found 400 other developers experiencing the exact same problem as me and could not find a single answer. 40 hours later I determined I had to instantiate an empty JavaBeanInfo class in the applet to make the web browser happy (I will never, ever forget this) because Sun and Microsoft were fighting over some obscure API item. What frosted me the most was that Sun knew everything about this problem and refused to document it or post the solution to screw over any of the devs using IE and force them to use Netscape.
A co-worker convinced management to move to a php/java/linux solution for a particular project and after a power outage we discovered that the linux server hard drive had scrambled itself and we ended up losing our source code versioning system/ code repository. Yes it was backed up, but it took the techs 4 days to get everything installed/running again...
So in the end I feel like you might be suffering from the grass is greener syndrome and that the developer is going to have problems no matter what side of the fence you are on. And that a good developer will survive in spite of the difficulties and produce good software on either platform.
The bottom line is this: Microsoft can go bankrupt or be split up.
Open Source can't.
If an organisation of developers gets attacked, the source and tools (which are freely available) coalesce around another group (or the same group wearing new shirts).
This has happened many times beforehand, and I see no reason why it shouldn't keep right on happening.
There's also control. Open Source can fork, and does, whereas if a Microsoft manager makes a dud decision, you're stuck with it. It works the same in politics, for example, The Inquisition versus the Reformers.
Freedom comes in many forms.
David E, on being "nickel and dimed" to death, I've found that thbis can work for you - or at least, it works for me.
I present two situations, one in which we install MS-only, and another which is FOSS based. The licence costs kill any decent-sized (or even relatively small) network off relatively quickly, from the MS perspective.
That saddens the customer.
Then we point out that if they install FOSS, they can spend a small fraction of the saved $$$ on customising it, better hardware, better comms, and so on. Or in other words, they spend a small fraction of the MS rip on *me* - a situation which I find quite comforting.
WRT licence costs, have a ghasp at the difference in $$$ between supporting a website on Win2k3+IIS+SQL_Server (with all of the connector and/or per-seat licence fees) vs your typical $50 (or free) Linux distro+Apache+PostgreSQL. Even MySQL, at full prices, is an absolute steal in comparison to SQL_Server.
The last paragraph is really inspiring. Thank you for your guidance.
"You either love Microsoft and use exclusively Microsoft products, or you hate Microsoft, and you vow never to use any of their products ever again. There's nothing in between. No middle ground. Why does it have to be an all or nothing proposition? ..."
I've always felt that Windows is a perfectly good platform from which to ssh into a Linux system and get some real work done.
More seriously, I've lately discovered the NX protocol for X-Windows compression and the wonderful free client from nomachine.com. That, coupled with moving my email to KMail on my virtual desktop, was all that was necessary for me to overcome a rather strong Microsoft addiction.
We're allies, not enemies. Friendly rivalry I can understand. But the rabid partisanship that I typically see-- on both sides of the fence-- isn't helping us.
Perhaps you could have a little talk with Bill and Steve about their attitudes towards the Free/Open Source Software community. From the early days, these two have done nothing but attack and belittle our community. And then people wonder why we have an attitude toward Microsoft. When I see Steve Ballmer giving our community the respect we deserve, you'll have my ear on this point. As long as he and Microsoft's top management continue to treat our community in a hostile manner, my teeth remain clinched, and my sleeves rolled up.
Whatever Microsoft's employees may be able to accomplish with the FOSS community, they will always have their upper management screwing up warm and fuzzy fireside chats.
And yes, I started out with DOS/Windows, and moved to GNU/Linux FOSS when I ran into glitches and licensing issues with the Windows platform. Suffice it to say, I don't like spending a week looking through the registry for a reference to some driver that was supposed to be un-installed. Nor do I care to be forced into a software upgrade by a proprietary company. They weren't Microsoft, but I had to leave the Windows platform to find a solution to my problem.
My memories of the Microsoft world are neither warm nor fuzzy, and Microsoft's management doesn't help that. Still, when I see Steve showing a genuine willingness to cooperate with our community, as opposed to being compelled by law to behave reasonably, I'll have a change of heart.
LXer - Linux News
Jon H on May 9, 2007 06:28 PM
"I haven't heard of an IDE better than Visual Studio."
The Zeus IDE: http://www.zeusedit.com
Bravo, Mr. Atwood.
We're all presumably doing this software thing in order to create something of value, often to be used by "regular" people, most of whom don't give a whit about deep technology-industry issues.
I worked for years with Java, open source, and Web standards, then took a job doing C# and ASP.NET. My platform of choice at home is Mac OS X but at work I use Windows. There are a lot of smart people and good things happening in all of these areas, and it's fun for me to be involved a bit in each of them.
In the end, the whole point is to make software that gets things done in an effective, efficient, and pleasant way. All of the platform and technology concerns are real and valid, but it's always good to remember that results are ultimately what matter most.
I've taken a few stabs at Microsoft over the years, but as someone who codes in Visual Studio for a living and still enjoys using vim from time to time I've often told people "use whatever works". With the amount of emulators available and the varying ways different systems can integrate with each other I really don't see the point of politics. Mono itself is a good example of the direction we should be going in. The more integration the better in my opinion.
Many anti-Open Source (anti-OS) and anti-Microsoft (anti-MS) guys didn't dip their foot deep enough into the other platform. You could say why the other platform/application sucks. But do you really think a technology that contributed by hundreds of engineers is really worthless? I don't think so, everyone could always learn new things from the worst application, right?
The separation between OS and Microsoft guys are too far right now. OS hater say Microsoft products give them better job security and money to support family, and MS hater say OS give them more freedom and free software.
I guess most of the people who read Atwood's blog would be geeks. So don't just blindly blame MS is stopping the world to go ahead, or OS is violating laws. Even they are proved, geeks like us aren't care much about it. We care about technology.
We are professional and not politician. I do believe every engineers in computer industry is important to bring the world ahead. So, can we just focus just on technology and not money/business/freedom/family/whatever? Can we just do a very fair technology-wise comparisons amongst PHP/JSP/ASP/ASP.NET...? Can we redirect this blame war to focus purely on technologies?
To move the world ahead, we need to unite together and make the best technology better.
"We are allies, not enemies"
I didn't have the patience to wade through all the comments above, but one thing I find very frustrating as a Microsoft employee is that I am not *allowed* to familiarize myself with what the open-source community is doing. Sure, I can go look at their screenshots - but explore the source code? I would be tainted, unable to contribute to Microsoft products any more. The wonderful world of viral licenses. Sure, maybe *some* of the open source code is OK to look at, but who has the time to read the license and follow up with the legal department to be sure?
I feel the same about patents - I can't look at them, can't ask questions about them, even though they obviously represent a substantial element of value in my profession of choice.
I was a microsoft fan until about 3 years ago. I agree that today's world is much better than if Apple had won out in the 1980's; as much as open-sourcers complain of MS' vendor lock-in strategies, Apple has forgotten more about vendor lock-in than MS will ever learn. However, XP effectively kicked me out. After a year of trying to work with it's temperamantal hardware support, obliviousness to my clicks in the neverending stream of 'do not bother me with this again' buttons, and constant crashes, I dropped Windows for Linux. I cut my teeth on MS QuickC, and I was a MS fan from Dos 2.0 through Windows 98. With four kids and a full time job, though, I decided I needed something that did not require so much constant maintenance. If you're happy with Windows, good for you, but I'm glad we now have choices.
Good article, I agree with you completely about the zealots on both sides of the divide. I've worked as a software consultant (in a coding capacity) my day job focuses on Microsoft technology (initially VB but mainly C# now) but I'll typically be using/wrting in Java and using a variety of Open Source and propriety software that solves the problems I have. I guess it all comes down to "The right tool for the job"
"Can you even name any startups that use Microsoft development tools?"
Yup. CubicleSoft. My company.
VerifyMyPC, MyUpdate Toolkit, and my latest product in the pipeline. Should become available in a week or two.
I completely agree with your article. After reading some of the posts, I all the more think that both camps are often self-righteous in their views.
Concerning the past decisions by Microsoft, Sun, etc., in a perfect world there would be no unethical outcomes, by any company. Concerning being religious, the Christian scriptures states that, "all have sinned." (Romans 3:23) That includes me.
I'm not even saying that Microsoft needs to go out of its way to produce software for OS's other than their own. But, for example, if they provided an open spec of how to implement the equivalent of a java virtual machine for .net (CLR is it?), the open source geeks would implement it and allow .net apps to run on Linux or any other platform that might so desire.
Chip on May 9, 2007 03:39 PM
Just to note that C# is a ECMA standard and is not owned by anyone like Visual Basic. Miguel de Icaza used this standard to write MONO
Like to add that Miguel de Icaza, IMO, is a great programmer to tackle this and should be noted for his work.
I have to comment on those who think the Mono project is 'bad' or that Miguel is being misled somehow - Mono is a very important part of my current development. I'm building a MUD that I compile using VS2k5 that works, out of the box, on both Mono and Windows.
I started as a PHP\MySQL guy because of the expense, but nowadays that isn't even an excuse. .NET is incredible for me, and thanks to Mono, I can now concentrate on development rather than separating out pieces of my code that i'll need to customize for each platform. Mono might not be an MS initiative, but they had the foresight to make it possible for someone to pick that up. Could you do that with Java before? Probably, but it was never as accesible - which leads me to my final point.
I don't care, either way, about open source or MS only, but it comes down to the simple fact that Open Source folk are living in a bit of a dream world. In theory I like the way Open Source works. I've beenfitted, and learned, a tremendous amount from it - however for it to become the standard there would have to be largescale SOCIETAL changes. Forget companies, forget platforms, think about the end user. People don't want to have to stop and learn about something in order to use it.
I'm a developer, and consider myself a fairly intelligent individual, but the thing that constantly puts me off of, say, Linux, is that it's so alien. If it were just a difference of style it would be one thing, but its more than that - you have to *know* what the hell you're doing to really get the most out of the platform. Someone said that things might maybe change when the younger crowd came into 'power' but the reality is that it would still be only for business.
Lets face it, open source is for geeks and only for geeks. Normal users vastly outnumber us and Microsoft\Apple are the answer for normal people. Normal users don't want to have to pick between dozens of open source, compatible, pieces of softare - they want to look in one place and get that.
I'm almost hoping that one day Linux and open source do take center stage, i'd love to see how these developers plan to eat and feed their families. I'd love to see how these developers deal with the fact that others might be using their code to save themselves a bunch of time and make a bunch of money.
Most software developers and users are neither Microsoft lovers or haters. They don't care as long as the software/technology is useful to them. It's just that those in the extreme (Microsoft lovers or haters) are generally more vocal and we hence notice their sentiment more.