Saturday, March 11, 2006

Userland, Not Wonderland

So... I've been engrossed in Second Life now. Before I could never justify trying it out. Then they dropped the price to "free." Then they provided a Linux client. I buckled. So sue me.

On the forums for the Linux client things devolved, as they always do for Linux gaming, into the extremely stupid "all packages are incompatible and unlinkable" debate. The crux of the issue is that people claim libraries are always changing in Linux distros, so that you can never dynamically link to libraries. People argue that this makes it impossible to offer a single, standard installation or provide supportable, sustainable products.

Of course, this hasn't stopped Epic, id or Introversion. Not to mention the zillions of enterprise applications that are written for Linux. The ones that, if they break, cost companies downtime and lost revenue. The moving libraries argument is shallow at best, especially in light of the many successes people have had with deploying commercial software packages to Linux distros.

Now, if they wanted to complain about the lack of unified package management or still immature video drivers, that's something different. While Linux at least has package management, most put it aside and instead just use a GUI installer (such as Loki's).

While we're on the subject of drivers, I noticed that Vista will be running most drivers in userland space, presumably so they can be loaded/unloaded easily without tinkering with the kernel. I hope this is something that is implemented solely by design and not due to some abstraction layer. While it was a great idea back when NT 4.0 decided to run drivers in userland, hiding things by its hardware abstraction layer put some serious restrictions on what drivers could do. I recall that DirectX was a real headache for Microsoft to add to NT, mainly because of the barriers HAL put in front of direct hardware access.

I actually think Linux handles this fairly well. While it's a monolithic kernel (I'm not going to get into the whole Tanenbaum v. Linus debate), allowing module loading/unloading/dependencies seems to work very well. While you can still get a nice kernel panic from a errant driver, for the most part modules behave fairly well. Well enough that I recall an interview with Linus (I can't find the article) where he thought that developers needed to be less afraid of running in kernel mode - too many were running to userland to invoke code.

Then again, what the hell do I know. Most of my CS knowledge is leaking out of my head. Microsoft may have it right and I have it wrong. I always cringe when I hear "drivers in user space," but if you constantly get bad press for someone else's crappy drivers crashing your OS I guess there's no good alternative.

No comments:

Post a Comment