Solaris vs Linux technical and philosophical differences emerge
Everyone knows that Linux is flavour of the decade, so I found this blog post very interesting as it explained why its not easy to replace Solaris with Linux or to merge Solaris capabililities into some future version of Linux. It also illustrates one of the challenges faced by theOpen Source community in general, how to you coordinate major changes that affect hundreds of files, distributed architecture and design seems more difficult than distributed development. The main guts of the post follows:
The main reason we can’t just jump into Linux is because Linux doesn’t align with our engineering principles, and no amount of patches will ever change that. In the Solaris kernel group, we have strong beliefs in reliability, observability, serviceability, resource management, and binary compatibility. Linus has shown time and time again that these just aren’t part of his core principles, and in the end he is in sole control of Linux’s future. Projects such as crash dumps, kernel debuggers, and tracing frameworks have been repeatedly rejected by Linus, often because they are perceived as vendor added features. Not to mention the complete lack of commitment to binary compatibility (outside of the system call interface). Kernel developers make it nearly impossible to maintain a driver outside the Linux source tree (nVidia being the rare exception), whereas the same apps (and drivers) that you wrote for Solaris 2.5.1 will continue to run on Solaris 10. Large projects like Zones, DTrace, and Predictive Self Healing could never be integrated into Linux simply because they are too large and touch too many parts of the code. Kernel maintainers have rejected patches simply because of the amount of change (SMF, for example, modified over 1,000 files). That’s not to say that Linux doesn’t have many commendable principles, not the least of which is their commitment to open source. But there’s just no way that we can shoehorn Solaris principles into the Linux kernel.
Of course, as Eric Raymond says, we could create a fork of the Linux kernel. But this idea lies somewhere between idealistic and completely ludicrous. First of all, there’s the sheer engineering effort. Even after porting all the huge Solaris 10 (and 9, and 8 …) features to a branch of the Linux kernel, we would enter into a perpetual game of “catchup” with the main branch. We’d be spending all of our time merging patches and testing rather than innovating. With features such as guaranteed binary compatibility, it may not even be possible. Forget the fact that such a fork would probably never be accepted by the Linux community at large. The real problem with creating a fork of the Linux kernel is simply that the GPL doesn’t align with our corporate principles. We want to have ISVs embedding Solaris in their set-top box without worrying about how to dance around the GPL while keeping their IP private. Even if you can tiptoe around the issue now by putting your code in a self-contained module, the Linux kernel developers could actively work against you in the future. Of course, we could still choose a GPL compatible license for OpenSolaris, at which point I’ll end up eating my words.
In the end, dumping Solaris into Linux makes no sense, either technically or philosophically. I have yet to hear a convincing argument of why ditching Solaris would be a good thing for Sun. And I can’t begin to imagine justification for forking the Linux kernel. To be clear, we’re not out to rule OpenSolaris with an iron fist. Because we own our intellectual property, we can make a licensing decision that reflects our corporate goals. And because we’ve put all the engineering effort behind that IP, we can instill similar beliefs into the community that we spawn. These beliefs may change over time: we would love to see a OpenSolaris community where we are merely a participant in a much larger game. But we’ll be able to build a foundation with ideas that are important to us, and fundamentally different from those of the Linux community.
Once upon a time, there was a company called DEC ๐
Here is a great rebuttal of the arguments quoted in this post. Pretty much every argument is addressed with confidence from my perspective. It will be interesting to see how the discussion develops. At this point it certainly looks like Sun is looking for excuses to continue with Solaris.
http://www.kroah.com/log/2004/09/23/#2004_09_23_sun_rebuttal
And a good response
http://blogs.sun.com/roller/page/eschrock/20040924
You can sum up the response with the following:
Linux seems to be winning this agument, in my eyes at least
http://www.kroah.com/log/2004/09/26#2004_09_26_sun_rebuttal_round2
and I like this summary of some of the areas where Linux outshines Solaris. The list is interesting because its not a list of features (it’s relatively easy to add features) it’s an architecture and approach related list:
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.