IRC-Junkie.org – IRC News

All about Internet Relay Chat

amnesiac: a script for EPIC5 – Interview

After interviewing the author of EPIC5, this sort of could be called a “follow-up” interview. The interviewees are the authors of amnesiac, a modular EPIC5 script.

- First, please introduce yourself to our readers so they get an idea who you are.

skullY: I’m a long-time UNIX user and administrator who works for a Silicon Valley startup.


My day job involves hating software (mainly Linux, Apache and MySQL) and I relax in the evenings by writing software to be hated.


Most of what I write is to scratch an itch, but a few things (amnesiac, nboard) see a wider release.

crapple(Zak): I’m a long-time UNIX user/admin/programmer working at a telecommunications company in Canada.

My day job involves hating just about everything mankind has dreamed up (mainly Linux, MySQL,’programmers’, religion in the workplace) and I relax off work hanging with some friends and doing the occasional barhopping.

I do most of my programming at work and occassionally I do some fun programming at home (cut’n'pasting device drivers from other BSD distro’s to OpenBSD, finding documentation/specs for certain drivers on occasion).

I’m generally a very lazy person outside of work ;)

kreca: I am a Java/C++ developer living in Sweden.

Since the beginning of 2008 I have been running a company with a good friend of mine, focused on J2EE development.

We do product and consulting work.

- What was the reason for you to start writing on amnesiac?

skullY: Back when EPIC5 was still pretty new, but right around the time it went from unusable to usable (stability wise), Zak found out I was using EPIC4 with a home-grown script and started bugging me to help him make oblivion into an EPIC5 script.

Eventually I gave in just so he’d stop bugging me. ;)

Zak: I was a longtime C-Toolz/ScrollZ and occassional BitchX user back in the day.

void had an EPIC4 script called oblivion and I was being curious about EPIC. EPICs scripting language was very different compared to ircII/ScrollZ as it was almost C-like in some ways.

Eventually I started doing some cleanups to oblivion for void, seeing that he is as lazy as I am and nothing was really getting done. He dissappeared from IRC and I did the last 3 oblivion releases that friends and people who knew where to look at could grab.

I was using EPIC5 pretty much since it was born and modifying oblivion to work on it was a request I had seen in #obv frequently. Basically, it got renamed to oblivion 2.0 for EPIC5 and eventually I managed to get kreca to join on the project as BitchX was going nowhere.

We made about 6-8 releases on oblivion 2.x until it started forking away from oblivion and we decided on a script name change to amnesiac. We generally just kept the cosmetics, so oblivion users will probably feel at home with amnesiac.

EPIC5 was way faster than any other IRC client I have previously used and so I did more rewrites and cleanups to amnesiac more or less for my own benefits – not so much for the userbase at that time.

Eventually our userbase started contributing difficult cosmetic work/formats/code etc. and I was really surprised about how many loyal amnesiac users we had. adam, violence, sirko – to name a few – really helped with adding functionality and cosmetic work that noone of us really wanted to do.

That’s probably when I started paying more attention to our userbase and their feature requests – after all, they helped make amnesiac the script that it is today ;)

Though, I still pawn requests off to skullY and kreca when I win my guilt trips against them as I’m really lazy ;)

kreca: I met Zak on EFnet and got into ircII scripting by submitting a few patches to cypress which was the predecessor to oblivion for BitchX.

Since development stopped and I realized how powerful the EPIC scripting language is, I’ve switched over to oblivion and started developing for that.

- So there are 3 scripters working on amnesiac – how do you coordinate development and what role does each one have?

skullY: Coordination might be too strong a word there. ;)

We pretty much work on whatever strikes our fancy. We’re all pretty lazy, and the work tends to happen in spurts and bursts, so normally there’s not more than one of us working on the codebase at any given time anyway.

Periodically one of us, usually Zak or kreca, takes something from TODO-BUGS and works on it. We keep all known issues and things we want to change in there.

