Irssi is a modular IRC client that currently has only text mode user interface, but 80-90% of the code isn't text mode specific, so other UIs could be created pretty easily. Also, Irssi isn't really even IRC specific anymore, there's already a working SILC module available. Support for other protocols like ICQ could be created some day too.
Where's the GTK+/GNOME version?
This has been asked from me many times. There used to be GTK+/GNOME user interface, but I stopped updating it when I was rewriting lots of code. Main reasons for it were that lots of people wanted a better text mode UI, but only a few people ever gave comments about the GUI version. Though looking at the download counters when 0.7.90 was released (first non-GUI version), the counter dropped from (in the next 2 days after release) ~1000 to ~100.
The next often asked question is: Am I going to fix the GUI code to work again? The old code: not likely, writing a new GUI: yes, I think so :) I have a few new great ideas for it already. It isn't fun to make something old to work again, especially if it wouldn't be clearly better than competing products ;) When the next release of GTK+/GNOME Irssi is released, I intend it to be clearly the best GUI client there is.
And what about QT/KDE port, or windows port? Well, I'm probably not going to write them at least soon, you go ahead and start them :) Windows port might be possible to do with GTK's Win32 port. Or Qt's of course.
But there's already ircII and others..
What separates Irssi from ircII, BitchX, epic and the rest text clients? The code. I'm not using the crappy ugly kludgy code of ircII. Non-developers don't probably care that much about it, but that means a few good things anyway:
- Security - I'm quite confident that there's no security bugs in Irssi. No buffer overflows, no format bugs (%s%s%s), no remote exploits, nothing.
- Modularity - Irssi is highly extensible, you could change almost anything in Irssi with a runtime loadable module. And you can probably change anything you actually need to change with a Perl script.
So what's so great about Irssi? Here's a list of some features I can think of currently:
- Optional automation - There's lots of things Irssi does for you automatically that some people like and others just hate. Things like: nick completion, creating new window for newly joined channel, creating queries when msgs/notices are received or when you send a msg, closing queries when it's been idle for some time, etc.
- Multiserver friendy - I think Irssi has clearly the best support for handling multiple server connections. You can have as many as you want in as many ircnets as you want. Having several connections in one server works too, for example when you hit the (ircnet's) 10 channels/connection limit you can just create another connection and you hardly notice it. If connection to server is lost, Irssi tries to connect back until it's successful. Also channels you were joined before disconnection are restored, even if they're "temporarily unavailable" because of netsplits, Irssi keeps rejoining back to them. Also worth noticing - there's not that stupid "server is bound to this window, if this window gets closed the connection closes" thing that ircII based clients have.
- Channel automation - You can specify what channels to join to immediately after connected to some server or IRC network. After joined to channel, Irssi can automatically request ops for you (or do anything, actually) from channel's bots.
- Window content saving - Say /LAYOUT SAVE when you've put all the channels and queries to their correct place, and after restarting Irssi, the channels will be joined back into windows where they were saved.
- Tab completing anything - You can complete lots of things with tab: nicks, commands, command -options, file names, settings, text format names, channels and server names. There's also an excellent /msg completion that works transparently with multiple IRC networks. Completing channel nicks is also pretty intelligent, it first goes through the people who have talked to you recently, then the people who have talked to anyone recently and only then it fallbacks to rest of the nicks. You can also complete a set of words you've specified, for example homepage<tab> changes it to your actual home page URL.
- Excellent logging - You can log any way you want and as easily or hard as you want. With autologging Irssi logs everything to specified directory, one file per channel/nick. ircII style /WINDOW LOG ON is also supported. There's also the "hard way" of logging - /LOG command which lets you specify exactly what you wish to log and where. Log rotating is supported with all the different logging methods, you can specify how often you want it to rotate and what kind of time stamp to use.
- Excellent ignoring - You can most probably ignore anything any way you want. Nick masks, words, regular expressions. You can add exceptions to ignores. You can ignore other people's replies in channels to nicks you have ignored. You can also specify that the specific ignores work only in specific channel(s).
- Lastlog and scrollback handling - /LASTLOG command has some new features: -new option checks only lines that came since you last did /LASTLOG command, -away option checks new lines since you last went away. Regular expression matches work also, of course. Going to some wanted place at scrollback has always been hard with non-GUI clients. A search command that jumps around in scrollback in GUI-style is still missing from Irssi, but there's something that's almost as good as it. /LASTLOG always shows timestamps when the line was printed, even if you didn't have timestamps on. Now doing /SB GOTO <timestamp> jumps directly to the position in scrollback you wanted. Great feature when you want to browse a bit of the discussion what happened when someone said your name (as seen in awaylog) or topic was changed (/last -topics)
IMHO, irssi's source code is (mostly) excellent :) Because of it's modular design and signals it uses to communicate between (and inside) the modules, it's extremely easy to add new features and change existing, even in run time by loading modules.
- Timo Sirainen - me. I've written most of the code.
- Guido Bakker - provided CVS repository and irssi.org web server
- JT Traub - maintains mailing lists.
- P.A.Knuutila - builds Debian packages.
- Danie Gr�fe - builds SuSE RPMs.
- Ronnie Alfaro - builds Solaris Packages.
- Carl Drinkwater - registered irssi.org for me :)
And then there's the people who provided mirrors