I used "unstable" on my desktop for a while, but once every 2-3 years I'd end up with a bug that would break the early boot process, and I'd have to muck around with rescue disks and chroots and reconfiguring grub and the like. So I'd advise against this, unless you want to actually get involved in the Debian project.
Now I run "testing" on my desktop. When packages have been in "unstable" for a certain period of time (typically 10 days, although this is changing) without having a Release Critical (RC) bug filed against them, and if the move won't break any other packages, then "unstable" packages migrate to "testing". It's fairly up-to-date, although sometimes a large group of packages that need to transition all at once will take a while to synchronise.[0] And there are explicit "transitions" for some widely-used base libraries when they undergo ABI changes.[1] But you generally don't need to worry about this, as it'll mostly happen behind the scenes.
Still, if you're going to run "testing", I would still recommend installing apt-listbugs, which will tell you if there are any new RC bugs in any packages you're about to install/update (e.g. that were discovered only after the package migrated to testing), and allow you to decline the update.
Then, every couple of years or so, Debian is "frozen" for a few months, and no new updates are allowed that don't fix RC bugs. Once all the RC bugs have been fixed, and these fixes have all migrated to "testing", that version of "testing" becomes the new "stable". ("unstable" and "testing" can get a bit out-of-date during this time, but generally not too badly). "stable" is then "stable" in that it doesn't change at all, except for security updates, until the next "stable" is released a couple of years later. (There is also "backports" which packages newer releases of some software to go on top of stable, but you can't really rely on anything in particular getting a backport version.) This is handy for large deployments where you need to support users who will freak if their menus move around, or servers, or if you want to create your own distro and need an unchanging base platform to work from.
If you're moderately technical, and want fairly up-to-date shiny, I'd recommend Debian "testing". If you're interested in Free Software in and of itself, I'd definitely recommend it.[2]
[0] https://release.debian.org/migration/ [1] https://release.debian.org/transitions/ [2] http://www.debian.org/social_contract
I currently run Arch on my main computer (and have for the past few years), Ubuntu on a few others, and have dabbled with some other distros for fun. I'm thinking of giving Debian a shot for my main computer, though.
How would you compare unstable and/or testing to Arch (if you have any experience with it)?
There's also something to be said for mindshare. Ubuntu and its PPA system make it easy for people to build packages, and due to Ubuntu's popularity, there are lots of them. AUR does the same. Finding exotic packages for Debian (eg. Steam) can prove difficult.
As the joke goes: unstable means testing, testing means stable and stable means old.
For workstations where I usually want new packages I use unstable. It's not really "unstable" (IIRC Ubuntu is based on it) and has always up to date packages and bug fixes in short time. An unstable installation didn't break for me once in the last 4 years.
The problem with testing is that bugs need too long to get fixed (weeks to months). It's the testing environment for the next stable release so it doesn't really change too often and the packages aren't really the newest versions.
For servers I'm driving stable because I'm rather conservative with servers.
Unstable is all relatively recent but likely to break regularly: it is its job to break so problems are found before packages are moved on.
Testing is less up to date but should be pretty stable. Before each new release Testing is frozen except for changes to fix problems (i.e. new new packages or version updates, except where an update/patch fixes a problem that isn't deemed insignificant for release), once the freeze is complete and the result declared ready the current Testing becomes the new Stable. It used to be that Testing did not necessarily get timely security updates like Stable, so it was strongly recommended against for production and/or public use, though this is no longer the case except for a period after a new release.
"Stable" is just that: it changes as little as possible, updates generally being only to fix security problems or other significant bugs that are found. This means that packages which see a lot of active development can become quite out of date with respect to new/updated features.
It's the price I pay for a stable system. Vagrant for my dev environments makes "stable" a much easier choice.
Recently, I've been looking for an alternative to Debian testing or unstable for the desktop that doesn't stop getting updates during the stable freeze and doesn't break afterwards. It seems like the best option here is one of the rolling release distributions based on unstable like aptosid or siduction; I am downloading an aptosid ISO right now to try it out.
Can anyone here relate their own experiences with those?