Zak: I pretty much try to pawn off feature requests to kreca, bugfixes to Zach, and THEN I modify the TODO-BUGS to remind myself of something that will probably not get done anytime soon, at least from me, as I find amnesiac to be very mature as IS.

Most of the feature requests we get are pretty complicated and not really something I care about, IE: userlists (That’s what IRC bots are for is my lazy excuse ;p).

We don’t really have any specific role and we just work whenever we want to.

skullY & kreca pretty much have the same ideas and goals of amnesiac as I do and if it’s something I’m not a fan of I can just revert the CVS commit if needed – which I have not had to do yet and probably never have to.

The reason why I like having 3 of us with CVS access is due to the fact I got tired of all these one author IRC scripts over the years. They never last long as the author usually has a life or moved on to another project so that the script gets unmaintained/stale.

With 3 people having commit access, chances are that it will more or less be maintained. I know that me and kreca have been busy the last 6 or so months and skullY was around to fix bugs.

I may like to add another person in the future as a backup for those times when noone of us is around ;)

I think this is one of the main reasons why amnesiac has been around from 2003-Present. I don’t think many EPIC4/5 scripts have really been maintained for a number of years like amnesiac has – or that I’m aware of.

kreca: I would like to mention that we have two mailing lists set up aswell.

hackers [at] ircII.org – Code discussion / feature request
amnesiac [at] ircII.org – All commits are sent here for review and can be discussed aswell.

- How much time has each one of you spent on developing the script and how many lines of code did you contribute?

skullY: LOC is a really poor measurement, especially in our case.

We started with the oblivion script several years ago, which gives us a few thousand lines of code head-start.

However, amnesiac doesn’t really resemble oblivion anymore and the majority of it has been rewritten.

I’d say my LOC count is negative, if you don’t include the modules I added. Mostly I simplify and remove code or fix bugs when I’m not adding modules.

As for time, I can’t really say. Maybe 10-20 hours/year, except for the occasional burst. For example, I think I spent a total of 80 or 90 hours implementing remote.m. I’ve put in less than 2000 hours total over the last 3-4 years I’d say.

Zak: LOC really is a poor measurement, especially in an IRC script sense as we tend to borrow, rip, improve various code from the EPIC5 scripts source and from other scripts that we have permission of the author to do so.

In fact, I don’t think programmers really do much in the sense of LOC, I think we’re more or less cleaning up/rewriting functionality/code moreso than adding code – LOC for me is pretty much negative.

I have contributed *maybe* 10-20hrs/year, however I have a habit of going in spurts so that 10-20hrs might be done in, say march of 2009, and nothing else really happens from me [for the rest of the year] – except for the occasional bugfixes and adding patches users have contributed.

kreca: Not much to be added here. The last few months have been slow since I’ve had a lot of work to do.

- What made you use EPIC in the first place since there are plenty of other clients out there?

skullY: Back in my day, we only had two choices for IRC: ircII or EPIC. I was learning how to write annoying IRC scripts and using PhOeNiX.irc, and EPIC provided more and better aliases and functions, so the choice was obvious.

In those days we sent humorous messages in response to CTCP pings, as was the fashion. Dang kids, get off mah lawn!

I continue to use EPIC because other clients haven’t been able to be “better”.

I used BitchX for a while, but it was too crashy and that drove me back to EPIC. I’ve never been able to get along with GUI clients.

The new kid on the block seems to be irssi, but between misbehaving clients from irssi users and the fact that it uses PERL for scripting I’m pretty turned off by it.

Zak: Adapting to a new client is a pain in the a**.

I started with ircII/ircII based clients and I can’t see myself using anything else. I tried to show IRC to a friend a couple of years ago in mIRC.

That was so difficult that I added him a shellaccount and showed him the basics of EPIC5/amnesiac – He still uses it today after failing to like a number of GUI IRC clients.

