Friday, January 16, 2004

BSD for Linux Users

I just finished reading an excellent article called BSD for Linux Users by Matcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365w D. Fuller. He gets to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 heart of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 matter to describe how Linux and BSD are different. Here's an ex cerpt on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BSD base system:

"The concept of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "base system" is something that, I think, causes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most trouble for people used to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Linux methodology. Which is perfectly understandable, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole idea just doesn't even exist in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Linux world.

Linux, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 start, was just a kernel. Without getting into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 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 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 userland utilities to make it work. Linux has always been a conglomerate; a kernel from here, a ls from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, a ps from this ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r place, vim, perl, gzip, tar, and a bundle of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs.

Linux has never had any sort of separation between what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "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 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system is just one or anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r add-on package.

By contrast, BSD has always had a centralized development model. There's always been an entity that's "in charge" of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system. BSD doesn't use GNU ls or GNU libc, it uses BSD's ls and BSD's libc, which are direct descendents of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ls and libc that where in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CSRG-distributed BSD releases. They've never been developed or packaged independently. You can't go "download BSD libc" somewhere, because in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 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."

He explains cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ports tree:

"The difference between ports and RPM's isn't just that ports compile and RPM's just install. Ports are designed to cover cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 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 RPM is just a binary package. If you want to auto-install dependencies, 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 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r limitations you incur by not building it on your own system.

And furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, ports, like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BSD systems, are centralized... all those files in that big directory tree are maintained by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FreeBSD project itself. When somebody wrote KDE, for instance, it didn't magically appear in ports trees everywhere. Somebody had to write all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 necessary "glue" to build a port for it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n commit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FreeBSD CVS repository so it would be in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ports collection. So again, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's some level of assurance that it works with ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ports collection. Any dependencies it has will be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, because it can't declare a dependency on something not in ports."

He also talks about release engineering:

"In a very real sense, BSD systems are constantly developed; I can always update my system to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 absolute latest code, irrespective of "releases". In Linux, that doesn't really have as much meaning, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 release process is very different. I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 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 togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with version X.Y.Z of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Linux kernel. In BSD, however, since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pieces are all developed togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 verb "cut" makes a lot more sense; a release is "cut" at a certain time."

I highly recommend reading this article.