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.
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.
We'll have rabbits and chickens and live off the fat of the LAN.
Appologies to Steinbeck
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
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
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?
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.
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...)
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"
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.
It really is about freedom. Either you have it, or you don't... and beer has nothing to do with it.