I've used Linux for about 18 months now, and have been learning about it for much longer. I first wanted to start off with Slackware, but that wouldn't really work for me (I burnt the CD's wrongly ;)) - I then decided to take a challenge and try Gentoo. The Installation Manual was great - and I had almost no problems installing, so Gentoo was the distro for me. I've used more distro's after that - below I want to write a small "review" for each distro I try and introduce it to you (its package-management/build system and the init system). The information isn't complete, and isn't intended to be. Use "man programname" to find out more about a specific command.
OK - this is the latest distro I've tried. I absolutely love it. Everything is built from source, you can optimize if you want. Customization is possible into the highest level. And it uses SysVInit by default! (The BSD/Slack init system) You learn a great lot during the installation, including lots of new commands and ways to do things. I tried 6.0 with the LiveCD, and it worked as a charm, except that I'm still a networking n00b and don't understand that part of the configuration :) The guys at #lfs-support@irc.linuxfromscratch.org are also very nice. I'm going to do a reinstall soon now, with most of the installation scripted. And the cool thing is, even if you don't like some of the things I said here, it might still be the best distro for you.
Note: I tried 0.6, and 0.7-beta2 is out atm, so maybe some things aren't applicable anymore.
I really liked Arch Linux - it has a lovely i686-optimized package management system (pacman) and support for building stuff yourself as well. It is highly customizable, with a lot configured using
/etc/rc.conf (I remember at least modules and init scripts/services).
Not very many packages are out, and they don't work through their incoming packages very fast either. (I tried it 3 months ago - guesstimating - and they haven't handled the packages that I uploaded yet. Packages are quite easy to build (though you actually write a build script, "makepkg" does the building part for you), just follow the guide on their site. Have a look at
ftp://ftp.archlinux.org/incoming for a glance of how huge the list is.)
It is one of the better distro's out there, IMHO, except for that some packages didn't work for me (firefox, galeon - and without a proper browser I gave up). I plan on trying it again sometime soon, so changes might be here soon.
I think Slackware is the way to go if you had an easier distro (RPM-based) before, learned about linux and want more of a challenge now - have a look at many aspects of linux. For Slackware only a small amount (IMHO) of packages is provided with the iso/on their site. You have to retrieve many packages yourself or build a lot from source (
G4L and
LinuxPackages are your friends here).
I don't like that their packages are optimized for i386 and i486 (generally) - this makes it suitable for old PCs but not very fast on modern boxes. I also think their package management system is ancient - they have no dependency checking and you must have the package file on your disk (or I used it wrongly). A plus is that two front-ends for their system are available:
Swaret and
Slapt-Get. Swaret tends to give a lot of trouble (it did for me and I've heard that it did for many other people as well) but both are quite suitable for upgrading.
I really like their init-system - it is based on the BSD's and is very simple. The only thing you have to do to turn something on or off is toggle its executable flag. You do have to alter the runlevel script when you install new init scripts so that it looks for your new one though.
I've tried building a qingy package on Slack, but didn't succeed. The basics of package building aren't very difficult though - all you have to do is build it in an alternative root.
This is the system that I most enjoyed using.
I absolutely love sorcery, their build system. I think it is way better than portage because it's much more open - it's written in bash, much easier to learn and read than Python IMHO. Also at the beginning of each build, it has a configuration phase in which you get asked all sorts of questions ("Compile in support for foo? [yes]") - thus it allows much greater customization than Gentoo with their USE variable.
The build-scripts are really easy to write, and even easier to understand since you can easily read through the entire system.
The SMGL community is the best. Very few people and a really helpful irc channel (#sourcemage@irc.freenode.net).
The above things together make it really inviting to help with development - few packages, packages are easy to write, nice and helpful people, great customization.
The only things I didn't really like are the init system (it uses telinit, not very easy to look under the hood IMHO) and it wasn't very stable - sorcery is a little buggy and packages don't always work perfectly.
I've tried Debian both on PPC an x86 now, and I really really like the system. Apt-get is easy and fast and configuration of any software is a charm using debconf! It took some effort to get it working on x86 though, since the installers didn't work - in the end I installed from knoppix using a customized version of
Juerd's. That way you get a clean system, it's easy to install and it works (be sure to start off with stable though, and only change sources to unstable - or even testing - when you've installed the base system). On PPC it worked out of the box, except that I needed a very specific
XF86Config-4. But after finding that on
DotFiles (thanks #debian-ppc guys) the system worked like a charm.
I started off with this distro and am using it again now.
Gentoo uses a build-system called
portage for program installation. Build optimizations/customizations are configured in
/etc/make.conf. For more info on using the system, have a look at my
Gentoo Cheatsheet.
Gentoo is fast, customizable and the learning curve is steep. The Gentoo documentation is absolutely fabulous, and they have a huge forum with even support for different languages. portage is not very open, they use all sorts of customized programs and it's written in Python. Their init system isn't very open either. The system always works, and is simple to maintain. I see Gentoo as a CLI-based mainstream distro actually.
This is the most professional Operating System (Open-Source, that is - I don't have much experience with Mac OSX) that I've used so far - I haven't compared it with OpenBSD yet, but I can safely say that this system stands as a rock. It has _the_ init system that I like and it has support for both building from source and binary packages.
FreeBSD is not Linux! It is a variant of UNIX, just like Linux is, but uses a different kernel and is developed by a single group of people (all in one). You have to get used to it, and its build system isn't as straight forward as portage, but it's how I like it: very close to the core. Every application has its own directory which contains several files - most importantly the Makefile. It uses the Makefile to retrieve the sources, apply the patches and build the sources. You install a package by running "
make install distclean" in its directory. This builds the program, installs it and removes all working directories (both its own and the dependencies').
You upgrade the tree by installing cvsup, configuring it and running:
cvsup -g -L 2 /path/to/configfile
You can then use the portupgrade tool to upgrade your system.
I haven't found a way to install multiple programs at once - except for running a "chain" of commands which cd's to the appropriate dir and stuff like that. But I don't think this is very elegant.
FreeBSD and Linux don't go together very easily - most binaries compiled for Linux don't work on FreeBSD and the setup is different. Also UFS is only supported read-only by the linux kernel, and FreeBSD only has support for ext2. They can easily share SWAP-space though. Some people use FreeBSD SWAP on Linux, I prefer to use Linux SWAP in FreeBSD - this saves a lot of trouble, since you can mount it without any configuration.
For more information on FreeBSD have a look at the
FreeBSD Handbook.
Ubuntu is fabulous for a first-time install. It recognizes all your hardware and is easy to use, but there is not very much software easily available: what I like to do is change the sources.list into a general Debian sources.list, this way you get all Debian's packages (which does change some things, like you suddenly do have a root user) and basically the only thing you keep from Ubuntu is the kernel (the only thing I personally was interested in).
I still want to try: