There actually are a handful of OSS projects for IRC clients trying to implement mIRC's scripting engine. I don't recall all of the projects, but I know none of them are complete or widely used, mostly because there doesn't tend to be a lot of interest in cross-platform support and/or programmers who are willing and able to contribute. Pretty much the same issues I raised above. Here are some of the ones I've heard of:

  • a Java project, about 3 years old now, which I assume has since been abandoned. Not sure how far they got, but I can't imagine very far.
  • BoxedIRC - created in 2000, never completed. Never got to any scripting support, though it was planned.
  • jIRC - meant to continue from BoxedIRC in 2005, but never got much further. Not even sure if scripting support was part of the planned functionality this time around.
  • I think there was also a mention of one project in the Developer forums, at some point.


But when it comes down to it, it doesn't really make sense to re-implement mIRC's scripting engine for an open source IRC client when there are so many highly functional, performant, and easily embeddable languages out there like JavaScript, LISP, Lua, Python, Tcl, Perl, etc.. IMO if mIRC were to ever get a redesign, the scripting layer is the first thing that should be thrown out. mIRC has a great scripting engine, but mostly because it's been around long enough to amass a lot of functionality. The engine itself is riddled with flaws, limitations and is extremely slow-- it's not something I'd want to grandfather into a new sleek IRC client. The only real benefit is existing script support. The syntax also lends itself well to IRC, but Tcl is another language that has a very similar syntax to mIRC's and could be used (and is used, in many IRC clients). LISP/Scheme would also be a really close fit-- and LISP has super-efficient interpreters. And if you really wanted to maintain script support, it would take a lot less time to use one of those languages and just write a small component/program to translate mIRC syntax to another language before compiling.


- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"