A collection of articles, ideas, and rambling from a guy who wrote some software that one time.

Wednesday, May 02, 2007

A Gibbon Already In Flight

One of the first inklings the world had of the upcoming release of the game "Halo" was a cryptic website showing various obscure quotations which appeared to be from some ancient religious text.  Pre-acquisition, I always loved their sense of style; I am a huge fan of the Marathon series.  My favorite quote from the collection, which stuck with me for years, was:
Our conviction is like an arrow already in flight.
Your life will only last until it reaches you.
Today, I recalled this quotation as I noted a few things going on in my daily trip around the tubes:
Of course, Paul Graham already called this, so if anyone feels like they should be keeping score, by all means give him the credit.  But I think that Microsoft's problems are both a lot worse than the malaise that Mr. Graham describes.  It's not a question of large, abstract shifts in the focus of new technology developers.  I wouldn't say that they're dead, but they're definitely dying.

Microsoft's real problem is the much simpler business problem that their flagship product is clearly inferior its lower cost alternatives.  It doesn't help them much that the "lower" cost is, in many cases, zero, but that's beside the point.  I have made, and will make again, arguments about freedom and scaling cost and a number of other social issues surrounding code in general and operating systems especially, but all that is going to end up being peripheral.  I'm pretty sure that I'd continue to use the Ubuntu-derived operating systems for my own computers even if they somehow cost more than the Microsoft equivalents.

Of course, we've all heard this kind of thing before from the archetypical linux snobs on slashdot and other forums, people who seem incapable of recognizing that any value can be created by people who disagree with them.  Personally, I have purchased a Windows license - not just a computer which happened to have it included - as recently as last month.  (Although I must admit that my sense of practical compromise goes only so far.)

I can certainly understand some skepticism that Microsoft will topple and Linux will be ubiquitous in the home and office any time soon.  Certainly that is not going to happen soon  (for sufficiently software-industry-ish definitions of "soon" — which means they could be out of business but for cash in the bank within a year).  With Windows marketshare hovering somewhere between 80 and 95 percent, depending on who you believe, Canonical has a long way to go to fix bug 1.

On the other hand, one could make the case that it's happened already.  In the office?  Dozens of large companies, Red Hat foremost among them, make a comfortable living on corporate Linux deployments.  Sure, in most cases it's not on anyone's desktop, but it is making inroads.

In the home?  There are already 1 million PS3s in the US, and the current generation console market is staying rather cool - if it heats up to the levels of the previous one, the numbers could be more like 50 million.  Even when it's running games, the PS3 is a linux box, and to some people, it is in a much more literal sense.

Mark Shuttleworth himself says that there are about 8 million Ubuntu users alone.  That's not just a measurement error.

As with the Twisted site, however, the interesting thing here is not the number, but the trend.  Of course pundits and the mainstream press are going to look at the numbers they can see and not even consider the possibility that Windows could be dislodged.  By the time the idea seems reasonable and possible, though, the adoption curves will be in the process of going exponential as the new network effects combine with the advantages of the platform that already, now, have people migrating away from the current network effects.

If you're watching the arc of an arrow in flight it's quite fast.  Hard to predict, and often effectively invisible thanks to its motion.  By the time it's stopped moving and is easy for everyone to see, it's already arrived.

7 comments:

grimmtooth said...

This is less a technical victory for Linux than some are making it out to be. If Vista had been something else than it turned out to be, I don't think this conversation would be happening in this time frame. The Linux developers would have to work harder to actually EARN the victory.

But Vista is Vista and Apple is Apple. Linux is winning this one in the same way one wins at dodgeball, by being the last man standing.

In a way it's like the American political system: choose the lesser of three evils, and you arrive at Linux.

I'm not happy about it, BTW. Linux makes a fine server. But it ain't even in the same LEAGUE as Windows when it comes to an overall user experience on the desktop. There are dozens of issues that need to be resolved and handled better.

The good news is: if more desktop users adopt Ubuntu, maybe the gripes about this stuff will move from the "quit bitching about superfluous stuff" folder to the "we gots some real problems here, folks" folder.

