This is in response to a recent diary entry from bytesplit, where he talks about his pain installing Debian. This is an experience that many have gone through. Some consider Debian to be a rite of passage, in part because it is hard to install. I don't know whether that's still true, or whether it is just part of the Linux mythos.
Whether it's still hard to install or has become easier in recent years, there is a still certain coolness and mystique associated with Debian as the completely open-source distribution. However, that is somewhat offset by the fact that Debian's components are old (compared to commercial distros like RedHat, or to the latest stable source code from many components' maintainers). The Debian maintainers are cautious and conservative; one of their design goals is to make sure a properly installed Debian system is as stable as possible. For example, its kernel is at 2.2, and even in the "testing" distribution 2.4 is not the default. So when you're running Debian in its recommended configuration, you're not running a kernel that you can hack on and make meaningful contributions. To make Debian cool in every sense of the word, you would have to update many of its components, compiling from more recent source code.
I thought about using Debian on my first Linux install (1997). I really wanted to do that for the reasons mentioned above (coolness, rite of passage), but I also wanted to complete most of the install in a single all-night marathon. I ended up using RedHat 4.2 instead of Debian, thinking I would apply Debian in a few months after I had learned the ropes of Linux. However in the end I just updated to a newer compiler (egcs/pgcc), and downloaded and compiled the source tarballs for new kernels, libraries, applications, X11, etc. until little remained that was RedHat. Was my system Debian? Of course not. Was it RedHat? Not hardly. It was assembled piecemeal, and it was mine.
Then GNOME started to gain momentum. I was running KDE, and liked it, but I wanted to have GNOME apps available to me as well. I tried to overhaul my system to the point where it would compile and run GNOME, and I got close, but it became apparent that it would take a complete system overhaul to get it to work. glibc2 seemed to be one sticky point, but there were other problems with my piecemeal system. So, I decided it was time to reset my system by installing a new distro, to restore sanity to my system.
Again I looked at Debian, but I found that many of the components in it were older than the ones I had installed. They were working hard to get a stable glibc2 platform - this was almost only a few patch releases behind the glibc, but their kernel and some other things were older than what I had.
I decided to go with Mandrake 6 instead - I heard good things about it. I liked that it included and was compiled with the pgcc Pentium-optimized fork of GCC. Anyway I was so pleased with it, that when it was time for my next major update, I decided to use Mandrake once again. I've been very happy with the results. (The kernel and some other components have been built from more recent source, but Mandrake works pretty well for me right out of the box, and is a good launching pad for minor surgical hacking.)
I use Debian for all of my development. It's true that some packages have a longer upgrade delay than on other platforms. However, by running the testing or unstable distributions and pulling from external apt repositories, building my own packages from source occasionally, and using apt "pinning" to do custom upgrades, I actually find it much easier to stay up-to-date with bleeding edge software on Debian than on other operating systems. By the way, all of the developers I've worked with who use Debian run testing or unstable. The fact that Debian does provide an extensively tested stable system does not detract from its more frequently updated distributions.
Debian may not be the best system for everyone, but I strongly deny that it's "harmful." There are areas where Debian is weaker than other distributions, but there are also advantages to working with Debian. The "free software only" policy, for example, has practical effects as well as agreeing with some people's ideological views. Because my machine runs Debian, I know that whenever I encounter a bug in any program at all, I can install the source with a single command, modify it and distribute my changes to others, and submit a patch to the maintainer (another single command). This makes me much more likely to hack on and contribute to the software I use.
For me, the most important advantage of Debian is portability -- especially since my main workstation is a PowerPC box. With Debian, I can have the exact some environment on twelve different machine architectures, with all of the same tools and libraries auto-built and instantly installable on each of them. No other GNU/Linux distribution -- in fact, no other OS except NetBSD -- provides this benefit.
Regarding installation: I have no experience on the 386 platform, but installing Debian on a NewWorld powermac is incredibly simple and straightforward. I certainly don't know of any "mystique" surrounding Debian -- I always thought it was just one of many platforms to choose from, with certain features that made some people prefer it.
I've been running potato with Ximian Gnome for more than a year. It's just an additional line in your apt sources file, and you have Gnome and gtk packages even more recent, and better put together, than what you can find in Debian unstable. Yes, the Debian developers will point out that the Ximian folks have in the past made a number of packaging mistakes, but they've gotten better with experience, to the point where this is no longer really an issue. The Ximian version of the Gnome desktop is solid and as up to date as you want to be.
Just the same, I can't recommend the use of potato for a new machine, because with such old software you're likely to experience hardware support issues. Woody can't come soon enough.
To be fair, I have had two types of problems with Ximian Gnome on potato over the past year:
I disagree - I think there is a certain mystique about Debian, but whether it is warranted or not is a completely different issue. When I first started on Linux, Debian had a reputation as being a "hard-core" distro, whereas others like RH or Mdk were "easy".
I suppose bdodson was simply saying that Debian is such a tradition of Linux in that if a person can install Debian, they can do anything LInux related. Again, whether this is true or not might be a different matter (anyone use Slackware?...;)
Having said all this, I installed Debian last week, and I was impressed not by my ability to achieve such a hurdle (!), but rather by the improvement in performance. I like the system and get a sense that I have only scratched the surface whereas with other distros (like Lycoris and Mandrake) I feel that I have reached the limits. More to learn for me! Maybe this level of ignorance is what keeps us hackers interested in systems like Debian - we need the complexity and challenge to cheer up our lives? ;)
Well, I guess I won't be the only one who defends his favourite distribution, but I'll try to explain why I use Debian and why I believe it is anything but harmful.
I won't go into detail about whatever libraries and/or fancy GUI stuff woody does or does not have. However, there is another distribution of Debian, called 'sid', and, despite being officially unstable, I've learned to appreciate it. Not because it's a "rite of passage" or a "mystical experience", but for the following reasons:
a) It's easy to use
b) It's easy to add software to it
c) It stays away from the modifications I make to my configuration files
d) It's up-to-date on Alpha
e) It's stable
f) It has a number of policies for various things (like where documentation should be stored), and keeps to them
Regarding (a): Every single tool I need, except for some proprietary binary-only programs (Compaq's C/C++ compilers and JVM, to be precise), is available for Debian. This includes packages like emacs21, ocaml and hugs (with major modes for emacs21) which aren't that wide-spread among distributions geared towards end-users.
Regarding (b): I've yet to see another distribution come up with something resembling 'apt-get install <package>'. I can't see installation getting any easier than that... Note that updates are similarly easy, and can be performed (with non-trivial differences) almost daily (this would count towards (a), of course).
(c) is important for me. SuSE, the other big distribution where I live, may be trivial to install, but it does keep everything in a single, big configuration file which it generates the other files from (or, at least, it used to) without bothering about anything else I may have put there.
(d) speaks for itself-- name any other distribution which is up-to-date on Alpha...
(e): Note that I once had a down-time of a day because of a broken 'important' package (nscd, IIRC). This did anger me a bit, but, considering how many updates I've installed without the slightest trace of a problem, I believe I can let them get away with that ;-)
Please note that this doesn't mean that I believe that other distributions are not up to date or scatter documentation in random directories; far from it. There are many distributions I'd consider "good enough" for general use (for example, I'd recommend SuSE 8.0 to a newbie without an internet connection any time, because he'll want something KDE-ish with some sort of office package and won't care that there are no automatic updates to his C compiler), but Debian does seem to have a market for which it is the "best pick".
BTW, my installation experiences with Woody and Sid on Alpha have all been smooth and painless; A recent IA32 installation on a friend's box didn't go quite that well, though (since I started with potato packages and switched during mid-installation; also, lilo, which is still the default boot loader on woody, isn't quite as flexible as aboot). Of course, once it's up and running, the only reason to re-install it [the only reason I have had, that is] would be a broken HD.
(On a side note, Debian maintainers are the only distribution maintainers I ever received patches from.)
To summarize my experiences: Installing Debian isn't nearly as much fun as it is for, say, SuSE 8.0. But once it's up and running, you'll have an easy time keeping it clean, stable, and up-to-date.
And, frankly, I don't install Debian (or any distribution, for that matter) all that often.
First of all, debian isn't that difficult to install ... it makes a great beginner system (imo). Secondly, a non-freakin-simple install is a great learning tool - and learning is a good thing. If you want a difficult install, build your own distro :-P. A gnu/linux hacker should be willing to learn how the whole damn thing works anyway.
after some spending of effort trying to understand what exactly I find deeply wrong in this article, I think I found it.
you say: "look kids, if you want to hack the kernel, don't install Debian". which is a rather meaningless thing to say, because if a person is qualified to hack kernels, they don't need this kind of advice; and if the person is not qualified to hack kernels, or (*gasp*!) has, you know, other interests in life, then they get to enjoy a nicely put together and very stable working envoronment. so where's the problem?
I find this kernel-hacking fetish (usually accompanied, in the same breath, by this silly belief that you absolutely *have* to run the latest crashy Gnome/KDE/what-have-you whizzy computron wasting RSI inducing gummy wrapper around shell/Web/mail/news) really bizarre, even sick.
I don't think so.
I hardly ever need to compile something myself (except for my own stuff of course). If you're tracking 'testing' or 'unstable' (currently woody and sid resp.) I doubt you'd feel the need for something newer. With the 'pinning' feature of apt you can even track testing and still use, say the newest Mozilla1.0 package from unstable.
In fact, I think it's a great system to develop on. I used to loathe having to make sure my self-compiled dependencies stayed up to date, while I'm working on some project. Now I just leave that up to the Debian maintainers. Not only do they know the package quite well, they also polish it, make it conform to the Debian distro, and often contribute to the portability of the package in question.
As for installation. It's textbased, but that's not necessarily a bad thing. If you do something out of the ordinary the installer usually picks up on it too. No complaints here. Maybe I'm just not aware of the state-of-the-art in installers.
I personally find debian to be one of the best distributions around because of its excellent package dependency checking and package fetching. it makes keeping a system with reasonably recent software easy. My server is still running potato, my desktop runs testing (aka "stable woody"). Both have been running 2.4 kernels for longer than i can remember, just build whatever bits you find unacceptably out of date yourself.
I recently upgraded the harddrive on my laptop and decided to start fresh by installing gentoo for kicks. That is much more difficult to get going properly than debian (if for no reason other than having to wait forever for software to build since it is a 100% source distribution). gentoo is fun to play with (where fun includes some frustruation) and satisfies my urge to use a source based distro without running freebsd.
doing serious kernel development or hacking on a project? they why would you want a distribution for that software? you need to be using development snapshots and building your own.
As for redhat, i tell people to stay away from it. i've never used mandrake but from what i understand it's supposedly redhat with some usability thrown in. that's much better but i can't recommend any distro without package dependency resolution and simple package fetching. i also don't like distros that include broken compilers and c/c++ libraries.
Advice to debian users: learn the common uses of apt-get, apt-search and dselect. make sure security update sources are in your /etc/apt/sources.list.
Advice to gentoo users: emerge and go grab several cups of coffee and a book. don't forget to plug your laptop in, the battery isn't enough for an install.
Advice to rpm based distro users: ask yourself why you think rpms are great and see if any of it is really true.
Thank you for your replies so far; I'm really enjoying them. First a few points:
Five years makes quite a difference; in 1997 RedHat (as a dual-boot system) was an all-night install. Today, if it's anything like Mandrake, it can be completed while watching Live with Regis and Kelley. So now maybe "Debian as a first exposure to Linux" is the all-night install, whereas in 1997 it might have been a week-long nightmare for a newbie.
Also, I want to say that I don't think anyone needs to run the very latest. I just recognize that some want to, and would-be hackers often fall in this category. I don't remember which version of KDE I'm running, but I know it's not the latest. And back when KDE and GNOME were new, I wanted to have them avaiable not for daily use, but for when I felt like hacking on KDE or GNOME. AfterStep was my main window manager back then. I ran KDE about 1/3 of the time, and GNOME much more rarely. But I enjoyed watching KDE stabilize leading up to the 1.0 release (and grow in subsequent releases), and tried to make some small contribution as a tester in those early days.
Now back to the question I was teasing at in my article: we have someone like bytesplit, who does not have experience with Linux, but wants to learn it, and also is interested in programming. Is Debian a good choice for him?
It sounds like there are good arguments in favor of Debian; it's not a terrible ordeal - just not cakewalk either. So, unlike with the commercial distros, a newcomer can still learn something while setting it up.
There are also good arguments to be made for using an easier distro as a way to get a leg up on Linux. It's easier to learn Linux once you've got it off the CD (or off the Net) and onto your hard drive. I would hate for a user to get frustrated and walk away from Linux because they thought "it must be Debian, or else there's no point in doing it".
However, here's one thing that I did not expect to get out of this thread, that surprised me: I am getting a sense from people like mbrubeck, jameson, and splork that, as an experienced Linux user who has already learned the ropes, I might just be missing something by staying clear of Debian.
I'm especially intrigued by this talk about APT and pinning. I'd like to look into this further. Can someone elaborate on this: what makes Debian's packaging manager so good? How would APT help me maintain a system with some stable packages, some more recent unstable / testing packages, and a few applications built from source?
err. sorry. Thought this was that other place.
I've tried Debian quite some time ago (IIRC, before apt tools). I recall hating dselect with a passion. Perhaps that was why Debian lasted on my box for about 3 days. I believe a distribution should stay out of the user's way for the most part. For me, it has always been Slack. Slack 7.0 feels just like my old Slack 3.x. Software changes, but the distribution still has the same feel. I've tried Red Hat also, and to me it just gets progressively annoying with each version. I can't put my finger on it though.
Since I'm offtopic (though, I'm not exactly sure what the topic was to begin with :-P) and this is a Linux-centric article, let me ask you this: what are the benefits to using a *BSD today? I tried FreeBSD right before my first Slack and I recall it was very much like Linux. Does anyone dual-boot (or have a seperate *BSD machine) for coding purposes? Any special software that only runs on *BSD? Is there about the same amount of difference between Linux distributions, as there is between a Linux distribution and say, FreeBSD?
Debian works perfectly well as a stable, useful operating system. It also works perfectly well as a modern, even bleeding edge, system. If you're running potato then you can expect it to be old - it's almost 2!
Run woody and enjoy it. Use package pinning, install the bits of unstable that you need without needing to fully upgrade. Use apt and have access to thousands of software packages.
At UWA many central services run on Debian GNU/Linux. I've heard a LOT of complaints about Debian, and almost all relate to a lack of knowledge about the system.
I have to maintain one RedHat box and find it awful. You're stuck with Sendmail for a start, unless you decide to trust random-person-off-rpmfind.net and their package. up2date is completely useless compaired to apt, although the notification of security updates via email is cute.
Hello, I am Lazy by nature. That is the reason I am here. At the beginning, I ran slack, and then RH and mandrake because it was easier to install
One day, I was asked for a company to package GGI for debian, and do a framebuffer driver. I convicted them I'd use mandrake, and they gave me a chance to prove mandrake was not harmful...
First, the kernel shipped with this mandrake suffered «massive file system corruption» after some crash, my FS would forget all my day job. Then, I was asked to compile libggi. I did it with a mandrake, it worked fine, but the execution would provoke a segfault. I thought as a physicist, I was not good at doing it, so I asked another developper to do it for me (that had no time to do it). Then, we had to do the packaging, so I had to switch to debian. The first install was a a pain (Where is this tool, where are the conf file ...). But then 1) I had no further amnesia from my filesystem 2) libggi would compile, and run without any flaw!
A few days later, I met one of the VP of mandrake soft, and asked him innocently if any major flaws were known among this distribution, and he told me it was fine. I asked him, if they were any report of FS corruption for there kernel, they said no... and if they had any weird stuff happening with their compiler he said no too. At this time the newsgroups were full of warning concerning both the compiler they were using and the kernel.
This distro harmed me in two ways : I lost time on my project, and if I had not compiled libggi this project was over. And, above all, I lost trust in these people that were lacking of honesty. Can one project work without transparency? At least, debian has a weekly news that speacks of the security breach in their package. And they just tell the truth, even concerning what does not work because of debian packaging.
Though mandrake was easier to install, it did me much harm because I could not rely on it, and trust their word. As a lazy man, I hate not loose time on the tools that are supposed to work, and not even be able to track where the probleme comes from.
There is much more then the installation, that one should see.
I have to maintain one RedHat box and find it awful. You're stuck with Sendmail for a start, unless you decide to trust random-person-off-rpmfind.net and their package.
That's funny. Just because RH provides sendmail by default doesn't mean you're forced to use it. But I digress -- RH has provided postfix with their distro since RH 6.2, and possibly further back, but I'm too lazy to look.
Being a debian user of a few years now, I can say that installing debian was very straight forward. For new users it could help to havea graphical partitioner, but if your comfortable with cfdisk/fdisk then it is very painless and simple.
I myself have never had to use dselect, as I just use apt-get install something, or if I can't figure out the package name I just apt-get install aptitude
Typically to get a usable debian 2.4 testing system all you need to do is install the debian 2.2 series, then edit /etc/apt/sources.list and replaces all occurances of "stable" with "testing"
From there I do a apt-get update, apt-get dist-upgrade then I go to ftp.kernel.org/pub/linux/kernel/v2.4/ and download the latest 2.4 kernel, and run the following command:
apt-get install kernel-package libncurses5-dev vim vim-rt aptitude bitchx linuxlogo ssh proftpd
and then I am good to go. As for installing x-windows: once your upgraded to testing, apt-get install x-window-system
Also www.debianplanet.org has good news on debian, and #debian on irc.debian.org is a invaluable place to get help
My first Linux distro was Yggdrasil Plug and Play Linux, which I thought was OK, but it was discontinued early on, so I switched to Slackware at the recommendation of a friend. I've been running Slackware for many years now, and specifically on my Compaq Presario 1800T laptop since I bought it in 1999
I really enjoy Slackware, and I think it's a great distro, and expect to keep running it for a long time. But one thing that's always disappointed me is how hard it is to update when a new release comes out. Patrick Volkerding's own recommendation, I understand, is that one should to a full backup, reformat one's hard drive and reinstall from scratch!
Short of that, the recommendation is to use pkgtool to remove all the packages, and then do a new installation. If you don't remove the old stuff, lots of unused cruft stays lying around your filesystem. Also, doing an upgrade without removing the previous version's packages can result in running out of disk space during the install, with the result that one might not be able to boot (this actually happened to me once, before I Learned the Slackware Way).
I decided to give Debian a try when I decided to install PowerPC Linux on my Power Macintosh 8500 - so my first Debian install was on a Mac! (I had tried mkLinux on it a long time ago but didn't keep it.)
And man, did I have a hard time. First of all, the Debian Potato PowerPC installation instructions were just plain wrong in a few places, being essentially cut 'n paste text from the x86 manual that hadn't been modified in all the places that were necessary to be appropriate for a Mac. One big problem I had was figuring out the Mac partitioning utility during the installation, it took me hours to get my partition table set up, even though I had partitioned lots of x86 PC disks and even SunOS SMD disks before.
Another problem was that the Potato boot floppy had a bug in it that prevented installing from floppy disks. I think the problem was in the ADB driver or something, so that when I was prompted to "press any key to continue" it wouldn't respond to a key press (I think this is fixed now but I'm not sure).
Next I tried to use tftp booting, and configured a tftp server on my Slackware machine to serve a kernel to the Macintosh. On some Macs (the newer ones), I think this sometimes works if you escape into Open Firmware right when the machine starts up (command-option-O-F I think). And I could actually get the kernel starting to load! But it wouldn't finish.
And then I found the real solution somewhere on Debian's website, but it wasn't at all obvious from the installation instructions: install BootX under Mac OS, then put the kernel in the "Linux Kernels" folder in the system folder, and put the ramdisk image and the base install archive in a folder somewhere on an HFS partition (but not HFS+!).
Boot into Linux from BootX after selecting the ramdisk image, then when it's time to do the base install, mount the HFS partition (the kernel has an HFS filesystem driver!) and give the path to the base install archive. Note that the archive has to be sitting inside nested series of folders just like it is stored on debian's servers (this wasn't explained anywhere).
So in the end I got it installed OK. I had used dselect when programming debian for a contract I did once (the client had set the machine up) so I knew a little about that. One thing that's impressive about debian is that there are far more precompiled binary packages for Debian than Slackware - I had long been in the habit of always installing stuff on my Slack systems by compiling from source, which means I cannot generally uninstall them (there is a way to roll your own slack packages, but it takes more effort than building a debian package).
Also very nice is that as new software became available, choosing to update in dselect would result in new versions of anything I had installed just getting downloaded, installed and configured right away.
I first installed Debian PPC in the Spring of 2001, but had to take it off because I needed the disk space for something else. But I put it back on this winter. At first I installed potato, but wanted more recent software. I had meant to install woody, but thought that woody was "unstable" rather than "testing", so I installed sid. But the upgrade went fine. Sid gets updated much more frequently than woody, so I was always downloading updates - I learned not to do my update in dselect so much. Although Sid is supposed to be bleeding edge I had hardly any trouble with it.
What I would recommend to any Linux newbie is to run Debian - but get an experienced friend to help with the installation! I plan to install Debian on my brother-in-law's computer this week - he's never used Linux at all before! But I'm going to do the installation for it.
It's also important, once you get Debian installed, that you Learn The Debian Way. Read the policy document for one thing, and the apt HOWTO. If you're going to build your own kernel, get the make-kpkg package and build your kernel as a debian package. There's a web page at the debian site about building your kernel the debian way. The Debian Way is very well documented, and if you know it, you will find the machine very easy to administer.
One more tip: be sure that you install X11 in at least two stages. Don't use tasksel (the compact list of package options presented during installations) to install X11. Get your initial install done, then use dselect to install xserver-xfree86 - and that's it, get only that and its dependences. Then get your X server working - both the mouse and the display, as well as the keyboard. Don't worry about getting accellerated 3D (DRI) yet. Only after getting the server working should you install any X applications. (It would be OK to install a few simple ones like xterm, just for testing).
The problem you will have if you install all of X in one shot is that you may install a display manager such as GDM or XDM and find that your machine comes up with the console running X, and being unable to log in because your mouse, display or keyboard doesn't work! I personally feel that simply installing XDM shouldn't enable it by default, but that wasn't a popular opinion when I posted it to the list.
Anyway, I liked Debian so much that when I finally got a PC that I could use as a dedicated Linux server, I selected Debian to run on it. That machine runs Woody, and I've been very happy with it.
Finally, I think the Debian installation still is difficult. The Slackware installer isn't the easiest, but has always been easier than Debian's. However, Debian's installer is the most powerful and versatile. If you can figure it out, it is much easier to get Debian installed just the way you want it.
Also Debian has many choices of installation media and even protocols for network installation - floppy disk, HTTP, FTP, CDROM, NFS, tftp boot and so on. Any old chunk of rusty iron can install Debian if it has a pulse at all - if it has a network connection and can tftp boot you can install even without a CDROM or floppy disk - this would be important for installing to an embedded system, for example.
apt-get install kernel-source-2.4.xx (when I tried this, they had packaged the latest 2.4 stable release just two days after its release upstream)
apt-get install kernel-package
unzip and hack source
make fooconfig (use whichever you prefer)
make-kpkg clean && make-kpkg --revision local.1 kernel-image
dpkg -i ../kernel-image*.deb
The ease of rebuilding your kernel without breaking your distribution's packaging assumptions is one of the great things about Debian from a hacker's perspective. I'm pretty sure kernel-package would work just as well with 2.5 kernel, but I've never tried it. How many distributions will let you install a package of kernel 2.5?
I used Debian for about 2 years, in that painful transition from dselect to apt-get. I was very happy with it, except for one thing. On the unstable track, you can count of downloading 60 megabytes of packages every few days or so (especially if you have GNOME installed).
That just wasn't enough for me. By God, if I'm going to have all-you-can-eat broadband pricing, I'm going to get my money's worth out of it. On top of that, while that stuff was downloading, my CPU was totally idle!
That's why I've switched to Gentoo. Now, I can choke the pipes downloading sources and compile everything, too! True, the sources don't aren't as big as binaries, but there are a lot more of them and they change more often. I recently emerged a media player and had my entire kernel, glibc, and Qt recompile. CPU and network at 100% for hours! It really made me feel like I was maximizing the utility of my expensive capital equipment.
It's still only in the design phase, but Joey Hess (I think) is already working on an apt-src tool which will be like apt-get but install everything from source code. So you can switch back from gentoo ;)
There was a lot of talk about a lot of the things brought up in both the article and the comments at the 3rd Debian Conference in Toronto this last weekend.
In terms of a easier installer, try checking out Progeny's Graphical Installer: PGI. It's a package in Debian and it has already done many successful woody installs. Many people in Debian know and care that many users find the current installation difficult and it's something we, as a distribution, are actively working on through several projects.
As other people have mentioned, Debian maintains several distributions, stable, testing and unstable, for people who want to stay in different places in the stability vs. cutting-edge-ness spectrum.
You can list multiple sources of packages in /etc/pat/sources.list, and apt-get will build a database of packages, and assume you want to install the latest available (be they on CD, a local mirror, a local custom archive, a remote mirror, and/or various other sites that offer .debs).
That's fine if you want the latest available from your sources, but if you want mostly testing, with an occasional unstable or experimental package, you can specify a default distribution in /etc/apt/apt.conf:
Then, when you do upgrades without extra options:
apt-get install foo barwill install (or upgrade) the latest versions of foo and bar, as well as all their dependent packages, where latest is defined as "latest available from the testing distribution"
If it turns out that the feature you want is only available in foo_1.2.3, which was uploaded to unstable yesterday, and so wont be in testing for a couple of weeks or more, then you just do this:
apt-get install foo/unstable barand you'll either get what you want, or an error message saying that you need a later version of libfoo, say, in which case you try:
apt-get install foo/unstable libfoo/unstable bar
That all assumes a testing/unstable mix, which makes sense at this point in the release cycle. Once testing is released as stable, then a stable/testing/unstable mix will make sense for a few months, then people tend to decide there's not much point sticking with stable (except on servers that need to be absolutely rock solid, and don't need new features.
The important point being, you get the freedom to choose.
what makes Debian's packaging manager so good?
While the packaging tools are good --- especially apt-get's multi-source, automatic dependency satisfying features --- the real strength of the packaging system comes from the fact that our chaotic volunteer organisation means that we have to develop packaging standards, and people then report & fix bugs when those standards are not followed.
Other distributions have the luxury of being able to make unilateral changes between point releases, whereas turning Debian is somewhat like turning a supertanker, with the extra complication that on many decisions developers insist on travelling on both the old and the new course at once until it becomes clear which was the correct one.
People also have a tendency to test & use packages on systems that are running pretty strange combinations of versions, so packages get the bugs beaten out of them more rapidly than if you only ever run them on their native release. People also do things like downgrading packages (because they can) and expect it to work, so report bugs when it doesn't.
How would APT help me maintain a system with some stable packages, some more recent unstable / testing packages, and a few applications built from source?
Well, I think I've covered that, except for the local packages issue.
You have a few choices for local stuff:
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!