Virtues of Monoculture, Or Why Microsoft Wins 703
blackbearnh writes to ask, "Why does Microsoft win the development environment war so often, when we all know it's a lifetime lock-in to Windows? Perhaps it's because the open source community offers too much choice." From the post: "Microsoft offers the certainty of no choices. Choice isn't always good, and the open source community sometimes offers far too many ways to skin the same cat, choices that are born more out of pride, ego, or stubbornness than a genuine need for two different paths. I won't point fingers, everyone knows examples... The reality is that there are good, practical reasons that drive people into the arms of the Redmond tool set, and we need to accept that as a fact and learn from it, rather than shake our fists and curse the darkness."
de facto standards (Score:3, Interesting)
Nothing to see here. Market forces and ease of use win over features, stability, or quality.
Re:+5 (Obvious) (Score:4, Interesting)
People feel overwhelmed and decide not to choose anything.
That is basic psych.
http://www.google.com/search?hl=en&q=too+much+cho
As if choice is inexistant on MS platforms (Score:4, Interesting)
Some examples of choices developers have on windows platforms:
* IDEs - visual studio, eclipse, netbeans, dev-c++, codewarrior, just to name a few I've used
* The various
* Databases
* Webservers, IIS, apache, or something else?
* antivirus, Vista tried pretty hard to end all of these though.
If you're just moaning about how Microsoft has a large vertically integrated set of tools, well, there's Java. Nobody does this, because its stupid and they have the choice not to.
Lifetime Lock-in? (Score:3, Interesting)
It's not a lifetime lock-in when they discontinue your entire development environment and language. Yep, by discontinuing the VB6 language they saved us from that terrible lock-in. Now we are free to re-type those millions of lines of code (and years of effort) in another language on any platform we like. How thoughtful of them.
Maybe (Score:3, Interesting)
Maybe Microsoft actually copped on to the fact that businesses wanted tools to build the apps they needed while the Open Source community were patting themselves on the back about how cool and fantastically leet they were for having text editors and shell scripts.
Whats interesting is that the two current leading Java Open Source IDEs (Eclipse and Netbeans) are both tools which started out life intended as commercial offerings but were donated to the community by IBM and SUN.
Re:FAQ item (Score:5, Interesting)
The difference i think is management, which Microsoft has, however flawed, and open source as a general rule, does not. Even within single projects there is useless argument, and forks for ridiculous reasons. In most cases, the required action is for one party to be kicked in the ass, hard. There are RARE cases where the majority of the community sees something going wrong and forks, such is the case with X.org.
Then you have cases like gnome and kde, which each develop totally redundant, sometimes useless ways to do the same thing, sometimes neither one does it well either.
Over and over again i see MAJOR parts of the system literally missing, like a device manager, while other parts, like file managers or office applications (openoffice, gnome office, koffice) are developed 3 or 4 times over in parallel by groups who either refuse to use code from another group simply because it has a G- or a K- in front of its name, or neglect to even look around to see if someone has already coded a similar app that could be used and improved.
In all honesty, gnome and kde have driven me away from linux for everything but core server use, and my next laptop will be a Macbook simply because i'm tired of it all.
The truth about Kdevelop (Score:2, Interesting)
Things to learn from Windows and OSX. (Score:4, Interesting)
Oh, it's helpful, all right. For instance, the only reason we've not released a port to linux - a free version, of course, we'd like to give back to the community - is because there is no standard GUI layer. It's a hodgepodge of these widgets and those widgets, this license and that license (really meaning, these liabilities and those liabilities.) Windows provides all that. Free. Built in. Plus a large market. So we developed for them. When Windows became intolerable because of activation DRM, we moved to OSX. Nice GUI layer, free, built-in. development proceeds apace, while linux runs servers. Others may have other reasons, but those are ours. The day the linux core gets BUILT-IN windowing and graphics, and I do NOT mean just xwindows or xwindows plus yet another sometimes-there and restrictively licensed widget set, is the day we make a port that we will release to the community. The community can then, of course, use our stuff or not as they see fit - but as is, it's not a choice. That's been the unanimous decision of the linux community: no coherence.
I want to say one more thing. The existence of a standard GUI layer in NO way means that you can't still have everything you have now. You'd just have one more thing, something people could write to as a default, even just as a fall-back.
That's my 2 cents.
It may be interesting to some that a lot of folks (Score:1, Interesting)
So folks who talk about the advantage that a good IDE gives you as far as productivity most likely have never worked on anything bigger than a few hundred files in a project.
That said, there's a system now that could change all of that. It's called MSBuild and it ships with Visual Studio. For anyone who does command line builds and whose codebase is mostly managed code, I highly recommend looking into it.
Re:As if choice is inexistant on MS platforms (Score:2, Interesting)
As for why you would use F# instead of OCAML, IronPython instead of Python, Ruby.NET instead of Ruby, etc, is for interoperability. Because the languages are implemented to compile down to IL (.NET's Intermediate Language), they can be used with any other .NET language. For most people it's just a novelty, but it's still cool in a geeky way. BTW, this is no different than building compilers to target languages to the Java VM [robert-tolksdorf.de], like Jython [sourceforge.net]. Why would you use Jython rather than Python? Because it can more easily interact with Java components and other languages compiled to the Java VM. Not a big deal if you're only doing Python work, but invaluable if parts of your product are written in Java and it makes sense to build other portions with Python.
Re:Things to learn from Windows and OSX. (Score:3, Interesting)
Preposterous. (Score:3, Interesting)
The percentage of non-FOSS which is documented and the percentage of FOSS which is documented are pretty similar in my experience. Perhaps you are unaware of the incredible 95% of software which is developed commercially, but which is not sold in a shrink-wrapped box in Circuit City. Many companies have internal IT departments which couldn't code their way out of a paper bag in VB, let alone document it. Go read the daily WTF [worsethanfailure.com] if you think I'm lying.
"s/he might be wrong but at least the product is consistent, and not designed by a committee as it sometimes happens."
Andrew Morton. That's a name I can think of when I think of someone with vision for a particular FOSS project which are willing to say when things (don't) match their vision. Linus Torvalds also fits this bill. There are similar names in other projects, but I'm most familiar with the kernel.
"These clones haven't been weeded out by the market, and so many of them are not viable - but they are out there,"
The weeding doesn't occur at the store level, it occurs at the reputation level. All FOSS stuff is staked on reputation. If you have a high reputation, you are going to be used more and included in more distributions. If you are a crappy app, you'll never see a real user base. Since the programmer is programming for ego (see the somewhat inaccurate women/baby analogy), the programmer should be motivated to produce better work which becomes more popular. The KDE programmers sure seem to have worked to make sure that KDE is useful. The Gnome programmers have also worked towards some mindshare. Given how people used to choose window managers, but now choose desktop environments, I'd say that these programmers have changed the game wrt GUI interfaces on Linux. That sounds much like a market shift, but with eyeballs and hearts instead of money.
"Effort dispersed, spent on competing projects is ultimately wasted."
Oh, I'm sorry, I guess you're just a troll. Or you simply don't understand what FOSS is.
Definitely (Score:3, Interesting)
Remember when KDE, GNOME, Xfce and Enlightenment didn't share a desktop API? Look now at how Enlightenment reinvents everything using it's own special libraries? While Enlightenment has some distinct advantages over the way the others are designed, it is a DIFFERENT system. Want to install a GNOME core application on KDE? Well, you have to drag in most of GNOME, still. The same in reverse. Install Enlightenment tools on top? Well you have to drag in the rest of the E17 framework.
Install X on my system, and it still pulls in 5 different sound daemons.. yikes, and yikes again. Xine, MPlayer and GStreamer/Totem too. They all use the same libraries after all, but do I need 3 different ways to play a movie?
I personally prefer GNOME and Xfce if only because they use the same GTK toolkit - however I personally loathe GTK and the GTK API. I don't want to even get started in Enlightenment.
So, when you sit down and use Windows, what do you do? Well, you're pretty much stuck using Windows. And for all intents and purposes, there is a strict set of toolkits and APIs they provide for you (DLL hell wipes that off the map though). There is no "which API do I use to open a window and add a button" if you are using VisualC++ and reading the documentation, it will pretty much railroad you into one choice. But there ARE other choices.. they are just less obvious and less relevant.
I think this is why I like the concept of RAD stuff like Ruby On Rails, however I do hate Ruby, and Python, and I never got into Perl in a big way, and while I'm stuck with PHP, it's because it's closer to C++, which I absolutely love. If I had a choice I'd be coding everything in C++, with a single toolkit, but unfortunately because everyone else makes other choices, I can't.
Does my life deserve to be made this difficult by virtue of the freedom of choice? Probably
Re:Things to learn from Windows and OSX. (Score:4, Interesting)
Seeing as both are available on windows/mac/linux, its really hard to understand why you are saying that there are too many choices. There are two, and they port to all linux distros as well as Win/Mac.
Re:Thanks, we know (Score:3, Interesting)
Re:Things to learn from Windows and OSX. (Score:5, Interesting)
Back to the original question, the reason that so many companies choose the Windows development? It just works. I can install MS Visual Studio, connect to MS SQL Server, pull in web services off of IIS. And it just works. I call developing in a Microsoft environment "pointy-clicky-draggy-droppy". You don't really have to think about too many config files or whether something works together. It may be dumbed down, but as a developer, I don't want to really have to think about configuration, I want to think about code.
My primary development environment right now is Eclipse and Java. I hate it. Why? Too many choices and no way to know which is the right choice. I have to deal with this configuration and that configuration and a few
Layne
Re:Things to learn from Windows and OSX. (Score:3, Interesting)
Mac users don't complain that FireFox doesn't look like a real OS X app, they complain that it doesn't feel like one. If you want to see what I mean, try double-clicking on the address bar, or using any of the keyboard shortcuts for moving around it that work in every single text box on the system except FireFox. Qt apps tend to be just as bad, which is why I avoid them like the plague.
A lot of the reason OS X is easy to use is motor memory. Applications all use the same shortcuts, so your brain thinks 'perform this high-level action' and then your fingers do it without any more input from your high-level brain functions. There is much less thinking 'what key do I press to do this?' than I've found on any other platform. Last time I was using a *NIX desktop, I had three different applications open with three different ways of skipping to the end of the line in a text box (not counting Vim, because I get enough visual clues to expect terminal applications to behave differently).
If that's the case, shouldn't Apple be in the lead (Score:3, Interesting)
Likewise, BSD has fewer software options for most tasks than Linux since it has less development, so why does Linux take the OSS business market instead of BSD?
Note: I don't intend this as a flame at all, I like one of the OSes that this says should do good based on the logic, and I don't like the other. I like one of the OSes that looks like it should be bad in this comparison, and I don't like the other. I'm just saying the arguments logic doesn't seem to add up to me.
Re:Things to learn from Windows and OSX. (Score:1, Interesting)
No one develops new applications for Motif, X11 (directly), Tk, etc any more.
This is one thing that annoys me about OS X. When I'm using, iTunes, MS Office (I don't like it, but OpenOffice sucks hard on OS X, and yes I'm aware of NeoOffice/J), Camino, Eclipse, etc all have different themes and feels. When I'm running Gnome, everything except for Firefox integrates perfectly and looks the same.
Really, it's as simple as:
Linux only: GTK or QT
Multi Platform: wxWidgets or QT.
Linux has lots of monocultures (Score:3, Interesting)
* the Linux kernel (rather than, say, the Hurd)
* X.org (rather than XFree86, which is now dead)
* bash (rather than ksh, csh, tcsh, or my favorite, fish)
* Apache (I had to look at Wikipedia to see if alternatives even exist)
* MythTV (any other Linux PVRs?)
* GCC, and for that matter, most GNU tools
Perhaps usage standardizes on one piece of software when that benefits people, but usage fragments when there are benefits to choice. Doesn't seem like a problem.
Re:Things to learn from Windows and OSX. (Score:2, Interesting)
It's not, however, how USERS want it to happen. Hint: if installing your program requires me to run a compiler, I'm just going to stikc with the closed-source Windows version, and maybe get some actual work done that week.
Re:Things to learn from Windows and OSX. (Score:4, Interesting)
The truth of the matter is, you can easily write a "Linux" application that runs on pretty much all major Linux distributions.
I disagree. The real problems we have with many choices are all because we have a monoculture. Because there is one dominant OS and that OS is intentionally incompatible with other things, fragmentation is an issue. If we had four OS's sharing 75% of the market and another 10 OS's sharing the rest we'd have significant investment in all the major ones and in technologies that allow for good cross-platform development and portable applications so it did not matter which OS you are running as much, since it would preclude your using a given application.
I picked out some carpet a month ago. Like any other decision, I had criteria. It needed to go with two different wall colors and needed to have a pattern to hide the stuff tracked in from outside and the garage. If there were only 10-20 colors, I would have had a carpet that was less suited to my needs than what I did get, since I doubt one of these 20 colors would have been a combination of colors complementary to my walls along with a dark and a neutral to help hide dirt and the like. If you don't like having choices, then just pick from a limited selection from one company or collection. I don't see why this is hard. Variety and competition breed innovation and improvement and allow for a better fit to a given task. It is only when we have a monoculture that the problems appear and one vendor can intentionally make sure you have no choices by making sure floors are either compatible with their carpet or are weird and non-standard ones that do not work with anything other than one specialty floor.
So it is better for a company to have only one or two choices, than many choices to find the best fit for their needs? I'm not sure I understand that argument at all.
I don't know a lot about carpet, but I recently did some research and consulted someone who knew a whole lot. I'm happy with the result. Consider what it will look like in two years given the type of traffic you have. Consider changing trends and what will quickly look dated. Spend the extra money for thick, high quality padding underneath the carpet as that makes a whole lot more difference for the price differential than the cost difference between the carpets themselves.