In the beginning ...
My IRC experience started roughly in 1995 by sharing 28.8 kbit/s modem connections at night (preferably on weekends) with 4-5 people in a temporarily setup LAN (prevailing, but not totally without a party component).
mIRC was my client of choice back then and has been for some time. I think it was some 3.x/4.x version that wasn't even shareware. The oldest mentioned version is 4.52, released on July, 6th in 1996, and the description starts with the line:
mIRC reincarnated as shareware!
Among my first steps on IRC programming (although relatively late, after years on IRCnet I somehow found myself on QuakeNet) were some scripts for mIRC.
Those were later extended by spending some time with Eggdrop programming in Tcl (visit tags details to see releases), digging both into the Tcl language as well as into the IRC protocol details.
A switch, after all
Until recently, I was a satisfied (while not overly staggered) XChat user. The application and mainly its interface and configurability is somewhat decent from my point of view. But, it can be extended using Tcl, Perl, and Python, which I see as a big advantage against mIRC and its own scripting language. However, I didn't feel the urge to customize various aspects of my client, again, so I didn't make any noteworthy use of it.
A strong point for XChat is its availability for common platforms like Unixes, Windows and (as ports) Mac OS X. Unfortunately, the author turned the binary releases of the Windows branch into shareware, which caused a lot of turbulence with people seeing the GPL violated (I'm not up to date what the actual outcome, if any, of that issue was). I kept using the latest free version I knew of (might have been 2.0.10c), but a stale aftertaste stayed.
Anyway, I tried various IRC clients in all sorts of ages, development stages, flavours and looks, but none was a real contender for mIRC and XChat, although some came close in some fields.
IRC needs no GUI
As of now, I am a happy user of Irssi. As it turns out, a console application is exactly what I was looking for (and all that is required).
My previous steps, mostly with BitchX and a little EPIC were less of a total success, but proved quite useful on shells and finally paved the way for Irssi.
Also, many console clients provide some sort of bouncer or proxy feature, including Irssi. Back in my eggdrop phase, I used psyBNC (which seems to be roughly on one 1337ness-level with BitchX).
Lately, ZNC filled the gap for some months. I chose it primarily because it was available as package in the Debian repositories.
Currently, I use Irssi via SSH on a machine connected to the Internet together with the GNU screen terminal window manager, so I can detach it before I log out and have it stay connected and accept query and channel messages for me.
A useful hint
Let me add a command as closing words, since it was my initial drive to write this post:
/whois <nick> <nick>
This one, with the username as both first and second argument, extends the whois result by the user's idle time and, if available, away message.
XChat does it by default, but I really missed this information on Irssi, and just came across how to obtain it. Using an alias for it as shortcut sounds like a good idea.
Now I have everything I need for another five to ten years in the best IRC environment I can imagine.
Update: Irssi has aliases for the normal whois
command as well as for the extended usage shown above:
/wi <nick>
/wii <nick>