Quote:
Originally posted by SecretMethod70
Out of curiosity, what are these "Linux-isms" you don't like?
|
Most of them are just personal preference, really.
For example, I like that the each of the BSDs are a full tightly-integrated OS. Linux is simply a bunch of installed packages from many different sources. Now, a lot of the BSD "system" source is imported third-party code, gcc for example, but it's been tweaked by the maintainers to function as expected on a BSD system and fit in to a well-defined scheme of what goes where.
Gentoo actually does a pretty good job of doing this, modifying the installation of various software to follow the Gentoo layout. However, there are some exceptions that get dumped on /opt, or /usr/kde3.1 for example. Gentoo also has a very blurred distinction between "system" and "user-installed". In BSD, all base software is installed in /bin, /sbin, /usr/bin, and /usr/sbin. User-installed stuff goes either in /usr/local or /usr/X11R6, depending on if it's X-related or not. Again, personal preferences.
Other things I have are minor gripes, such as the fact that Linux has no kernel sound mixer (the kernel developers are morally opposed to the idea or something). So without artsd or esd I can only play one sound at once. Even if I used ALSA, because my sound card is a cheap integrated AC97, there's no hardware mixing so it has the same problem. I run artsd for KDE, so must stuff works, but mplayer lags really bad when playing through artsd, vmware doesn't work at all (artsdsp doesn't work on setuid binaries), and the mozilla flash plugin skips and lags when running through artsd. In BSD it's no problem because I can run artsd for KDE and each of those programs can have its very own virtual /dev/dsp that gets run through a low-latency mixer in the kernel... The BSD audio abstraction is much more flexible so vchans work with any sound driver. With ALSA, every sound driver has to reinvent the wheel or copy a bunch of code verbatim from another driver.
One minor annoyance to me is the amount of junk that gets printed on bootup of Linux systems. Useless debugging information, advertisements (X driver development was sponsored by Y), and just in general very little consistency to how drivers print out information, or how much information they print. My FreeBSD box's dmesg, with only a couple of excepctions, looks like "device0: at 0xAAA irq 15 on pci0". Just the very basic information about what hardware is detected. If I'm debugging a problem, I can boot -v and see heaps of extra information about what's going on, but it doesn't give it to me unless I ask.
I also like the development model of BSD. In FreeBSD (and NetBSD, and OpenBSD), everything is in CVS. You can pull the current source code from CVS and build the entire OS with a couple commands. Changes to it are approved by a group of committers, a group to which anyone who contributes enough can become. The "core" team, who sets the vision and direction of development, is regularly elected from the committers. It's a very democratic system. I have occassinally contributed code and changes, and despite BSD's reputation having even more arrogant users/developers than Linux, have found that most of the developers are actually quite nice people. There's a few assholes here and there who hang out on the mailing lists, but for the most part that's no worse than in the Linux world.
Contrast with the Linux kernel, which is a dictatorship at which Linus is the head. It's his kernel. And while I respect him and think he's a cool guy, if there was ever a major architectural disagreement, the only solution would be for somebody to fork their own verison of the kernel.
For distributions, many are run by corporate interests. Some, such as Debian and Gentoo, are volunteer-based which is good. But there's a lot of them. It's harder to get a company to distribute what you want, so there's lot of fragmentation. It's hard to pick a distro because there's a lot of overlap as far as which one has which features. The three branches of BSD cooperate and swap code quite often. Each has its niche, but there's little to no overlap for the different purposes. Because the process is very democratic, forks are quite rare and only happen under extreme circumstances (Theo's disagreement with NetBSD for one).
EDIT: Added 5/1. One thing I meant to mention in this post but forgot is library version problems. On a FreeBSD system, version 4.5 of the system uses the C library libc.so.4. 3.x uses libc.so.3. And so on. Newer minor revisions of the system may add more functions, but they
NEVER change how existing ones work. This guarantees binary compatibility for an entire major version of the OS. If I'm running 5.1, and I install the compat4x and compat3x packages, I can run any programs that were compiled for
any version of FreeBSD between 3.0 and 5.x. In the past, glibc (the C library used by most Linux systems), has changed function semantics and broken binary compatibility across minor point releases, leading to what's known as glibc-hell. Things have been better recently, so hopefully if the glibc maintainers get yelled at enough when they break things it won't be as much of a problem in the future
. But, on servers especially, I feel better that I know something will work rather than having to hope that it will work.
I don't really care about the whole BSD-vs-GPL license debate so much, so I won't get into it here.
Really, I don't
dislike Linux; I just prefer FreeBSD because IMHO it's a better fit to how I want things to work. I'd much rather use a Linux machine than something like the awful Win9x line, and the fact that I like Gentoo enough to run it on my primary desktop should say something
I'll probably edit this post if I think of more later, but for now I'm pretty much tapped out