Some of you may wonder what is the purpose of this article. First, because hardware nowadays is pretty cheap, you don't need older hardware anymore. Second, there are some articles across the Internet dealing with this already. The answer to the first problem is: well, you'll see in the article. The answer to the second is we have some experience with older hardware first-hand, and we found it to be very useful to this day, so we want to share this with you. Older hardware, PC or not, is to be found everywhere, sometimes for free, and you can get to it easily. You will get some ideas from this article, but of course we don't say the following list is exhaustive. Only your imagination sets the limit. The only knowledge we expect from you is to have some idea what you want to do. If you don't yet, our article may be of help.
Before we start, there are some variables that need some comments. First, the word "older" means different things for different people. To some, it may mean a 6 year-old AMD Athlon processor and 1GB of RAM. To others, "older" may be a PentiumII with 128 MB RAM. This article is mainly focused on the latter part, meaning really old hardware that's still of some use with Open Source operating systems. Of course, if you have something more powerful, even better. The other variable is the hardware. People can find an old SPARC machine with < 100$ that is still usable, depending of course on what you want to do with it. The places you can find such machines, SPARC, SGI or Intel-based are Ebay, some local shop that sells older computers or even your friendly sysadmin that can't wait to get rid of old machines. Take note that non-Intel machines will be more expensive, so think twice if you really need some exotic piece of hardware.
This applies to home users as well as small offices. You may not want to buy a router because of prohibitive costs or because you're afraid of security issues. Or maybe the interface doesn't offer the facilities you need. If such is the case, a Linux or BSD operating system plus the old computer gathering dust in your attic are exactly what you need. As a home user, the routers you can buy at prices starting with 30 bucks usually cover your needs. But if you like to be in control of your small network's security or just take this as a challenge, go for it. You'll learn a lot about routing in special and networking in general, plus you'll be the master of your network. But if you're unsure of your knowledge of iptables or pf, we strongly recommend you start reading, maybe test settings in a virtual machine. You may open your network to various kinds of attacks, so with great power comes great responsibility. There is another aspect here concerning power consumption: an old PC will certainly use more power than a small SOHO router, so have this in mind when you make the change.
Here, testing may have two meanings: you want to test some unusual Linux distribution or a BSD, to see what's it like, or help a distribution you're already familiar with by testing the development branch. Something you need to keep in mind, though, is what hardware requirements the OS you're gonna install has. If you expect to run Fedora Rawhide on a 256 MB RAM system, think again. While you can, after some work, it won't perform as well as other more minimalist distributions. If you want to run source-based systems like Gentoo or some BSD and have the patience but lack the space for large compilations, try setting up a NFS server for /usr and /var, for example on another machine with bigger drives. If you're going binary, you can set up a minimal testing system on 3GB if you're careful. If you think about a hard drive upgrade, take into account the fact that older BIOSes have a pretty low threshold when it comes to how big a disk it can work with, but 40 GB should suffice, as a general rule.
This part is intimately related to all the other parts because however you choose to use your old computer, you will certainly learn something. Maybe you'll learn how to trim a Linux system to boot faster, maybe you'll learn how to set up a small webserver, but you will learn. Let's take SQL, for example. If you wanna learn it and you don't want to set up a SQL server on your main machine, you can use some old computer and set up MySQL or Postgres on it. Of course, large databases use lots of memory and CPU, but since you're just starting, you won't use lots of tables with lots of data. Just create a small database and use it to learn the basic concepts on it. I/O is also a factor, so don't expect performance, but until you learn enough, using our solution for practice will suffice. This is just one example of many, since there are thousands of interesting Open Source projects you can set up on a small box to tinker with.
There is a common idea among many that a server must have the latest and greatest in terms of hardware. While this applies to big networks, if you want to setup a small webserver or a low-traffic mail server you won't need thousand-dollar hardware. Common sense applies, since you can't expect a 12 year-old system to cope with high network traffic for a large DNS server. Nowadays sites like Wordpress or Tumblr make it easy for anyone to have a website. But if you're just running a small site for your friends, an old computer may be of help, with the mention that you should think again about power consumption.
If you're into development and you need a testing system, here's another use for older hardware. Some people prefer virtual machines, but here it depends on what kind of development you do. If you're working on some kind of machine-dependent software (kernel, some libraries...) you might want to use real hardware for testing. Some people find task isolation very important, including yours truly, which means that, provided it's efficient and feasible, one should not combine too many tasks to be performed on a single machine. If for example I have one machine that does everything I work on, be it development, databases, NFS server, desktop, etc. and it fails beyond recovery, then I'll have nothing to work with until I get myself new hardware and reinstall/set up the OS. But certainly the other extreme shouldn't be used, or I'll have no place to sleep because my room is full of computers and my electricity provider considers me a premium client.
You need a light desktop for various reasons, like maybe getting rid of that huge KDE4 on your main desktop and learning how to use Fluxbox. Openbox, LXDE, Xmonad, Ratpoison or even XFCE are just some of your choices. If you have the space, install them one by one and decide what's best for you. There are also lightweight browsers like Dillo, lightweight MUAs like Claws or even text-based alternatives to most of today's desktop software: browsers, mail clients, chat programs and the list goes on. They don't offer the same functionality sometimes but hey, they don't eat up at least half of your memory, regardless how much there is, either. You have the Midnight Commander as a versatile file manager and FTP/SSH/SMB client, BiTorrent as a torrent client or slrn as a news (NNTP) client. You'll be amazed how effective you can become using more command-line tools, if they are suitable for the purpose, and your hardware requirements for a desktop will probably drop significantly.
Although Linux/BSD run well on old hardware, the question is: how old? If you have some old 386SX system, forget it. After all, these are modern operating systems and they require a FPU to run. Next, you will need at least 64 MB of RAM and 2GB of disk (that is, if you don't like a challenge and modify the system so it boots with less). For example, my Gentoo system, right after boot, uses 20 MB of memory tops (with no X, of course). But hey, I gotta use that computer as well, so I'd need more, right? There are people out there that find it interesting to get the oldest/weakest piece of hardware they can find and see if they install Linux on it. Yes, you can overcome the FPU limitation (talking about Intel here, other architectures are a different matter) and of course, there are already embedded Linux and BSD variants. So if you have the time and the passion, yes it's fun, no doubt about it, so why not? If your hardware lacks a CD-ROM drive or the possibility to boot from USB (probably), you can use PXE to boot from the network.
We reiterate the issue of common sense: don't try to install a beefy distribution on a PentiumII because even if you manage to install it, it will be an exercise in pain. There are lots of lightweight distributions out there, created for exactly what you want. You might wanna look (depending on how old the system is) at Debian, Arch, Slackware, Puppy or Damn Small Linux, plus the BSDs. Use the right tool for the job, but forget about installing older versions of some distribution just because you ran that on your old K6 nine years ago. These versions are out of date, with no active repositories and lots of unpatched security holes and bugs. Going through Distrowatch will sooner or later bear fruit. If you have a really small hard drive, consider a BSD system. They tend to use smaller kernels, because the hardware support is limited compared to Linux and no, you don't need to compile from source if you need to update or upgrade.
We only offered few examples here, but the possibilities are so many. Linux/BSD systems have the reputation of being reliable, so there are lots of cases when 10+ years old hardware runs Linux with uptimes of thousands of days. If you need some ideas to test on older hardware, there are lots of linux tutorials on the Internet. Find one you like and start. Good luck and enjoy.