BSD For Linux Users
noackjr writes "Matt Fuller posted among his rants a great introduction and explanation of BSD For Linux Users: 'It's been my impression that the BSD communit{y,ies}, in general, understand Linux far better than the Linux communit{y,ies} understand BSD. I have a few theories on why that is, but that's not really relevant. I think a lot of Linux people get turned off BSD because they don't really understand how and why it's put together. Thus, this rant; as a BSD person, I want to try to explain how BSD works in a way that Linux people can absorb.'"
"BSD For Linux Users"
What, was "BSD For Dummies" already taken?
ouch.. my karma is going to burn over that one
Trolling is a art,
BSD is for those that love Unix. Linux is for those that hate Windows.
Do you even lift?
These aren't the 'roids you're looking for.
Apparently, since the article is currently returning a 403 Forbidden, he thinks Linux users can't handle what he has to say.
What is this?
I run FreeBSD on my computers. A lot of my friends run Linux, or at least one of the distributions of it. Naturally, then, we agree that a Unix-style operating system is the right choice, but we disagree on which to use.
It's been my impression that the BSD communit{y,ies}, in general, understand Linux far better than the Linux communit{y,ies} understand BSD. I have a few theories on why that is, but that's not really relevant. I think a lot of Linux people get turned off BSD because they don't really understand how and why it's put together. Thus, this rant; as a BSD person, I want to try to explain how BSD works in a way that Linux people can absorb.
While there's overwhelming similarity between the operating systems in most cases, there are also a lot of differences. As you probe more into the differences, you find that they emerge from deep-seated disagreements. Some are disagreements over development methodology, some over deployment and usage, some about what's important, some about who's important, and some about which flavor of ice cream is superior. Just comparing the surface differences doesn't tell you anything; it's the deeper differences that both explain and justify why each group does things the way they do.
What isn't this?
This is not:
* A list of command correspondances; "'netstat -rnfinet' on BSD = 'netstat -rnAinet' on Linux" and such things.
* How to do all the things involved in adminning and running a BSD box.
* Why you should use BSD instead of Linux.
* Why you should use Linux instead of BSD.
* Why you should use this BSD instead of that BSD.
* Why you should use this Linux instead of that Linux.
* Why BSD is Right and Linux is Wrong.
* Why Linux is Right and BSD is Wrong.
* Why I am a god and you should worship me.
I, personally, for me, believe (obviously) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one.
Some preliminary thoughts
There're a lot of philosophical disparity between the Linux world and the BSD world. And there are a lot of expressions about it out there. One I particularly like goes something like:
BSD is what you get when a bunch of Unix hackers sit down to try to port a Unix system to the PC. Linux is what you get when a bunch of PC hackers sit down and try to write a Unix system for the PC.
Now, I like that quip, not because it's some sort of absolute revealed truth, but because it gives a very good feel for some of the differences. The BSDs, in general, are very much more like traditional Unices than Linux is. A lot of that is because they're direct-line descendants of the BSD from Berkeley, which was a direct-line descendant of the original AT&T Unix. Unix-the-trademark is a trademark of The Open Group, and Unix-the-code is owned by SCO, so one can't actually say that the BSDs are really Unix (that's the sort of statement that triggered the USL/UCB lawsuit extravaganza, in fact). But, in many ways, the BSDs are direct derivatives of traditional Unix.
That shows through in a lot of ways. It shows up in the design of the base system and the packaging of addons. It shows up in the partitioning of the mass storage. It shows up in a lot of details of the commands. And it shows up in the attitudes and reflexes and prejudices of the developers, which are reflected in the code and in the users.
BSD is designed. Linux is grown. Perhaps that's the only succinct way to describe it, and possibly the most correct.
Where to begin?
Must've been running BSD.
;-)
*ducks*
I want to try to explain how BSD works in a way that Linux people can absorb.
Just sprinkle your explanation with random anti-Microsoft rants and talk of your imminent death, and you'll do just fine.
Well, my suggestion would be to use a lot of pretty pictures interspersed with interludes on where Linus is, what Linus is doing, what Linus was wearing, what Linus said, what Linus' facial expression was as he said it, if Linus will be say something like that again, perhaps, in the future, and where Linus might be living or moving to, maybe, perhaps, possibly.
Then I'd lead all the Linux users out to a fertile field where they could graze for the day, protected by a couple of good dogs, herding them in, keeping them together, where I'd sit back and enjoy their gentle baying in the summer sun: Liiiiinnnnux, Liiiiiinux ...
Chr0m0Dr0m!C
We'll have rabbits and chickens and live off the fat of the LAN.
Appologies to Steinbeck
Don't forget the power of USE flags. One of the things that I love about gentoo more than anything else is the power that USE flags give me. Want a server without any X compiled into the programs you're installing? Set USE="-X". Want to make sure that ssl is enabled everywhere that you have the option? USE="ssl". Want KDE instead of gnome for programs that have multiple GUI interfaces? USE="kde -gnome". Easy and powerful.
Perhaps for the same reasons that the Branch Davidians or the Ralieans knew more about the Cathloics than most Cathloics knew about the Branch Davidians or the Ralieans? Maybe Linux is just a much more widespread cult than BSD.
I'm an American. I love this country and the freedoms that we used to have.
It's been my impression that the BSD communit{y,ies}, in general, understand Linux far better than the Linux communit{y,ies} understand BSD.
And my impression is that Ogg communit{y, ies}, in general, understand Mp3 far better than Mp3 communit{y,ies} understand Ogg
*ducks*
Free XBox, PS2
Who are the characters?
Meet the players
I'll give here a quick introduction to and discussion of the systems I'll be talking about. Note that the histories presented are not comprehensive or authoritative, and no attempt has been made to make them that way. Deal.
Unix
Unix isn't (precisely) an operating system.
Well, it is, and it isn't.
In specific usage, Unix is an operating system originally developed in the late 60's at Bell Labs by Ken Thompson and Dennis Ritchie. Over the years since then it's been developed and distributed as a commercial operating system, and a research operating system, by Bell Labs and USG and USDL and ATTIS and USL and Novell and SCO and anybody else who could come up with an acronym.
It's probably not too much exaggeration to say that Unix is the single most influential operating system in modern computing. Every general-purpose computing device you'll find, and a lot of specific-purpose computing devices, will be using ideas and concepts and often code from something in the Unix family tree.
When we use the word 'Unix', then, we far more often mean the general form, than the specific OS that carries the name Unix(TM). The general form means "Any operating system which, in design and execution and interface and general taste, is substantially similar to the Unix system." That means all the BSDs, Linuxen, SunOS, Tru64, SCO, Irix, AIX, HP/UX, and a cast of hundreds or thousands of others.
I'm not interested in getting into semantic discussions about how many angels can dance on a head of split hair. Let it suffice that when I use phrases like "Unix systems", I mean exactly what you think of when I use the phrase. Pedantry City is ---> that way.
Linux
Linux also means several things. It's a kernel, originally written by Linus Torvalds when he was a student in Finland. Since then it's been beat up, punched around, tweaked, poked, prodded, manged, digested, spit out, stomped on, chewed up, tossed out, brought in, and otherwise manipulated (not necessarily in that order, of course) by more other people than you could easily count.
Linux is also the term for a family of operating systems. While there are fascinating metaphysical discussions taking place in dozens of places around the world at this very second (I guarantee it) about how "Linux isn't really an operating system, it's just a kernel", or "It should be called 'GNU/Linux'", or similar topics, I'm also going to neatly avoid that semantic cesspool. When I say "Linux", I mean Red Hat. I mean Slackware. I mean Mandrake. I mean Debian. I mean SuSe. I mean Gentoo. I mean every one of the 2 kadzillion distributions out there, based around a Linux kernel with substantially similar userlands, mostly based on GNU tools, that are floating around the ether.
BSD
BSD stands for "Berkeley Software Distribution". Originally, it was a set of patches and extra add-on utilities for the official Bell Unix system that were developed by the CSRG at the University of California, Berkeley. Over time, it evolved to change and/or replace more and more of the system, until at some undefined point it became basically its own OS that merely happened to share chunks of code with Bell's Unix system.
Of course, it still required that you have a Bell license to use the system, since a lot of it was still Bell's code. All of the code written by Berkeley, however, was released under what's come to be known as the BSD license, which basically translates to "Do whatever the hell you want with the code, just give us credit for writing it". And a lot of the BSD code ended up working its way back into the "official" Unix system too, in System III and System V. And, a lot of both strains worked their way into the various commercial forks of Unix.
After the CSRG (mostly) dissolved and stopped developing the BSD system, several groups went off different ways with the code. One of these was the 386BSD project, which took the BSD code and made it run on the Intel i386 platform.
Help Brendan pay off his student loans
BSD is designed. Linux is grown. Perhaps that's the only succinct way to describe it, and possibly the most correct.
/.er who posted the first page, but the author).
He jests (not kind
BSD has grown from each previous BSD and then from each previous UNIX. How he can say this is more "designed" than Linux I'm not sure.
Sam
blog.sam.liddicott.com
Comment removed based on user account deletion
The BSDs all keep the system under revision control; all the free BSDs use CVS. Revision control (in extremely brief) is a process by which editing a program means checking out a file or group of files, making the changes, then checking in the new versions, along with a message describing the change. A full history of all changes is kept in the revision control system, so you can view a history of the changes, check out an old version, look at the differences between arbitrary versions, etc.
All the BSDs provide public access to their CVS repositories in one way or another; generally through anonymous CVS, or CVSup checkout or mirroring, or often both. That means that, as a user, you can see exactly what changes happened when, who did them, and why they did them. You can also always get your hands on the latest changes (within a few hours, anyway, depending on mirroring strategies). All of the free BSDs have mailing lists that you can subscribe to and see the changes as they're made. In fact, they all have web frontends as well; you can poke around FreeBSD's entire source tree online at http://cvsweb.freebsd.org/src/, and see all the history of every file.
Linux, historically, hasn't used any version control for the kernel. I don't have exact data at my fingertips here, but I believe it was somewhere in mid-2.4 days that the kernel began being kept in a public BitKeeper repository. Many of the other utilities use revision control, but since they're all developed separately, there isn't any central place you can go to to look through the changes. So it's sometimes hard to get a historic picture of even any one part; to so do for a whole distribution is practically impossible.
This leads to a lot of differences. In a very real sense, BSD systems are constantly developed; I can always update my system to the absolute latest code, irrespective of "releases". In Linux, that doesn't really have as much meaning, because the release process is very different. I think the most appropriate verb for a Linux release is "assembled". A Linux release is assembled from version A.B of this program, plus version C.D of this program, plus version E.F of this program... all together with version X.Y.Z of the Linux kernel. In BSD, however, since the pieces are all developed together, the verb "cut" makes a lot more sense; a release is "cut" at a certain time.
Linux releases kernels in two parallel lines (well, often more than 2, but we're simplifying); a version with an odd minor release number, as a "development" version, and a version with an even minor release number, as a "production" version. The BSDs also have "development" and "production" tracks, but they're handled rather differently.
CVS, like most version control systems, has the concept of "branches". It's easy to understand, but somewhat difficult to explain. Basically, when you "branch" a file or a set of files (or a whole directory tree), you create a new version of the file which exists in parallel with the primary version. When you make changes to the primary version, it doesn't affect the branched version. And you can make changes to the branched version without affecting the primary.
In FreeBSD, there's usually 2 active development lines; one called "-CURRENT", which is the development version, and the other called "-STABLE", which is the production version. Both, of course, are under development, and both have some attempt to be made to keep them usable. -STABLE, as a rule, gets bug and security fixes, but only gets new features and such that are well tested, usually by a stint in -CURRENT first. -CURRENT gets new features, big architectural changes, and all those sorts of new development stuff. It should be noted that the naming of the branches doesn't necessarily mean what it seems to; while -STABLE usually is "stable" as in
It should be pointed out that if ever the Slashdot community believes that the editors of Slashdot are immune to pot-stirring tendencies, then this post should serve as proof that sometimes they get bored and message each other: "The servers are slooooowww today. What can we do to get a few hundred angry comments? Oh, I KNOW!!!"
Chr0m0Dr0m!C
Condescending is just the right word for the style of this rant.
My favorite snippet:
and make up your own damn mind. That's why you have one.
Oh! That's what that thing is for! Thanks for letting me know.
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
Why do I run BSD?
It Just Works. When I install the system, a set group of pieces are there. Period. When I go through the upgrade process, it works. When I install an addon package, it works.
It supports practically every piece of hardware I've thrown at it in close to a decade of use. And that support Just Works, it doesn't flake out or fail from one version to another.
I can choose whether to stick with tried and tested release versions, to track the -STABLE branch, to track the -CURRENT branch... however close to the edge I want to live. And even the bleedingest edge usually works just fine. I can take a system that hasn't been touched in 3 years, and bring it up to date with minimal pain.
When a problem comes up, whether it's security or stability or performance or even just aesthetics, it gets fixed. And because of the development methodology, I can get those fixes later that same evening. All the time. When a new feature gets added, I can grab it right now, not wait a week or a month or 6 months until the next release. I can see, whizzing by in my email, every change as it's made. Or, when something breaks, I can fix it myself, and be able to send the fix right off to somebody who can get it incorporated into the system right away. I've done it before, I'll do it again, and so have thousands of other people.
It's designed to all fit together. Not just munged after-the-fact to go together OK, but designed from the ground up to be a single coherent system. And when something doesn't fit, it's a bug to be fixed, not just "part of the game".
It's had quirks. It's had vagueries. It's had out-and-out bugs. It's had bizarreness. It's had inexplicable behavior. It's given me misleading error messages. Sometimes, it out-and-out breaks things that worked yesterday. And all those will happen again in the future. But, every time, somebody goes right ahead and notices, and discusses, and fixes it. I read the mailing lists, and I see these things go by. I see the problem brought up, I see the people who know the area discussing it, I see solutions proposed and discarded and tested and agreed upon, and I see them committed into the main repository. And usually by the time I see it happen, I can already get my hands on it.
It's just a level of consistency and transparency and usability lightyears beyond anything else I've seen. Its development path is aimed at technical merit and correct solutions, not just sexy features and workable hacks. And I think that's the only way to be sustainable long-term.
Why should you run BSD?
Well, I don't know. Does what you have now meet your needs? Then you probably don't have an urgent need to change anything.
There're plenty of essays and rants on there about why X works better than Y, for any values of X and Y. I don't want to write another one. If and when you do get time or inclination or resources to try BSD, I want this essay to help you understand why some of those differences are there, and what the result of those differences is.
More info
All the BSD's sites (FreeBSD, NetBSD, and OpenBSD) have extensive documentation available on their systems. Because the base system is integrated, all things dealing with it can be authoritatively documented in a single place. They describe the strengths and weaknesses of the individual systems, how to install them, how to upgrade them, how to admin them... Everything you need.
In the FreeBSD docs in particular, the article on Explaining BSD is similar to this essay, in that it describes BSD and its historical context. There's all kinds of documentation, from introductory documents describing the basics of FreeBSD and Unix-type systems, to detailed descriptions of the inner workings of the kernel, and everything in between. Scroll down the page.
And, of course, the FreeBSD Handbook, and the FreeBSD FAQ are both stuffed with information you never even knew you needed. Don't leave home without it.
The BSD's also all have mailing lists and news
...Linux isn't UNIX. It's an independent project, despite what SCO thinks.
I wonder how funny it would be to tell SCO that BSD is a direct derivative work from AT&T UNIX...
Do not look into laser with remaining eye.
Communit{y,ies} = {Community, Communities}
Because there are one or more BSD communities depending on how you look at it.
er. this is not a good advertisement for bsd as a web server....
2 1337 4 u!
Both communities should remember that development for either tends to benefit both.
A lot of BSD code flows into Linux, and a lot of apps that are made worthwhile (in terms of size of userbase) by Linux are ported to BSD.
Every person using Linux OR BSD is an asset to the free software community, and helping things in the right direction. There is no need to get pissy over small things like licenses or religious wars until only Linux, BSD and other free OSes are left standing and all other non-free systems are long buried.
Beep beep.
BIND and sendmail were originally developed at Berkeley as part of BSD
Aha, so that's where the blame lies! ;)
"BSD is designed. Linux is grown. Perhaps that's the only succinct way to describe it, and possibly the most correct."
I'm wondering what he's smoking. Of course, if he's in Berkeley maybe he's using more LSD than BSD...
If the SCO lawsuit has done anything positive, it has caused a lot of research into the history of UNIX and its derivatives. And based on the continuous ripoffs between Berkeley and AT&T, BSD definitely didn't start out with a plan. Linux hasn't forked into eight or nine individual large projects, and is still spearheaded by its original creator, who ultimately decides what goes where or delegates the decisions. True he takes input from more and more people, and probably has less direct control than he used to, but the core of what is wanted for the next stable series is usually pretty clear once things are played with.
and other than Slackware, all of the distributions seem to be pretty tight too, not just falling completely where things end up.
Do not look into laser with remaining eye.
traceroute www.over-yonder.net
traceroute to www.dyn.over-yonder.net (68.19.137.116): 1-30 hops, 38 byte packets
7 BELLSOUTH-TE.gar1.Level3.net (67.72.8.42) 20.3 ms (ttl=247!) 20.4 ms (ttl=247!) 20.5 ms (ttl=247!)
8 axr01asm-1-0-0.bellsouth.net (65.83.236.7) 20.5 ms (ttl=246!) 20.5 ms (ttl=246!) 20.5 ms (ttl=246!)
9 ixc01jan-5-0-1.bellsouth.net (65.83.237.89) 29.4 ms (ttl=246!) 29.4 ms (ttl=246!) 29.5 ms (ttl=246!)
10 205.152.137.134 (205.152.137.134) 40.9 ms 40.9 ms 41.0 ms
11 adsl-81-101-28.jan.bellsouth.net (65.81.101.28) 41.0 ms (ttl=54!) 45.6 ms (ttl=54!) 41.0 ms (ttl=54!)
12 * * *
13 * * *
14
(interrupt)
ADSL line, meet Slashdot. Slashdot, melt ADSL line.
I'm one of those guys who used a lot of Linux, still like it on the server side and now I use OS X on the desktop side, but at the advice of some of the penetration testers I worked with, I decided to give OpenBSD a shot on my rebuilt home server.
/var/www and none else), but within hours someone posted a polite "Oh, try this".
It's one of those things where for a bit, I was a little confused on how things work. Granted, OpenBSD is not as "user friendly" on the install as, say, Red Hat 9, where you click the pretty buttons and things install. But thanks to a copy of "Absolute OpenBSD", I got it installed.
And I have to admit - for my server love, it's working pretty well. The ports system works like I'd always dreamed RPM's to work - tell it "install", and it gets the source, check it for dependancies, and go on.
The Flavor setting is another one I think I can live with, since you can specify there things like "Plaintext imap" versus default "secure imap" and the like.
And everything is right where I'd expect it. Ports installed files are in local, so now I can remember where everything is at once it's installed.
And it's pretty small - little "crufiness", and the community has been great. Like when I couldn't get Apache, PHP, and MySql to play. Turns out it was a socket issue (Apache on OpenBSD by default only wants to see things in
So far, as a server system, I'm beginning to groove on it. Perhaps if I wanted to run it as a desktop I might or might not have other issues, but since I've got a different OS for my desktop things, I'm pretty pleased with the BSD system.
Next up: learning how to upgrade. Not that I need to yet, but it's that "yet" that I'm anticipating. (Hey, there could always be another ssh exploit - you never know.)
52 Weeks, 52 Religions with John Hummel
The concept of the "base system" is something that, I think, causes the most trouble for people used to the Linux methodology. Which is perfectly understandable, because the whole idea just doesn't even exist in the Linux world.
Linux, from the start, was just a kernel. Without getting into the eternal debate of what an "operating system" precisely consists of, it's easy to state that a kernel by itself isn't very useful. You need all the userland utilities to make it work. Linux has always been a conglomerate; a kernel from here, a ls from there, a ps from this other place, vim, perl, gzip, tar, and a bundle of others.
Linux has never had any sort of separation between what is the "base system" and what is "addon utilities". The entire system is "addon utilities". MySQL is no different from ls from KDE from whois from dc from GnuCash from ...
Every bit of the system is just one or another add-on package.
By contrast, BSD has always had a centralized development model. There's always been an entity that's "in charge" of the system. BSD doesn't use GNU ls or GNU libc, it uses BSD's ls and BSD's libc, which are direct descendents of the ls and libc that where in the CSRG-distributed BSD releases. They've never been developed or packaged independently. You can't go "download BSD libc" somewhere, because in the BSD world, libc by itself is meaningless. ls by itself is meaningless. The kernel by itself is meaningless. The system as a whole is one piece, not a bunch of little pieces.
Now, X isn't a part of the FreeBSD base system. It's an addon package. Since X isn't part of the base system, X apps like xterm and KDE and Gnome and Mozilla and gaim and xmms and such obviously can't be part of the base system either. They're add-on packages, which are treated and thought of differently. The primary difference is where they're developed.
NetBSD and OpenBSD do have an X implementation in the base, because of the way they integrate it with their console driver. They both use heavily modified, very custom versions, so it's not feasible to keep it as a separate package.
The entire base system is developed together. To be sure, there're parts of the base system like sendmail and BIND and tcpdump and ssh and such, which are in fact individual packages which are developed elsewhere. There are even some GNU packages like groff and gcc and gzip and such, which will be immediately recognizable to any Linux user. But these are treated specially, in that versions are imported into the tree, then molded to fit the rest of the system. In fact, many of them used to be BSD-only; BIND and sendmail were originally developed at Berkeley as part of BSD, and only later became available separately. My FreeBSD system claims to be running gcc version 3.2.2 at this moment. Technically, it's not really gcc 3.2.2; it's a FreeBSD compiler based on gcc 3.2.2. The version of tcpdump I've got here isn't technically 3.7.2, it's a FreeBSD tcpdump based on tcpdump 3.7.2.
In most cases, of course, the FreeBSD version is practically indistinguishable from the vendor version. There're usually some changes to the compiling setup (Makefiles and such) to let it build cleanly with the rest of the system, and occasionally some necessary patches to make it compile and run right. Some changes are more extensive, and some are massive. But, they're all maintained together, and forced to play nicely together. There's a basic assurance that the pieces in a BSD base system all fit together, by design.
The primary reason an externally-maintained package becomes imported into and tracked in the base system is that it is, in some way, basic enough to the functioning of the system that it's easiest to have it there by default. FreeBSD currently uses the OpenSSH ssh server and client, which are integrated into the base system because, in this day and age, a secure remot
I was a linux fan from quite a while back and I decided to try FreeBSD to see the differences.
I installed it without much difficulty and poked around. I liked what I saw. I sorta shrugged my shoulders and said "Looks like a Unix system to me" and continued using Linux.
I was using Redhat for the longest time before RHAT forced me into migrating (Mandrake if you must know). I never really saw a reason to switch from this distro to that distro unless the features were significantly different.
I think it's all what you get used to and prefer. I never understood the BSD/Linux platform wars. To me, we're on the same open source team. As long as I can download the code, I don't see a big problem. If SCO got their wish and asked me for 699$, you can bet I'd be hopping straight over to FreeBSD. All the software I need is there anyhow.
After all, LinuxDistros/BSD aren't so different when they share the same features (KDE, openoffice, etc...)
I jumped from RH62 to OpenBSD3.3 some time ago. I have to admit that I've applied a lot fewer patches, security is much better, and the firewall is very powerful. In all, I'm happier.
However, I don't like:
And let's not even get started on Mac OS X.
The Ports System
Then, there's the second category; those programs which are add-on packages. In the BSD world, this is usually called the "ports system". That name is chosen for a specific reason.
Traditionally, when you wanted to run a package on your system, the first thing you had to do was compile it. And often before you could compile it, you'd have to fiddle with it. Your system would require different header files. Sometimes, manifest constants would be different. Sometimes, you'd even need to rewrite parts of it from scratch, because of basic assumption that didn't hold on your system.
Or, in other words, you'd have to "port" it to your OS, and/or to your specific system. The basic intent of the ports system is to do all that "porting" stuff for you. That it also automates building and installing, and provides packaging services (for things like 'uninstall') isn't as well reflected in the name.
But as with many things, it grew past its name into the beast it is today. The current FreeBSD ports collection has close to 10,000 packages in it (this number will, of course, be outdated quickly, but that's the nature of development). The most obvious feature of ports is that it builds things from source all the time, rather than just install pre-built binaries. This, it seems, is another one of those blatant differences that trip people up when trying to look at BSD from a Linux perspective. That it builds from source is just a side effect, it's not the primary purpose or difference. Binary packages are also available; in fact, binary packages are built from the ports tree!
Now, it's true that most Linux users install binary packages, and most BSD users install by building from source. Partly, that's a result of the tools; the ports system is designed around the concept of building from source, with the ability to make and install binary packages being something of an afterthought, while Linux packaging like RPM and dpkg and such are designed around the concept of installing a binary package, with building from source as an afterthought. Some of this is historical; binary packaging historically isn't a predominant theme in Unix systems, as I mentioned earlier. For that matter, packaging itself is a more recent thing. Traditionally, you'd deal with uninstalling and such manually.
Gentoo is a Linux distribution gaining in prominence these days. One of its big selling points is its portage system, which is often considered very similar to BSD ports. Perhaps most visibly, in that it compiles from source. That avoids a lot of the problem of binary packages. I've never used it myself, but the impressions I've gotten from information I've seen on it, and people I know who have used it, is that it's taken some good ideas from everyone, and smooshed them together. It'll be very interesting to see how it progresses and matures over the next few years. It's still much more Linux than BSD, but it may well be the closest to the BSD style of the major Linux distributions.
Now, there are advantages to pre-compiled binaries; mostly time (as in much less), and usually it'll take a lot less space to install a pre-compiled package, than it would to compile the package. There are also advantages to building from source, like avoiding all sorts of library versioning ugliness (my personal pet peeve with binary packages). You can install binary packages on Linux or BSD; you can build from source on Linux or BSD. But the users seem to be biased differently, because the systems are biased differently, because the users are biased differently... it all dovetails.
I guess what's important here is to realize that the difference between ports and RPM's isn't just that ports compile and RPM's just install. Ports are designed to cover the full range of bits and pieces of installing stuff; encoding and tracking and installing dependencies, packaging, installing and deinstalling, local changes necessary to build on your system, compile-time configuration tweaks... all those things. An RP
#include "sig.h"
The Ports System
Then, there's the second category; those programs which are add-on packages. In the BSD world, this is usually called the "ports system". That name is chosen for a specific reason.
Traditionally, when you wanted to run a package on your system, the first thing you had to do was compile it. And often before you could compile it, you'd have to fiddle with it. Your system would require different header files. Sometimes, manifest constants would be different. Sometimes, you'd even need to rewrite parts of it from scratch, because of basic assumption that didn't hold on your system.
Or, in other words, you'd have to "port" it to your OS, and/or to your specific system. The basic intent of the ports system is to do all that "porting" stuff for you. That it also automates building and installing, and provides packaging services (for things like 'uninstall') isn't as well reflected in the name.
But as with many things, it grew past its name into the beast it is today. The current FreeBSD ports collection has close to 10,000 packages in it (this number will, of course, be outdated quickly, but that's the nature of development). The most obvious feature of ports is that it builds things from source all the time, rather than just install pre-build binaries. This, it seems, is another one of those blatant differences that trip people up when trying to look at BSD from a Linux perspective. That it builds from source is just a side effect, it's not the primary purpose or difference. Binary packages are also available; in fact, binary packages are built from the ports tree!
Now, it's true that most Linux users install binary packages, and most BSD users install by building from source. Partly, that's a result of the tools; the ports system is designed around the concept of building from source, with the ability to make and install binary packages being something of an afterthought, while Linux packaging like RPM and dpkg and such are designed around the concept of installing a binary package, with building from source as an afterthought. Some of this is historical; binary packaging historically isn't a predominant theme in Unix systems, as I mentioned earlier. For that matter, packaging itself is a more recent thing. Traditionally, you'd deal with uninstalling and such manually.
Now, there are advantages to pre-compiled binaries; mostly time (as in much less), and usually it'll take a lot less space to install a pre-compiled package, than it would to compile the package. There's also advantages to building from source, like avoiding all sorts of library versioning ugliness (my personal pet peeve with binary packages). You can install binary packages on Linux or BSD; you can build from source on Linux or BSD. But the users seem to be biased differently, because the systems are biased differently, because the users are biased differently... it all dovetails.
I guess what's important here is to realize that the difference between ports and RPM's isn't just that ports compile and RPM's just install. Ports are designed to cover the full range of bits and pieces of installing stuff; encoding and tracking and installing dependancies, packaging, installing and deinstalling, local changes necessary to build on your system, compile-time configuration tweaks... all those things. An RPM is just a binary package. If you want to auto-install dependancies, you have to have a higher-level tool like urpmi or apt-get to do it. And, since it's binary, you have to deal with library versioning conflicts, or missing compile options, or any of the other limitations you incur by not building it on your own system.
And further, ports, like the rest of the BSD systems, are centralized. The "ports tree" is really just a big directory tree with a bunch of categorized directories, each containing a Makefile with some variable definitions, a checksum file, a packing list, and various other possible things. Each of those directories represents a single program, which is described by th
Did you know that "FTW" ("for the win") is a direct translation of "Sieg Heil"?
The first page stated that BSD is for those who like Unix and Linux is for those that hate microsoft, and that last statment is not going to win support for Linux.
Take the Wikipedia asking for donations last week, half the posts here at slashdot were, "Why don't they go salvage a few old PIII 600's and cluster them together. Should only cost about two grand". Hell, an worthwhile opensource project needs some help paying the bills and they get ripped apart here. Sorry geeks, but Econ 101: There is no free lunch. It costs someone something somewhere. (Yes I did donate $25. Not much, but all that I could afford at the moment.)
I do use Linux, but mostly I do use some kind of BSD, whether it be Mac OS X, OpenBSD, or FreeBSD.
I see the people trying to either be funny or karma whoring state: Well if he can show me a freeBSD server that can survive a /.ing...and I have to ask, "How many sites are taken down a week by slashdotting running Linux?" Hell I know our little 2.Ghz Xeon box with 1GB of Ram wouldn't survive no matter what OS we had on there, it is Linux btw.
Bottom line...the negativity needs to go out of OSS. Linux cannot have the banner, "Microsoft Sucks! and use us because...Microsoft Sucks!" and hope to really make it into the desktop arena. OSS and Linux needs a banner of, "Hey our system works, has fewer viruses, easy to use, and it will do any thing Windows will do, except play games."
And to the "any thing you can do, I can do for free" dot communist crowd: In order to make Linux viable, its going to need programs written for it like games, quickbooks, quicken, adobe products, that people are willing to spend money on and need before it will truely be accepted main stream.
"The problem with socialism is eventually you run out of other people's money" - Thatcher.
just get along?
I tried FreeBSD once, it seemed okay. I agree that the BSDs are probably a better, more reliable operating system than Linux. However, Linux was SO much better than Windows, that any improvements BSD could make seem minimal at best, especially since most of the server and end-user software is identical.
For example, someone once told me that BSD is much more stable than Linux. Assume that's true for a minute: I've NEVER had a Linux system crash, except for hardware failures, and I've been using Linux since 1998 or so. Okay, so maybe BSD is more stable than Linux, but the time spent learning BSD isn't worth the "extra" uptime I'd have, since the extra uptime is approximately zero.
As I mentioned, the end-user software is mostly the same, but I've heard Linux has more variety and more hardware support. My printer is supported under Linux (it's an HP USB printer), but I don't know whether HP is putting resources into BSD support. Same goes for my Palm Pilot. Since everything is working now, and I'm happy with how well everything works, why should I want to switch to BSD?
And why can't we have our own preferences anyway? Why do BSD users have to bash Linux and vice versa? The two are a lot more alike than different, at least compared to Linux vs Windows or BSD vs Windows. (It's almost like brothers fighting...)
--RJ "Firmly sitting on the fence"
General
Ah, now this is the part I enjoy. Lots of soaring generalities, without a single hard fact in sight. Saves the trouble of having to do research. 8-)
What I'm going to discuss here is some of the real and imagined philosophical differences that both cause, and are caused by, some of the technical and organizational differences we've discussed. Like most such discussions, there's little that's hard-and-fast here; there's plenty of overlap in attitudes among people in the various camps. And there's certainly plenty of completely deserved flak for both sides to take, as well as undeserved flak they've been forced to. Still, I think it's important to examine some of these splits, without trying to presume that one is "correct" and the other is "incorrect".
Realize, I must emphasize, that a lot of this is very general. Practically every point is riddled with exceptions. And both systems often don't "follow the rules", or fail to meet their own expectations. It's more a question of inclination that of exceptionless implementation. I'm just saying this now, so I don't have to keep qualifying and re-qualifying every statement I make, until it's impossible to read.
Chaos vs Order
One common generality is that the Linux methodology is the living incarnation of chaos, whereas the BSD methodology is far more about control. To a large extent, it's true. Linux grew out of a spare-time hacking background, while BSD grew out of a controlled engineering background. Of course, there's plenty of weekend tinkers writing BSD code, and plenty of full-time professional programmers sloughing away at various parts of Linux. But the feel of the systems still does reflect that sort of schism.
We've already discussed the construction methodology; BSD builds up a core system which is uniform, whereas Linux distributions takes pre-existing pieces and pretty much puts them together helter-skelter. Naturally, the BSD method is far more amenable to keeping things ordered, while the Linux method practically necessitates utter chaos. That's not to say that chaos is inherently bad, or order inherently good. They're just different environments.
Linux will also generally chase new versions of other programs much more closely, adopting particularly more major changes like Apache 2 much sooner than BSD will move that way. Now, the stricter separation of "base" vs "ports" in BSD, as well as the structure of the ports tree itself, make it easier to have multiple parallel versions of packages in BSD. Sometimes, it's even possible and easy to have multiple versions installed at the same time. Linux, by not having that sort of separation, makes it very difficult to have parallel versions, and instead almost requires a single "blessed" one.
And the primacy of source-compiling in packages also makes it easier to handle multiple versions. For instance, PHP must be compiled differently depending on whether you're using Apache 1.3 or Apache 2. With from-source packages like ports, I can define an environmental variable when I compile and install PHP to tell it whether to use Apache 1.3 or Apache 2. With binary packages, you'd have to have 2 separate packages available, which will lead to confusion sooner or later.
Right vs Wrong
The difference can also be seen in the way core code is integrated. BSD tends to always shy away from hackish solutions when there's even a hint of a proper solution in the wings. The theory is that it's far easier to wait for the clean answer, than to integrate the dirty answer now, for several reasons. For one thing, if you integrate the dirty answer, that reduces the incentive to implement a better one. For another, once you dirty up the architecture to integrate something it'll never get cleaned up again. You know it as well as I do. Oh, sure, you'll say it's temporary. But you know
I see a lot of folks in both camps that use both, because both have their strengths and weaknesses.
The folks that will choose one or the other and be biased about it are either:
1) BSD folks that tried out linux in 1994, and still have the impression stuck in their mind. They seem to think that linux hasn't changed at all since then.
2) Linux folks that at some point of their complete n00bness went into a BSD channel in efnet and asked some lame question like "since linux is unix, where can i get the FreeBSD RPMS?" and got flamed so hard that they had to crawl out of a hole in the ground. Therefore, they think that BSD users are all crusty assholes that cling to a "little used" OS that is fading into obscurity like people that try to ride out hurricanes. Hence all the "BSD is dying" bullshit.
And it's really sad. Both have their merits. Both share many of the same goals. I wish they could get along and do great things together.
My $0.02USD + tax.
do() || do_not();
5 And finally, the GPL would be democracy. Democracies are hardly ideal, they are slow, they waste a lot of energy, they infight a lot, but in the end there is NOTHING better.
Refresh my memory, how is the GPL not a "shared source" license again? How can I create a derivative work of GPLed code without sharing my code?
Oh, and you are mixing your metaphors. Anarchy, fascism and democracy are systems of government. Communism is a system of economics.
Serve Gonk.
I think with Linux's popularity, people often fail to understand that generally the same desktop environments, utilities, and such work exactly the same on the BSD's. Especially in the case of the ever-so-portable NetBSD, it allows one to have a Linux-like desktop on pretty any platform imaginable that's powerful enough.
Now, commercial/binary application support, and variety of device drivers available are the main areas were the BSD's are still playing catch-up.
Love many, trust a few, do harm to none.
-- Ed Avis ed@membled.com
...no really, I did read it. Honest.
Although the writer does have a few good points, he also has some rather large gaps in his knowledge. He really only knows the FreeBSD system, but seems to assume the other BSDs do things exactly the same. Some of his arguments would apply to NetBSD and OpenBSD, but not all of them.
His personal bias really shows through in the writing, almost bordering on making it a flame or troll against Linux, even though he mentions over and over that this is not the intent.
I'd love to see the same article written by someone with less personal bias, and more actual knowledge of Linux and the BSDs.
better than the avg linuxer.
On the "advise" (really more like repeated nagging, which seems to be fairly common from BSD enthusiasts) of a friend, I went with OpenBSD when setting up a server a year or two ago. Even after getting over the culture-shock, I ended up not liking it very much. I've gone back to debian, which I'm confident is every bit as secure, and is easier to admin.
/etc. Having to go searching for httpd.conf in /usr/local/etc or maybe /var/www/conf *really* bugs me.
I found the installer to be utterly cryptic, filled with unexplained single letter commands. I should not need a $40 reference book to install the freaking OS. Once it was up and running I was fairly comfortable, except for the propensity to scatter config files/etc around the filesystem. Maybe debian has spoiled me, but I expect to find *all* config files under
Then of course there is their reputation for security. They would have people believe that there has never been a root exploit; in reality, that only actually applies to the "base" system. I do like that the secure by default thing; having to specifically enable services is a good idea(getting the choice while installing is better though).
Exactly. If Microsoft takes a copy of your BSD licensed code, compiles it, presses it onto a CD, drops it into a shiny box (so shiny!) and sells it for $100...
What is stopping anybody else from doing the same thing? What is stopping anybody else from doing the same thing but only charging $90? Or $110 but including a nice manual? Absolutely nothing.
People who use the "Microsoft will use my code in a product" argument against the BSD license forget that the original code will still be available for free. Whatever the marketplace can accept paying for Microsoft's additions to otherwise freely available software then that is what Microsoft's additions are worth, regardless of how insignificant those additions are.
Serve Gonk.
I hereby propose an addition to the HTTP status codes for the 418 Slashdotted response. This response code MAY also automatically request that the clients operator place a temporary mirror online for a 24 hour period.
The comment at the top, in css class "ahem". Saying that my browser doesn't support css. What actually happened is your server couldn't serve the css page. With pretentions like these are you suprised people don't care about the facts of BSD?
Special Relativity: The person in the other queue thinks yours is moving faster.
1. Linux, not BSD is run like an anarchy. The kernel is done by one group, Gnu, the utils, libs and applications are another, they're not even vaguely in sync with one another and like a sloppy carpenter they're leaving it to the plasterers and painters (Distributions) to make it look good.
2. pass (aside from noting a Goodwin)
3. Small companies obviously vary, I've had both extraordinary good luck with some(most) and less good luck with others. That's called a market, caveat emptor. Particularly smaller software firms I've worked with have been extraordinarily good at listenting to customer requirements and actually responding.
4. Shared Source ... ahh now that's an important license type. Didn't want to contrast Public Domain, Artistic, MIT ...?
5. As with (1) you've reversed it. The BSD's in fact operate considerably more slowly than Linux in developement pace, however they do so with far better coordination of the various parts. Kernel, Libc, utilities are released together, and probably benefit from the faact that the whole assemblage is tested.
I have *nothing* against any of these systems, some I use, some I don't. Linux works, BSD works and I'm fluent in the advantages and disadvantages of each and can make educated decisions about which is appropriate to a given task.
You've also demonstrated that you don't understand crap about governments. The world has many flavors of democracies, the Linux, BSD, Gnu, Perl communities are all vibrant forms of demorcracies in action (as, by the way are commercial / proprietary vendor - customer environments.)
It's as simple as that. Let me guess you use Debian? or is it Windows?
Linux is Linux, if One need clarify their dist: <Dist>/GNU Linux
bsds are of course just BSD
I don't really get the schism between FreeBSD and Linux. I use both. The servers I have full control over usually get loaded with FreeBSD. The reasons for this are simple; I haven't found a Linux distribution with the ease of system upgrade and general maintenance that FreeBSD has. The ports system isn't perfect but using cvsup to get update patches for the core OS is simply wonderful. Combine this with the reputation for stability and it's a winning combination. A combination that makes me comfortable to upgrade the complete server remotely without worrying too much about the upgrade failing.
Gentoo is somewhat similar but they aren't aiming for ultra stability and they don't have a long term reputation like FreeBSD.
Debian is great for upgrades but the glacier pace of upgrades to the stable release is unacceptable.
Slackware is wonderful (I'm back to using it for my desktop OS) but upgrading the OS isn't as nice as FreeBSD. Third party tools like swaret are slick but not time tested.
I would love to have a tidy distributation of Linux and a small core of tools released in the same way as FreeBSD with a similar "make world" upgrade process.
It really is about freedom. Either you have it, or you don't... and beer has nothing to do with it.
You're off base with your comments.
Apple has released their changes when required, specifically KHTML, GCC, and others. They have also released their BSD codebase as Darwin, which is available at the following URL.
http://developer.apple.com/darwin/projects/
Feel free to look at all of the other code they have contributed. If you ask me, they're better than Microsoft simply because they participate. Microsoft doesn't do this, at all.
Maybe you're just writing flamebait and I'm a big sucker? Oh well.
Every time I witness a debate between BSD and Linux fans, I reminded of the Star Trek episode where the Cheronians were a race of people who were black on one side and white on the other. One group claimed the other was inferior because they were black on the left side instead of the right.
"Microsoft will bury it, just like they buried UNIX back in the 1990's when they called UNIX 'forked' and 'confusing' and offered Microsoft as a 'stable target'."
Microsoft edged *nix out of the low-end server market in the 1990s because companies were able to take any half-wit drunken dumbshit off the street and have him trained (sort of like a monkey) as an admin inside of a few weeks. The resulting drop in reliability from moving to Microsoft products wasn't substantial enough, and didn't kill off enough mission ultra-critical servers to justify moving back to the more expensive *nix solutions.
The fact that you could toss NT onto a hand-built off-the-shelf machine also made a big difference. Instead of moving back to the more expensive, but far more reliable *nix solutions, they simply segmented server functions such that isolated Windows failures didn't cause major problems. With promises of (relatively) cheap upgrades, much better reliability, and far more features on the horizon, Microsoft kept many companies with them by dragging the proverbial carrot along. The simple fact is that Microsoft did a much better job marketing the OS that the *nix vendors did.
-- "Government is the great fiction through which everybody endeavors to live at the expense of everybody else."
Dude, check the date on that. FreeBSD 2.x vs. Solaris 7 vs. (some linux that might well have been kernel 2.0 and libc5)? I know '99 isn't that long ago in our time sense, but that's two, three, or more whole OS revisions since that article was published.
I've admin'd *BSD (free and open), Solaris, and Linux in corporate environments (as well as a bewildering array of freenixen at home). All the systems have advantages, all of them have disadvantages. Personally, I run debian by choice when I can get away with it because *BSD, Solaris, and most Linuxen just piss me off in various ways, but I still use BSD where it makes sense. Running around trumpeting this or that OS as being the end all and be all of existence for everyone just shows that you're a greenhorn.
News for Geeks in Austin, TX
Anyway, I consider myself somewhat of an advanced *nix user, even though I've only been doing it circa 2001. I started out with linux, of course, and liked it very much. I've seen the both the system and the open source community make tremendous leaps and bounds in just these few short years, and I must say that linux is absolutely a fine operating system.
Despite this, I was also compelled to try FreeBSD; I'm always interested in trying new things and tinkering around as much as I can with things I know little about, so naturally BSD was the perfect target for me. Being used to linux, I found the subtle differences in BSD very attractive; I wanted to get in on this because of the useful knowledge would provide as well as the rich history behind it. Also, a tiny bit of zealously may have played a part ("Wow, it's really unix!) ;)
I had a touch and go realtionship with BSD for the past several years, but it wasn't only until this one that I got a little more serious about it. Putting linux down for a while, I delved deeper into the use and maintanence of the system, gaining the kind of more intimate knowledge that the casual user probably doesn't have.
What happened was that I loved absolutely everything about it; it was very different than linux! Instead of groping around for strange tools and trying to fight a quirky system with which, due to constant mutation, there was always some uncertainty as to the correct way of doing things (are you running distribution X, Y, or Z? What version of software package A do you have, and are you using libraries B or C?).
With BSD, I found a system that was consistent, reliable, and very practical in its design. If you wanted to do something, there was a right way to do it, and this way always works (and works well, at that). Package management was top notch, and upgrading, maintaining, and generally managing the system was a quick, easy, and painless process. It is often said that BSD is not "user friendly", but I guess it's true when they say unix is "picky about who its friends are." To a moderately advanced user like me, BSD was more friendly and easy to use than linux! There aren't as many programs that will hold your wee-wee for you so you don't miss, but all of the information you need to know in order to do a certain thing is always readily available and right up front, beckoning for you to do it yourself and do it right. (some linux distributions are much better in this respect than others)
It must be said, however, that linux is a very fine system in its own right, and not to be looked down upon in any way! As Matthew says in his article, the big differences are mainly philosophical and cultural, and I have just found myself very much at home in this culture and very agreeable towards this philosophy.
What puzzles me is all of the rampant slandering of BSD that goes on by linux users (only a small percentage of this is meant to counteract the slandering made against linux by BSD users). Yes, there are common myths (like the ones Windows users hold towards linux, which make us all cringe), and yes, there are many misconceptions afloat.
Regardless of personal preference, the fact remains that BSD is also a very fine operating system, and does a few things a lot better than linux. Of course, linux does a few things a lot better than BSD, so when choosing between the two it's important to learn what those things are and how important they are to you.
Not from the featured article, but from here:
4.4 What versions of BSD are available?
In contrast to the numerous Linux distributions, there are only three open source BSDs. Each BSD project maintains its own source tree and its own kernel. In practice, though, there appear to be fewer divergences between the userland code of the projects than there is in Linux.
It is difficult to categorize the goals of each project: the differences are very subjective. Basically,
*
FreeBSD aims for high performance and ease of use by end users, and is a favourite of web content providers. It runs on PCs and Compaq's Alpha processors. The FreeBSD project has significantly more users than the other projects.
*
NetBSD aims for maximum portability: ``of course it runs NetBSD''. It runs on machines from palmtops to large servers, and has even been used on NASA space missions. It is a particularly good choice for running on old non-Intel hardware.
*
OpenBSD aims for security and code purity: it uses a combination of the open source concept and rigorous code reviews to create a system which is demonstrably correct, making it the choice of security-conscious organizations such as banks, stock exchanges and US Government departments. Like NetBSD, it runs on a number of platforms.
There are also two additional BSD UNIX operating systems which are not open source, BSD/OS and Apple's Mac OS(R) X:
*
BSD/OS is the oldest of the 4.4BSD derivatives. It is not open source, though source code licenses are available at relatively low cost. It resembles FreeBSD in many ways.
*
Mac OS X is the latest version of the operating system for Apple Computer Inc.'s Macintosh(R) line. The BSD core of this operating system, Darwin, is available as a fully functional open source operating system for x86 and PPC computers. The Aqua/Quartz graphics system and many other proprietary aspects of Mac OS X remain closed-source, however. Several Darwin developers are also FreeBSD committers, and vice-versa.
After reading that I feel almost ashamed. But really the author and all those that think like that should feel shame. I like FreeBSD for it's licence and it's legacy. Maybe FreeBSD now is as the author discribes but there never would have been a FreeBSD without the origional BSD hackers fixing things and sharing patches. Not all the patches and programs origionated at Berkley. What the school did was organize a distribution amist all the chaos. In reality it was the first hacker rebirth of an OS. They took a flakey prototype and make something useful of it.
The only real part the author got right was the anology in comparing BSD/Linux to PC/Unix users. Mainframe verses PC; Client/Server verses decentralized P2P. But there is no reason it has to be that way. And in fact it can't because FreeBSD is just a fragmented in it's pieces as linux, many like him just won't admit it.
I like BSD for it's licence. I dislike Linux for it's licence. There is some truth to FreeBSD being a stronger distribution (which is another reason I like it) but it's still a distribution all the same as any Linux distribution. His statements to the contrary just don't stand up. Both sides pick and patch from what's useful.
FreeBSD is a distribution built around a core set of tools with relatively tight quality control. It is more focused that many Linux Distros. FreeBSD is also controled democraticly among the elite where Linux people have no problems forking code and competing against one another, with users and distributors judging the winners and hence is more democract.
The FreeBSD ruling class may have a bug up their ass about somethings but I'm still free to fork code. But it turns out it's not worth it. If you have good reasoning on your side and enough patience people learn, or else they die while you persist. In gerneral BSD is more about patience, who has it, and who doesn't.