Throughout the years I’ve written a lot of IRC related programs as hobby projects. Here is a summary of what I can remember at least…
mIRC IRC server (1996->1998?)
When mIRC scripting got socket support back around 1996-1998(?) I wrote an IRC server in mIRC scripting. I remember it was surprisingly easy to use mIRC scripting for this.
VB6 IRC server (1997->1998?)
Shortly after that I wrote an IRC server in VB6. I remember using one form (GUI window) for each client connection to easily fake threading and organize the code. The screen short of filled up a bit sometimes.
Various VB6 IRC clients (1995->present)
I remember writing a few IRC clients in VB6. Never anything great, but still fun.
Perl programming can almost be considered an art form. I wrote an IRC bouncer with the sole purpose of just making the coolest Perl-code. I had much fun constantly rewriting and improving this application. The result is an event-driven modular versatile IRC platform. It has a good API, bot-modules, (custom built) web server that supports files, CGI and mod_perl. It can even download modules and upgrade itself while running without restarting. No expenses spared in making this cool. Unfortunately the last release I made in 2003 contained a last minute startup bug that crashed the app. It was however fixed today 7 years later. :)
New IRC 1 (2004-2005)
Written in Visual Basic.Net this was a fully working and almost bug free IRC client that I used for 3-4 years my self. It was never released to public except to a few beta-testers. The custom IRC protocol was pretty tightly bound to GUI code, and everything (especially GUI) was sort of hardcoded in there.
New IRC 2 (2006)
Written in C# from scratch with my own IRC library. This time much of the functionality was linked in (at design time) from separate modules. Everything was still partially hardcoded, but the IRC protocol was more events based.
New IRC 3 (2007)
Written in C# from scratch using SmartIRC4Net IRC library so I could focus on other things than IRC protocol implementation. This was the first client with dynamic loading and binding of modules. The IRC client is basically just a module-loader, and all the modules make out all the functionality.
New IRC 3 – 3D (2008)
I also made an experimental version of New IRC 3 which had support for 3D worlds through www.opensimulator.org. (Really great project where I have contributed some work)
Nimbus IRC (2008)
Even though New IRC 3 was very modular and dynamic I was not happy with the module API/implementation. Around 1998 I started rewriting from scratch, loosely based on New IRC 3 (C#, SmartIrc4Net). I’ve been working on and off with this project, and lately implemented the Nimbus.Module module system which greatly reduces module handling. It is currently a combination of WinForms and WPF due to the lack of MDI windows in WPF. The plan is to get it over to 100% WPF or Silverlight.
Nimbus IRC has been released in Alpha at the time of writing: http://dev.tedd.no/NimbusIRC/