So it's not about incremental increases in product quality, it's about responding to problems quickly and promoting new core developers from the community, rather than through Microsoft's opaque hiring processes.
I'm relatively new to web development, and I've never worked in an enterprise environment using enterprise software/frameworks, but I honestly cannot understand why anyone given the choice and assuming the cash is the same would choose to go the MS route. I admit naïveté.
A lot of reasons. The big reason is that for a LOT of people, open source isn't all that compelling as a feature on its own. For certain classes of people its the most important thing in the world, for other people it doesn't add much value. And for maybe an equally large subset, it's actually a negative.
At the end of the day each person/org has to decide what is important to them and optimize accordingly. For you open source may be the most important thing in the world, in which case, the choice is obvious. But there are millions of people who have made a different decision.
If a lot of people don't go with that route is mostly because of inertia or just bad uninformed choices, the idiotic kind of stuff that can drag your company into the ground.
It's not the license, it's the side effects: the ability to fix it yourself, community, popularity, documentation available (thanks O'Reilly) and support (the real deal).
I'm trying to picture what would happen if a customer calls in the middle of the night because the shit hit the fan and I blame it on Microsoft. As it is right now, the small company I work for has hired a kernel hacker and a contributer to Mysql that used to work for Sun, while also maintaining a healthy relationship with some of the core devs of the tools we rely upon ... we can fix and extend anything in our stack.
Can Microsoft provided support top that? I don't think so.
Is it? First, you have to define "similar".
Would you rather have Quake (open source) or Black Ops? Both shooters with zombie like monsters.
Is MySQL the same as the SQL Server? Sure, to the uninitiated they look the same, but there are lots of little differences that, depending on your goals, can make one vastly more valuable than the other.
Would you prefer Mono or the CLR? While Mono has an enthusiastic and strong dev community, I bet dollars to donuts that even among informed devs, most would chose the CLR for the job at hand. And I bet even among informed CIOs they'd prefer the CLR for their shops.
OpenOffice Calc or Excel? Again, depending on your usage scenario, there are things you can do in Excel that simply aren't there in a reasonable way in Calc, although again, to the unitiated they're both spreadsheets.
My point? You rarely have the option of choosing between a closed source version and open source version of identical products. What you do tend to do is to look at two (or more products) and figure out what addresses your need the most, with open source being one of many metrics. When I decide which spreadsheet for my org to use, of course we consider OpenOffice, but the fact that it is open source has very little impact on our decision. The probability of us fixing a bug in OpenOffice is about equal to the chance that the bug fixes it self through the right sequence of bits being affected by cosmic ray. But maybe for you the fact that you can go and implement missing features in OpenOffice is important.
"Is it supported? Who supports it? Is the support 24x7?"
$10,000 a month, depending on the applicatin, is chump change.
Although, some people do appreciate the value of open-source when a vendor takes two months to solve a problem in their proprietary mess of 'software solutions'.
GCC which has probably 10x more people working on it than
any commercial compiler
Citation?Personally I think you pulled that figure out of your ass; especially since the GCC codebase is a mess (on purpose), it's been stable and good enough (and arguably stagnant) for quite a while and all attention shifts lately to LLVM.
With relatively small developer teams, they've increased in
quality as fast as any open source projects I know of
When speaking of both Silverlight / ASP.NET MVC ... they are copying other projects. And we aren't talking only about high-level ideas here, but actual implementation details.They are great followers, yes, but what did you expect from a company with virtually unlimited cash?
And we aren't talking only about high-level ideas here, but actual implementation details.
Huh? What implementation details? Citation? Silverlight looks fundamentally different than any other product, except WPF. I'd love to see who their copying implementation details from.
Back when my company started using Silverlight, I was surprised to learn that none of my coworkers knew it was almost the same as Adobe Flex. I think this sort of ignorance about the greater world of programming is exactly what the original post is talking about.
I think you underestimate the amount of people who have used Flex at some point in time.
This is like complaining someone's market share is stagnated around 99%...
As for "working on", it has two interpretations. While I certainly thing GCC has less patches per month accepted into its codebase than clang, there are a whole lot more people compiling C code with it. I would not be surprised if we discovered more code is compiled with GCC than with all other C compilers combined.
> The classic example is GCC which has probably 10x
> more people working on it than any commercial
> compiler, yet the Intel and MS C/C++ compilers
> generally kill it.
Oh? Interesting; I thought that gcc was one of the better ones. Could you elaborate?I think your skewed world view is apparent here. MS and Intel certainly didn't come and say, "One of our top priorities is portability. How can we target our compilers to platforms that we have nothing to do with? Oh wait, GCC already does that!"
Of course not. Honestly, GCC has been an afterthought for most of the history of C/C++. It's only now that it is effectively dead that GCC has started to become competitive. MS was focused on Borland for years (and it actually didn't generally revolve around perf, but generally build throughput). Likewise, Intel was focused on SPEC against xlc and other architecture specific compilers.
And as I said in another post, they (GCC, Intel, MS) have different priorities. If your goal is to have a somewhat portable C/C++ compiler then GCC is the way to go. If you want the best perf/throughput on a specific target then MS and Intel are your best choice.
But with that said, I'm sure you know, that's not really relevant to the discussion at hand :-)
If we narrow the target enough, all comparisons become interesting. I am quite sure GCC will blow both Intel's and Microsoft's compilers out of the water when it comes to compile code for IBM mainframes. I am sure it's much better than Intel's when it comes to target my phone's ARM processor.
For me the Intel compiler makes sense in certain specific applications (many of my servers are not even x86), but the Microsoft compiler is absolutely worthless.
For example, code size, throughput, debugging, and optimization are all places that the Visual C++ compiler is superior than GCC. How many Windows games are written with GCC? How many top-tier Windows apps are written with GCC? If I'm writing a Windows C/C++ application, I'm going to either use Visual C++ or icc. I'll choose icc for code with lots of compute intensive loops or vectorization opportunity. VC is better when icache is an overriding concern.
Now that may not be what you do, but to say, "Who in their right mind writes programs for Windows?", I think says more about you than it does about the respective compilers.
Still, there is a lot more to programming than desktop applications that run on x86 processors under Windows. And embedded ARM processors outnumber desktop x86s by a large margin. I carry at least three of them with me at all times.
And Visual C++ targets ARM also, and has for years. One of the reasons I've heard bandied about as to why WP7 first party apps are so fast and responsive is because of the quality of the Visual C++ compiler. :-)
But you surprised me now: wasn't WP7 managed code-only? Has MS decided to allow native app code?
Regarding WP7, 3rd party apps are managed. But the core OS is native and 1st party apps can be native. For example, IE and the mail app are both native C++ apps.
Honestly, I think allowing 3rd party native apps would be a mistake in general. Although I'd create a partners program where you require devs to pay $10k and then go through a certification process, which allows them to ship native apps. Basically its the XBox model. Indie devs use managed code. Apps that are willing to go through the more expensive process get native access.
Why? Native apps introduce a bunch of problems that are a pain to deal with. For example, there a bunch of security issues and stability issues that native apps introduce. Additionally you have to target native apps to an architecture. It may lock WP7 into ARM, due to the ecosystem, and block it from moving, for example, to a new Intel architecture.
In any case, fair enough. I tried to detangle the contributors, and while its easy to do for language, it's harder to for target. I suspect 90% of the commits are ARM or x86/AMD64, but w/o spending more time than I care to, it's hard to know.
With that said, you'd still expect, with GCC long history of being open source and open source being such a clearly superior dev model to have surpassed most commercial compilers, but that hasn't been the case in perf. Now maybe one might make the argument that perf has never been the metric for gcc, but it has always been portability. But that would also lend credence to why open source is not an ideal model for many companies -- your (the open source project's) metric of success is not the metric that we care about.
But he does miss the boat on a few things.
One thing that I do think he discounts too much is the surprising effectiveness of small focused teams. In the same way a small startup is more effective than a lumbering machine, a small team of devs is often more effective than 1000 loosely organized volunteers. The classic example is GCC which has probably 10x more people working on it than any commercial compiler, yet the Intel and MS C/C++ compilers generally kill it. Not to mention other less popular compilers like IBM xlc and DEC's Alpha compiler.
The contribution list to RoR is impressive, but the quality of the product doesn't scale with the number of contributors.
I think the question MS has to ask is "do we forego control to possibly get an incremental increase in product quality?" What I've found interesting is the speed at which Silverlight and ASP.NET MVC have improved over the past few years. With relatively small developer teams, they've increased in quality as fast as any open source projects I know of.
The other thing he gets wrong is he conflates framework developers with application developers. And I think this causes him to see a skewed world-view that developers are "waiting" for Microsoft. In general, app developers, are not waiting for MS to do anything. You have tight deadlines and are trying to find the best solution today. You take a snapshot of the world right now and pick the best solution (or starting point). You don't have the time to ponder what might be available in eight months.
Most ppl on the MS stack are app developers. Always has been the case.