Virtues of Monoculture, Or Why Microsoft Wins
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."
This really needs to be put in a FAQ somewhere.
Does this author have a valid point? Probably
Is this point, and any relevant discussion, different from the last time this was brought up a few months ago?
Probably not.
Interestingly enough, I had this arguement today with a co-worker. Choice and flexibility afforded by open source and more importantly open standards will pay dividends for companies that think long term. The shrink wrapped mono-culture beat can be the less expensive option in the short term (no retraining, prepackaged apps with ready training and documentation, cheap labor). But, open with lots of choices wins in the long run every time because it gives ownership of IT to the companies that use it instead of the companies the produce it. Freedom and choice may be the difficult choice in a short-term return corportate culture, but the companies that embrace open standards will be the long term winners.
This article assumes that open source developers are aiming at becoming Microsoft like. Maybe they're just in it to make good software: not a profit, not make money for shareholders, or anything that that Microsoft is obviously aiming for. And the article is also using a very narrow definition of "win", one which I'm not sure is possible for OSS to attain.
"Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
The problem isn't the choice, it's the follow-through. Open Source software maintains its momentum as long as there is an itch to scratch. As soon as that itch is satisfied, the work stops. Even if the code is unsuitable for your average joe. Technically, this is where the commercial distributions are supposed to pick up the slack and do the rest of the work. You know, offer an integrated Linux environment. Something to make all that money we're throwing at them worth something. But they don't. And I have no idea why.
:-/
Perhaps the most telling event was when I got a copy of Sun's Java Desktop System. It was a complete SUSE-based distro with Sun's unified desktop on top of it. I forget what the exact problem was, but in order to change a *BASIC* system setting, the instructions required that I directly edit a system file.
Excuse me?
This little gaffe was repeated by Mandrake with its command-line audio setup. RedHat with its inability to automatically handle its own damn package format. So on and so forth. I forget how many times integrated tools should have existed, and... well... didn't. I won't even get into the "broken by design" GUI choices of GNOME.
Now Ubuntu has been slowly trying to push this back; to make Linux a bit more user-friendly. But it's just one distro among many. There needs to be a concerted effort from all companies that SELL Linux. They need to give as good of an experience as they can possibly give. Simply repackaging the same software with a new GUI theme isn't going to cut it. They need to actually spend some money on covering the gaps that the unpaid community isn't going to cover. (I mean, let's be reasonable. They're not getting paid to develop a boring dialog and test flipping the switch 300 different ways.)
The development tools themselves are fine. In fact, Java is pretty well covered by Eclipse and Netbeans. If Linux distros make more of an effort to integrate the (now OPEN SOURCE!) Java into the system, they can make developer's lives even easier. Mono is also an acceptable choice, but the key thing is to get it integrated. Make your commercial Operating Systems FEEL like commercial Operating Systems. Not hobby OSes that have a nice coat of paint on them. In other words, maybe you commercial guys could pull your weight a little? Maybe?
* Ok, you can start flaming me now. I'm sure I've said something that offends distro X fanboys. Bring it on so I can ignore it.
Javascript + Nintendo DSi = DSiCade
...is not because open source offers too many choices. After all, Microsoft's products are still a choice among many other solutions. The reason why much of us still use Microsoft software (to be more specific, Windows, Office, and programming environments related to those two products) is because of a few reasons:
Microsoft alternatives do have their merits. To use operating systems as an example, OS X is a great general purpose OS, and I love the customizability of open-source OSes such as Linux and BSD. However, most software is written for Windows (you're guaranteed to find a Windows software package for almost anything, whereas you'll have to search harder when using an alternate platform), and if you have a Windows problem, somebody will know how to fix it.
I admit, I'm not the biggest fan of Microsoft. However, most of us can't avoid their software, like it or not. After nearly a year of not having a Windows machine, I installed a Windows partition to do class assignments. I don't like Windows, but I need to do what is necessary to complete the assignment. For some people, replace assignment with job and add "to pay the bills."
I don't think MS's monopoly will last forever. But, for now, expect to be still using Windows and other Microsoft solutions. When you are in a lion's mouth, wiggle until you wiggle yourself out.
Keep in mind that monoculture has disadvantages too.
Variety, for example, is necessary for adaptation, creativity and resistance to disease.
Guess what? We all know that. We've tried Eclipse and KDevelop and Glade all your other tools. You have pretty cool languages but you insist on keeping your barriers artificially high by forcing a primitive toolset on everyone so that only the anointed few can develop software for your platform.
Of course one of the core problems is someone like this, who from the article seems like the quintessential "Microsoft sux" type-A personality suddenly realizes that Microsoft (and Borland and others) have been writing far superior development tools for the past ten years that actually increase developer productivity and having great success at it. What an idea! Having to learn 14 different tools to get something done might be good for bragging and leetness, but they kill productivity. In the real world, that kills the deal.
Imagine what kind of killer product you would have if you paired Ruby with a good IDE and a good graphical debugger. Or Python. A good front-end to MySQL that's actually easy to use. Or an admin tool for Apache that makes sense. But "ease of use" is not "leet", so no dice. "We don't want VB in Linux". That's a great attitude, and it will continue to perpetuate the idea that Windows is the only "easy" platform to write software in, with Microsoft tools. There's no reality distortion field here - that's just the truth.
So much potential wasted because of a culture that idolizes unecessary complexity as if it were a badge of honor.
It doesn't require much investment of time to learn the differences involved in dispensing laundry detergent. They are effectively drop in replacements replacements for each other, from a user's perspective.
As are all your examples, actually. The differences lie in taste, not capability.
You've basically demonstrated that you don't get the point in the article at all. I guess that is why this keeps getting posted, over and over again. It's the sledgehammer technique.
Slashdot - where whining about luck is the new way to make the world you want.
Once all of that happens you'll find that, for almost any average user, there is 1 or at most 2 ways of doign things, and all the information online that is easy to find is all relevant to you. Support will be for the 1 or 2 most popular distributions, which will have very standardised configurations that everyone uses. Sure, the hundred different ways of doing things will still exist, and anyone geeky enough to mess with them will find that things are little different than they are now -- its just that most people who aren't interested will never even be aware of all of that. In the same way that most average Windows users are only dimly aware of Linux as a small niche player, eventually we'll reach a point where most average Linux users are only dimly aware of other distros as small niche players. Nothing changes for us geeks, and nothing changes for average users (except the OS they consider "standard").
Craft Beer Programming T-shirts
I prefer Apache since it's free but....
s t.html .
This goes for virtually every non-default configuration of Apache and IIS but here are a couple examples.
Allowing only certain IP addresses to access a website:
Apache -
1. Research on the web how this is done using Google.
2. Find something called "mod_authz_host" and an example of its use here http://httpd.apache.org/docs/2.2/mod/mod_authz_ho
3. Get confused by all the different examples.
4. Attempt to insert "code" into httpd.conf to limit access to certain IP addresses.
5. Test to see if it worked.
6. Research, edit, test more as needed.
IIS -
1. Click a few buttons
2. Enter IP addresses allowed.
3. Test (it works first try as expected since editing was intuitive).
Use SSL:
Apache -
1. Research on the web how this is done using Google (lots of research).
2. Install something called OpenSSL
3. Copy a few files to a windows directory
4. Find an openssl.cnf file that doesn't exist with the OpenSSL install for some reason.
5. Create a SSL certificate using command line.
6. Due to legal/political constraints, download a different copy of Apache with SSL from a strange 3rd party website and replace current copy of Apache that you had installed.
7. Make several changes to httpd.conf file.
8. Install this new Apache as a service using command line if needed.
9. Make several more changes to httpd.conf file (uncommenting LoadModule line, including ssl.conf in an IfModule thing).
10. Copy the certificate files made earlier to an Apache directory.
11. Edit ssl.conf file on several lines to identify server name, document root directory, then also include the certificate path.
12. Restart Apache, pray it works.
IIS -
1. Go to website properties using GUI
2. Click Directory Security tab
3. Click Server Certificate
4. Follow Web Server Certificate Wizard to create certificate.
For extra credit, require SSL connection - In Directory Security tab, Secure Communication area, click Edit, and check the Require secure channel SSL checkbox. I gave up on that for Apache and figured out some way to just forward requests to https (a bit of a hack it seems).
Things just seem more intuitive when using IIS rather than editing conf files and hoping things work in Apache. There is a lot less frustration. It's a shame. Yes I did look for 3rd party Apache config GUIs and couldn't find anything that looked good.
simple, fast homepage with your links: http://www.ngumbi.com/
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.
I've fallen off your lawn, and I can't get up.
I went to bottle shop the other day to buy some beer, to my surprise they had 100 different types, i really enjoyed sampling them all at the time, but today i am sick and bloated.
Just because you can have something doesnt mean you should.
And that is assuming that OSS developpers are a bunch of nerds in their free time, doing software just for fun. Sad to say, his assumption is closer to reality.
Oh, there are thousands of 1-2 man projects on sourceforge done by enthusiasts in their free time. Chances are you haven't even heard of most of them. They also tend to be small projects.
If you look at what's in your favourite Linux distribution, though, it's a different story. Look at the kernel credits some day. You'll see a lot of people from IBM, Red Hat, etc. Hate to break it to you, but they're doing a paid job there. Others may not be employees at such, but got paid/sponsored by a corporation to develop that stuff. E.g., ReiserFS was pretty much paid for by SuSE.
Other programs there? Mozilla? It even got started because Netscape wanted a browser that can stop MS's onslaught onto their business. Then it got bought by AOL, and nowadays it's Google footing the bill. Open Office? Got started as a proprietary project, then bought by Sun. Nowadays it's Sun doing pretty much the whole work, with people paid to code on OOo. It's costing Sun a lot of money. Etc.
See, the F/OSS that gets taken anywhere _near_ seriously these days is the work of corporations. Pretty much it's just a framework for a bunch of corporations to pool their resources into fighting MS. None of them has the resources to challenge the behemoth single-handedly, and some have already lost against the behemoth when trying to "solo" it. E.g., ask IBM what happened to their OS/2.
Where this long rant is going is: of _course_ those corporations are aiming at becoming the next MS. In fact, some of them were the original (near)monopoly long before MS. IBM used to be _the_ name in computing business, long before MS even existed. (And incidentally was just as underhanded as MS. The term "FUD" was first used to describe IBM's tactics, long before MS even existed.) Sun was _the_ name in professional micro-computers. Etc.
And some of them suffered quite humiliating defeats at the hands of the "beast". IBM created the PC, and everything had to be "IBM PC" compatible. Then MS helped shift that to "Intel x86 compatible". When IBM tried to introduce the micro-channel architecture, it discovered that it no longer is in control of the very architecture it created. The market just ignored IBM and took the PC in the direction other companies wanted. Then even Intel lost control. It became "Windows compatible." It may not have been immediately recognizable as a defeat, but it became blatantly so when Intel had to go ask for MS's permission to implement their own 64 bit extensions... and got told to use AMD's instead. Ouch.
In a sense, MS helped "create" Linux. At the anti-trust trial, MS used Linux as an example in their "we're not a monopoly, other people can still make good OS's" sophistry. It just told everyone what other OS they could use instead, if only it was more up to modern standards. And they just proceeded to help with bringing it there.
At any rate, the short story is: most of the successful F/OSS is the work of corporations, and _of_ _course_ they want to be the next MS. Or at least to take some market share from MS. And _of_ _course_ they'd like to make a profit (indirectly) out of it. That's the whole _point_ of bothering with it.
E.g., Sun isn't developping OOo because it just likes making cool software. It's because at some point people were saying, basically, "Yeah, well, but your workstations don't run MS Word." If the software they pay big bucks for doesn't address that problem, they might as well fire that team and move on.
E
A polar bear is a cartesian bear after a coordinate transform.
I'm not sure I understand you. You say that because Linux has both GNOME and KDE (and others), there is not one standard GUI on which to develop. But why don't you just pick one? People have access to both, you know.
For example, as a die-hard KDE user, I'll ask: what happens if you just pick GNOME and go with that? If it's a useful program to me, I'll install your GNOME program on my KDE machine. For example, I run GnuCash and not KMyMoney, I run Gnumeric and not KSpread, I run Abiword and not KWord (or OpenOffice.org), and I run Firefox and only occasionally Konqueror. I plan to continue to use KDE for the foreseeable future, and I've never downloaded the default Ubuntu, only Kubuntu.
Unless I misunderstand you, you seem to be saying: "Microsoft has a single door to walk through. But Linux provides double-doors, so I don't know whether to walk through the left one or the right one. So I won't bother, and I'll just stick with the single door because the lack of choice is less confusing."
404555974007725459910684486621289147856453481154 in hex is "You sank my Battleship?"
[GPG key in journal]
Here you have two prime examples of "too much choice" in action.
You're assuming that everyone uses an apt-get based package distribution method, and you just can't do that.
You're also assuming KDE is there, and that's an even more flawed assumption.