I tend to use the tools that suit me and EPIC5 has a lot of nice features and functionality for my tastes. And if I need something fast, chances are I can script it up quickly or evaluate something in EPIC – it’s more than enough for my tastes.

After coming from a C-Toolz/ScrollZ environment the scripting language for ircII is a bit gothic and sometimes difficult. I’m quite turned off at irssi mainly because of PERL and [...] the license wasn’t something I wanted as well.

kreca: hop (Jeremy) is putting a lot of work into EPIC and has made a lot of improvements with EPIC5. He’s always open for feedback and feature requests.

This makes it a lot easier as a scripter when you’re stuck in a corner.

- What, in your opinion, is the advantage of the ircII scripting language over PERL/Python/Ruby/TCL and maybe even mIRCs scripting language (MSL)?

skullY: What’s the advantage of a shell script over those other languages?

It’s not only something you can type into interactively to test ideas (Python has that) but it’s something that you actually do type into interactively, every day.

This imparts a familiarity that simply can’t be matched.

One of the languages I used before I learned “real” programming was ircII. It was easy, I just type commands into a file!

As I learned and grew as a programmer, I found that ircII/EPIC kept up, allowing me to use the advanced concepts I was learning, even though the syntax was pretty wonky.

Today, however, EPIC5 has taken that to the next level. I find now that as I grow, EPIC5 is growing with me.

It has shed much of the earlier syntax and functional wonkiness that came from ircII and is now what I consider the UNIX users ideal IRC client.

Writing EPIC5 scripts feels more like C to me than anything else – with less bookkeeping. ;)

Zak: Nothing to add here ;)

kreca: There has also been work in bringing in other languages to script in EPIC – which I believe is still in the experimental stage.

- How is your script “better” compared to the others available for EPIC and what do you consider a “major selling point” of amnesiac?

skullY: Right now, we’re basically the only complete and maintained script for a user who wants to use EPIC5 without writing their own script.

I’d like to think it’s because we’ve made all the right choices to keep users happy so no one has felt the need to write a competing script. :)

We’re also very modular and customizable. Our goal is to provide functionality to the user, but otherwise let them make things look how they want.

For example, my preference is for my client to basically look like a stock EPIC4 client, so I go through some pain to make it look and behave that way.

This work translates into better theme support all around, which benefits everyone.

Zak: A lot of our users are european, so if someone likes various cosmetic formats within reason (which are not too spammy colour-wise and wish for ISO-8859-1 friendly themes/formats on EPIC) – it may be worth trying out.

This was surprisingly one of the hardest things we had to do: to try adding various cosmetic work with colour that would not interfere with their terminal or make it look ugly as heck.

Recently hop mentioned adding UTF-8 support into EPIC5 via iconv(), so this way may pave the way for better UTF-8 support in the future – though we do have a module for UTF-8 support.

But that is only good for joins, parts, msg, notice and publics at this time as far as I can recall (I actually never tried it myself – one of our users kindly let us add it into amnesiac).

kreca: Yes, theming really is a strong point of amnesiac. This has been completley rewritten from oblivion.

- Is there a way to get involved with developing amnesiac and how could one contribute to the script?

skullY: Like most open source projects, we’re always happy to receive patches.

For people who can’t code, we could use bug reports, better documentation or just basic evangelism to get people using the script. :)

Zak: I agree with the above ;p

kreca: Same here.

- Do you or have you used any other clients besides EPIC and if yes, why?

skullY: I currently use something called “Rooms” on my phone, mainly for testing and using the remote module, but I wish there was something better.

I have in the past used ircII, BitchX and ScrollZ, but never for very long.

Zak: I have always used some sort of ircII based client. I was using C-Toolz/ScrollZ for a number of years before switching over to EPIC.

I’ve also used ircII and BitchX but not for very long.

kreca: BitchX and mIRC in the beginning =)

- Development aside, what do you use IRC for in your leisure time and which networks do you frequent?