That, and some better project management, would do wonders.

A final thought: there is little data on how long it takes a massive beastie like MS to die. It's entirely possible that there will be time for them to start dying, realize the mistakes made, turn it around, and eat everyone's lunch again. Which would be fine by me; I quit giving a hoot about platform wars when I sold off (well, actually threw away) my last Amiga. I truly don't care, as long as I can do what I want to do on the platform, and with WinXP I *can*.

Well, everything but using reactor.spawnProcess() in Twisted :)

grimmtooth said...

Let me be a little more explicit here on what I'm getting on about.

The GUI features are fine, if you like that sort of thing, but that's not where the user *experence* ends. Nor is the successful install from a Live CD. In that latter, especially, Ubuntu did a fine job, except for restricted driver management (which I'm willing to cut SOME but not ALL slack on).

However, simple things that "just work" on Win have been a challenge and a series of hacking things; screen resolution (a common topic for nvidia users apparently), conf files being overwritten on upgrades, and just some lousy management of the upgrade packages in a lot of cases. There also doesn't seem to be a well thought of means to enable desktop-launched apps to get root permissions. In other words, a lot of things that Win users are *used to* are working counter-intuitively for them, if at all.

In order for Linux to truly win the desktop battle, more work needs to be done to take all the disparate pieces and integrate them better. I think that's a large part of it right there.

glyf said...

Properly detecting screen resolutions has been a sore spot for X for quite a while. I think it is one of the targets for the next Ubuntu release, and I'm excited to see what they've got. Still, if you've got an OEM install which properly configures your graphics card, the user experience is just fine - you go to the "screen resolution" control panel, you select the one you like, and that's it.

It's not like this is a picnic on Windows either - if you start from scratch, with the 256 color VESA driver, getting nvidia's drivers installed and navigating their atrocious menu system is not significantly easier than finding a working snippet from ubuntuforums.org to paste into your xorg config file, and it's a lot more time consuming if you do know what you're doing. The situation is worse for network cards: linux works out of the box with almost any network configuration (and not just with Ubuntu, either, the kernel itself autoconfigures on lots of distros), but Windows needs you to have the driver CD on hand.

Again: Windows creates the impression of working because each OEM hand-tweaks it to work properly on their hardware before you see the first screen. If Linux gets this kind of effort (let's say, from, oh, Dell ;-)) then the tech situation won't have improved much but it will seem better.

Configuration files being overwritten on upgrades just hasn't been a problem for me in any of the last dozen upgrades I've done. Maybe it's a bigger deal in the wider world, but when I have had problems, it's been the sort of thing where I adjusted obscure parameters for my mdns daemon for testing Twisted and forgot to put them back. (Again, Windows isn't doing much better. Have you read any Vista upgrade reviews that didn't mention hardware trouble?)

As far as desktop-launched apps getting root: "gksudo my-desktop-app". It's consistently used by all the management tools in the menus.

I think you're probably right about integrating the pieces and making them work better. Linux is operating at a constant disadvantage since it's not what people are used to, and so it needs to be radically better to make the change, not just marginally competitive. But look at how much it's improved in the last 5 years, especially versus its competition.

grimmtooth said...

First of all, I'd like to say right off the bat that I am excluding Vista from my argument because I have ZERO experience with it. Indeed I have heard horror stories, but I hear horror stories about W2K, too, which I have never been able to corroborate myself.

To relavant points:

1) My last OEM box was an Amiga. I usually build from components. I have had ZERO problems with graphic driver installs from W98 through XP. Yes, it's a two step process, but it's a relatively pain free process in my personal experience. Compared to my initial Ubuntu experience, "picnic" is an apt word to describe the process.

2) It's funny you mention the X11 fix-it threads on the ubuntu forums. They were actually not very helpful for me, even when my setup matched the described configuration 100%. I did find a fix via Google, and it was a simple reconfig of X telling it to redetect the graphics modes. But boy howdy it was hard to dig that out! I really haven't had probs with network drivers on either OS. I would imagine that Linux would kinda need that more than pretty graphics anyway, so no suprise there.

