I was glad to see that Eric
took the time
to address
my
previous rebuttal
to
his previous
comments. I welcome good technical discussions like this, in the open,
without rude flames by anyone. It's fun, and lots of people get to understand
things a bit better about the topic

That being said, I'd first like to address his closing comment, which was
regarding my comment about Linux not going anywhere:

For some reason, all Linux advocates have an "us or them"
philosophy. In the end, we have exactly what I said at the beginning of my
first post. Solaris and Linux have different goals and different philosophies.
Solaris is better at many things. Linux is better at many
things.

I agree completely. I wasn't trying to put up any "us vs. them" type attitude,
I was merely trying to explain in my message the reasons why the Linux kernel
has or does not have those different features that Eric was discussing. My
comment at the end was a bit glib, I agree, I was merely trying to state that
Linux isn't going anywhere, and will welcome all Sun users and developers if
they decide that Linux will work for them.

Ok, on to the technical stuff:

First off, thanks for giving specifics about your points of reliability,
serviceability, observability, and resource management. Let's address these
points.

Reliability - Of course reliability is more than "better than Windows."
Geesh, what a low bar to shoot for these days. Linux had better be able to
handle hardware failures where ever possible, when ever it can be detected.
Ah, that last part is the biggest issue. Linux most often runs on hardware
where such errors can not be detected, as we run on a zillion different
platforms (although not as many as NetBSD). For systems that we can detect
these kinds of errors, we do (like PCI error reporting on the PPC64 platforms
for example.) The hardware that Solaris usually runs on also has that kind of
error reporting capabilities, and so the OS takes advantage of it. So Linux
and Solaris are pretty equal here. As for the claims that the ZFS people are
stating, I think that Linux filesystems like Lustre and SSD do pretty much the
same thing (automatic error correction for large collection of disks all
without the application needing to fix it up.)

Serviceability - Sure, things go wrong all the time. That's why
enterprise distros add the crash dump, kernel debuggers, and dprobes code to
their kernels in order to be able to help service their customers. Nothing
different from Solaris there (although you mentioning the ability to have a
firmware dump of hardware errors is pretty cool, but again, that's a hardware
feature, not an OS one.)

Observability - DTrace does sound like the all-singing, all-dancing
solution to everything that a kernel could possibly report to a user. And if
so, I commend you all for creating such a wonderful tool. As for Linux, if
you want much the same functionality, use the LTT code, or the dprobes code.
Again, many enterprise related Linux distros ship their kernels with these
features added to them, as their customers ask for it.

Resource Management - That sounds pretty much exactly what the CKRM
project does for the Linux kernel. Again, enterprise distros ship it, so
their customers can have it. And this feature is getting fixed up to be
acceptable for the mainline kernel, and will probably get merged into it
within a year or so (but again, if you want that option, it's available to
you.)

As for the comment about Solaris having these features "more polished"
than Linux's, I will not disagree. But they are getting better over time, as
companies realize they want these features in Linux, and address any
shortcomings that these features may have.

Binary compatibility. You state:

We have customers paying tens of millions of dollars precisely
because we claim backwards compatibility.

You have customers paying that much money for driver compatibility? Geesh, I
didn't know drivers were that expensive... Seriously, for Linux, this
argument doesn't even register. A customer does not have to worry about the
huge investment they just made in hardware, and the fact that the driver they
have for it better work for any future version, as they have the source to it
(it's in the kernel tree.) They know that it will work with all future
versions of Linux, and if something goes wrong, they can either fix it
themselves, or hire someone else to fix it for them, for far less than
"millions of dollars."

I really need to write a article/essay about why Linux does not have driver
api stability. I touched on it in my previous post, but in reading your
response, and the responses by others, you all seem to miss the main points.
It's not that we don't know how to create a binary api with padding
structures out, and offering up new functions, it's the fact that because we
have the source to all of our drivers, we do not have to.

One minor comment though, the fact that we have the source to everything
changes all of the old rules that operating systems had to live by. Backwards
compatibility is no longer necessary, enabling us to move faster, and be more
flexible than ever. As proof of that, look at the huge range of machines that
Linux runs very well on. Everything from this tiny little
gumstick, up to a 512 way ia64 box. And
our drivers work on all of those platforms, with no changes needed.

So, let me bring up a few other points about where Linux is better than
Solaris:

Device support - As I mentioned before, and as you mentioned,
Linux's device support is unmatched anywhere else. We support,
out-of-the-box, more devices than any other operating system. We also support
them on every platform that Linux is supported on (somewhere over 21 unique
architectures with lots of minor arches last I looked). That's power and
flexibility that enables customers to start out with a small Linux box
(running on a cheap i386 clone) and if needed, they can go out and buy a ia64,
or amd64 box, and use the same investment in devices (disk controllers, etc.)
and with no changes to their applications (other than a recompile) and "just
work". This also enables customers to not have to rely on any one specific
hardware vendor, preventing any "lock in". They can pit HP vs. IBM vs. Dell
vs. the whitebox dealer down the street, or just build machines themselves
(like a lot of places do, Google for example), in order to get the best
service and price and support for their specific situation. That's incredibly
powerful for the customer/user, and very scary for the big companies that
previously had relied on the cost that a customer had spent already to tie
them to that company for a long time.

Speed - Last I looked, Linux beat the pants off of any other
operating system on the same exact hardware configuration. Both in
microbenchmarks like lmbench,
and in macrobenchmarks like specweb and TPC numbers. I've
seen loads of unpublished results at a lot of different companies for these
macrobenchmarks backing this up (unpublished usually due to the cost of
publishing them, and for political reasons because the company also sold other
operating systems on the same hardware, and didn't want to loose those
customers in large numbers.) And, I'm sure the fact that we don't have to
keep around old, broken apis, or have padded structures to keep binary
compatibility might have a little to do with this speed advantage :)

Flexibility - I touched on this up above in the device support
point, but Linux scales from very tiny to very huge systems, all based on the
exact same kernel code base. We support mmuless embedded devices, and NUMA
systems. No other operating system can claim that kind of flexibility that I
know of (ok, maybe NetBSD, but it doesn't support the range of devices that we
do...) But aside of the system flexibility, Linux's main flexibility is that
if it doesn't do something you want it to do, then you can change it to do it
yourself. If you are a customer, and really like Solaris, but happen to want
to use it to put it into your barcode scanner, you can either try to convince
Sun to do this for you, and pay them a whole lot of money, or you can find a
os that can do this. Sure, I know you will say that Solaris isn't in that
market, and that they are only going for the enterprise, which is a completely
valid response. It's just that Linux meets the needs of everyone, not just a
single market segment. It's this point that will ensure that any feature that
is missing from Linux, will allow it to be easily added.

So, that's the three main points that I think Linux beats every other
operating system out there on. Combine those points, and you have a very
powerful system, for a huge range of people.