skullY: I mostly hang out on EFnet. Sometimes I’m on freenode to ask questions.

I wouldn’t really say I use IRC in my leisure time. It’s more a background thing while I’m doing something else.

Zak: I mostly hang out on EFnet and a network me and some friends made awhile back – which is still young (ErrNet).

irc.ircII.org, irc.deathwish.net and irc.slipgate.org – to name a couple of servers.

I’m generally more active on EFnet when I’m at work, else I’m usually on ErrNet – though it’s more of a background thing when I’m doing something else.

kreca: I hang out on EFnet and ErrNet aswell. Occasionally I log on to freenode.

I use it to keep connected with friends and ask development questions when it comes to specific subjects.

- There are numerous topics, polls and postings about a possible decline of IRC – what do you think about that and where do you think is IRC heading in the long term?

skullY: I haven’t gone anywhere and neither have most of my friends. ;)

Seriously though, I’m not really worried. I’ve been hearing about how IRC is dying the whole time I’ve been using it. First it was ICB, then ICQ and AIM – and now Jabber (hah) is going to kill it.

In 20 years, when the kids are using their new-fangled ThirdLife MMOIRC, we’ll still be seeing topics, polls and blag postings about the decline and fall of IRC.

Zak: I think IRC has been dying since ’93 – or so I keep hearing ;p

I don’t think IRC is going anywhere anytime soon – I know I’m not going anywhere and this really isn’t something I’m worried about ;)

kreca: Nothing to add here.

- What are your future plans for amnesiac? Are there any nice feature enhancements planned for the future that one would want to know of?

skullY: In the development tree (and latest snapshot) I have a new remote module which lets you connect to your main EPIC client using another IRC client.

I need to finish it still and it has some limitations, but I’m using it a few times a week and the basic functionality seems to be working well.

Combine that with the relaysmtp module and your mobile provider’s Email -> SMS gateway and you have a complete solution for using IRC from your phone – including offline message notification.

In the future there is a lot of cleanup and under-the-hood improvements to be made. In particular, I’d like to merge our formats with EPIC5′s /set FORMAT_* support so that we can easily exchange formats with other scripts.

I believe that would also cut down tremendously on the number of /on’s we need, which means a lower memory footprint all around.

Zak: I would possibly like a better working userlist or another rewrite of it, though it’s not really something of my interest – it’s one thing some of our users frequently ask about(namely Xavier).

So I may get around to having a working userlist sometime this year or better – one i can rip^H^H^Himprove ;p

Hopefully there soon is an official first release of amnesiac 2.0 as we haven’t had a real release in a couple of years now. Although snapshots are semi-active, some of our users really don’t upgrade unless there’s a new release or a bug that’s fixed in a snapshot.

kreca: I have plans to make the tab completion more modular for users to define their own use patterns.

This would make it easier to add complete command tab support for EPIC aswell as users could add their network-specific commands for tab completion, like ChanServ and NickServ commands.

- Is there anything you want to add?

skullY: For anyone that’s new to EPIC in general, but EPIC5 in particular, they should know that while we (EPIC5 developers in general, not just amnesiac devs) keep everything as up to date and modern as we reasonably can, most of us take a longer view towards releases.

We try to code for long-term use so our users don’t have to upgrade very often and so that when they do upgrade things don’t break.

This helps to create stability in our software.

As an example, my main client right now is still running EPIC5 0.3.7 because I haven’t wanted to restart it. I’m running the latest development version of amn on top of it, which I can reload/upgrade without restarting my client.

This combination has been running for 156 days nonstop (since the machine last rebooted). Uptimes of more than a year are not unheard of.

You don’t get this kind of stability releasing every week or even every month.

Zak: I’m very sarcastic, cynical and lazy – just FYI ;)

- Thank you very much for the interview

skullY: You’re welcome. I hope your readers enjoy it.

Zak: Welcome ;)

Thanks for the interview (and sorry for taking so long to edit & publish it i might add) :)