3) Perhaps you don't mind redoing conf files for network filesystems and such, but I imagine the common desktop user (which is the big prize here) WOULD. I sure as hell do, which is why I now brandish rsync at anything I tweak :)

4) I'll look into the gksudo thing. Thanks. :)

5) Agreed, muchly improved. I'm waiting to see if they'll complete the job, now. MS has given them momentum with Vista, that's for sure. I've been agnostic about it until now, but Vista just takes the cake. Sigh. I'm so over OS wars, as of around 1995.

micahel said...

I lost a day or two to this http://marathon.bungie.org/story/ and similar sites a year or so back... I don't know of any other game that's had such a creative story element.

mattcampbell80 said...

As Joel Spolsky pointed out several years ago, any platform developer wishing to achieve mainstream success has to deal with the chicken-and-egg problem with respect to users and applications. That is, users won't switch to a new platform unless it has the apps they want, and apps won't be developed for a new platform unless it has enough users. Joel explained that Microsoft addressed this problem by emphasizing backward compatibility with each of their new operating systems, at least up to Windows XP. Porting CP/M apps to MS-DOS was trivial; Windows 3.1 couuld run multiple MS-DOS apps in windowed virtual DOS machines; Windows 95 ran most Windows 3.1 apps perfectly.

One might answer that WINE and Mono are addressing this problem. But as Joel pointed out more recently, "You don't get partial credit when you try to emulate an API." In other words, WINE and Mono won't be of much use until they implement their respective API's completely. I hope this happens, but as far as I know, it hasn't yet.

So for now, I won't be able to convince my mom to run Linux until it runs her accounting software perfectly (and I'm not talking about Turbo Tax or Quicken). And the company that sells that software won't do a Linux port until... you know the rest.

Meanwhile, I also see this problem from the other side, as a developer of commercial (yes, proprietary) software. I work on assistive technology for blind people (see www.serotek.com if you're curious), so the current target market is relatively small to begin with. It therefore doesn't make business sense to target any other platform than Windows, especially since this software tends to have a disproportionately large amount of platform-specific code. (But at least I get to use Python and Twisted quite a bit, hence my interest in Glyph's blog.)

Any ideas on how this dilemma can be solved? I'm sure a lot of other people, especially at Canonical and in the Ubuntu community, are pondering the same question.

glyf said...

In fact, you do get partial credit. There are thousands (millions, maybe?) of applications for Windows, and a partial implementation of the API will run some of them. Each improvement in the API adds some applications or some features of some applications. I can't do entirely without Windows thanks to WINE yet, but it's getting really close, especially in specific areas. For example, Linux is actually a better environment for IE compatibility testing than Windows these days thanks to ies4linux.

The "chicken-and-egg problem" makes for good marketing materials, but in fact the issue is far more complex than that. For some users in some situations, Linux is now a viable solution, so those users are switching. Some companies will have markets that coincide with those users, so they'll start developing linux ports.

Eventually there's a tipping point, which is where I think Linux will really win (although the Vista fiasco is certainly helping ahead of time). At some point, it becomes worthwhile for companies to take portable development seriously, because it's no longer clear which market will make the better target. It might still be Windows, but getting hard numbers on this kind of thing is hard, so if you're no longer talking about huge orders of magnitude, it's no longer worth the risk of pissing off a potentially large segment of your market. You only need to achieve 20% or so market share to get to this point. Once that happens, most or all the major software vendors start developing their applications portably, and most or all of the major hardware vendors will start properly supporting drivers for multiple platforms. The mac has almost achieved this with only 1-5% marketshare, and it will compound this effect as both macs and linux eat away at the entrenched Windows monopoly.

Once most of your applications are portable, then you can start evaluating platforms on their own merits. By the time we get there, given its current rate of improvement, I suspect that Ubuntu will be better than Windows on just about any measurable dimension, and the choice to switch will be obvious.