irccd: Deleting 1.x documentation

Added by David Demelier over 6 years ago

The old 1.x documentation hosted on the Wiki will be deleted the 2016-03-13. Users are encouraged to switch to irccd 2.0.0 as irccd 1.1.5 is not maintained anymore.

irccd: 2.0.0

Added by David Demelier over 6 years ago

I'm glad to announce the availability of irccd 2.0.0 after more than two years of development.

This new version has lots of amazing new features.

Switch to JavaScript

This major version brings a new JavaScript API instead of Lua for developing plugins.

Lua was dropped for JavaScript after many disappointments about Lua's development model, features, design choices.

JavaScript was chosen because it is light, easy to sandbox and easy to learn.

The current implementation inside irccd uses duktape 1.4.0.


New transports (formerly listeners) have joined irccd.

Transports replaces listeners and are now completely two-ways.

This means that you can connect to an irccd instance and wait forever for new messages. Irccd will broadcast new messages for each IRC event, this lets you create innovative plugins even without JavaScript.

See the irccdctl watch command which uses transports.


A brand new feature similar to firewalls can now let you enable or disable events on specific criterias.

It is now possible to disable some IRC events for a specific plugin!

This lets you keep some channels where you don't want some kind of gaming plugins.

Example, this rule disables the plugin hangman on #mychannel@myserver.

servers = "myserver" 
channels = "#mychannel" 
plugins = "hangman" 
action = drop


The logging mechanism in irccd has now its dedicated logs section.

It can now save logs to files.


type = file
path-logs = "/var/log/irccd/log" 
path-errors = "/var/log/irccd/errors" 

More unixish options

Good daemons must have good features, the following options were added in general section:

  • uid, to change the daemon uid,
  • gid, to change the daemon gid,
  • pidfile, where to save the pid file.


The following new plugins were added:

The following plugins where removed:

  • antiflood, currently suspended, will come back later,
  • badwords, no plans to replace it,
  • date, no plans to replace it.

New doc, new website

The documentation is now completely built within the irccd repository, making easier to show, update before a new release.

The documentation is completely built with pandoc.

As you can see, the website has completely changed with a brand new design based on bootstrap.

Improved parser

The parser can now understand multiple options on the same line (not recommended though):

option1 = value1 option2 = value2

It also understands a new include keyword, this allows splitting the configuration into multiple different files.

Note: the instruction must be at the beginning of the file.

# Comments are allowed though
@include "foo.conf" 
@include "baz.conf" 

option = value

The parser can also use lists in some options using parentheses.

option = ( "value1", "value2" )

New common patterns

The common pattern syntax has evolved in various way, they now require braces, environment variables are supported, colors and attributes are also supported.

The default keywords have been renamed to:

  • #c -> #{channel},
  • #m -> #{message},
  • #s -> #{server},
  • #t -> #{topic},
  • #T -> #{target},
  • #u -> #{origin},
  • #U -> #{nickname}.

The following keywords have been added:

  • #{command}, the full command invocation (e.g. !ask),
  • #{plugin}, the plugin name.

See the documentation for more examples about new syntax.

Monothread architecture

The irccd 1.x architecture was highly threaded and terribly complex. The new irccd 2.0.0 architecture has 0 threads except when adding new timers from the JavaScript API.

New installer

The Windows installer is now based on QtIFW and lets you selecting which components to install.

nsnake: 2.0.0

Added by David Demelier over 6 years ago

I'm glad to announce the availability of nsnake 2.0.0.

Available for Windows

Thanks to pdcurses, nsnake is now fully compatible with Windows using MinGW or Visual Studio. The library is bundled with nsnake so the user has nothing to install before.

Switch to CMake

To port nsnake easily, I have switched to CMake. The build system is now able to:

  • Check if the user/group games are available on the system (unix only),
  • Create the score directory with the appropriate permissions for sharing scores,
  • Check functions, headers and such.

Clean up

The source code has been cleaned up a lot.

irccd: Mercurial repository reset

Added by David Demelier over 6 years ago

The official Mercurial repository at will be reset on Sunday 2016-02-07.

This is mainly due to various errors in branches, style, conversions.

Users are encouraged to move or delete the repository before recloning it again.

Tags for versions 1.x will be completely discarded and only new 2.x stuff will come.

irccd: 1.1.6

Added by David Demelier about 7 years ago

The version 1.0.2 has been released. This a maintenance release.

  • Lua 5.2.4 is now bundled with irccd to prevent CMake looking for incorrect versions.

Because I don't have VisualStudio anymore, this version does not have prebuilt binaries for Windows, users may still use 1.1.5 as this version does not add any other features and bugfixes.

irccd: Mailing list opened

Added by David Demelier over 7 years ago

I have created a mailing list at

The mailing list is temporarily hosted there because I have no time for installing my own on the server.

Request for comments

For the next 2.0 milestone, I want people to provide feedback on the planned features and to discuss them if needed.

It is important for me that everyone can share its ideas so that we create the most perfect IRC bot in the world.

The list

Please join us by sending an empty email to and start talking with us!

irccd: There will be no 1.2

Added by David Demelier over 7 years ago

It was not an easy decision to take, but the planned version 1.2 will never be released.

Irccd 1.2 was planned since lot of months for February, but it was absolutely not ready to be released.

Features requested not tested

I've been asked to add some features that were hard to test for me and those people never tested it. Because I don't like to release something that I can't test I removed those features which required to change lot of things internally.

Request feature and do not providing feedback is terribly frustrating, I encourage you to never do that for any project.


The irccd internal architecture is a bit complex and has many threads. It was also hard for me to debug some problems that appears on my local machine.

The next major irccd version will bring a better architecture with much less threads and much more unit tests.


The documentation has been ported locally as explained in several announcement, but it still requires massive re-reading and some cosmetic changes which will take too much time to respect the deadline.

Don't worry, irccd 1.1.5 is still available and irccd 2.0 will be so much better that it's worth waiting for it :-).

irccd: 1.1.5

Added by David Demelier over 7 years ago

I'm glad to announce the new release 1.1.5. It's a bugfix release, there is no new features.

  • Fix Mac OS X build,
  • Fix null constructed strings,
  • Fix general.foreground option not working,
  • Windows: Lua and OpenSSL are built as DLL and copied to installation.

irccd: New documentation process

Added by David Demelier almost 8 years ago

New documentation

The current documentation is on the wiki.

This offers the following benefits:

  • Instant fixes, improvements
  • Easy access and well integration with other redmine stuff

But it also has very awful drawbacks:

  • Changes in the API are painful to mark
  • Offline reading is not possible
  • Adding new functions must be done as quickly as possible

New model

At the very beginning, irccd's documentation was written with AsciiDoc and LDoc. This was nice but also very limited. By the way, it was very difficult to make homogeneous style. AsciiDoc templates and CSS were very hard to edit and LDoc was broken at each update.

I'm currently experimenting the very great tool pandoc, it can converts many formats but the most popular one within pandoc is markdown.

The idea is to document each Lua API function, each irccd event and all books with CMake + pandoc chained.

The major benefits by using pandoc are:

  • Templating very flexible
  • Multiple output formats (HTML, PDF)
  • Markdown editing

So we will be able to publish all irccd documentation to its official page and that will be very well integrated (I hope).

I'm currently porting all API functions and testing it locally. Stay tuned.

irccd: Future of irccd

Added by David Demelier almost 8 years ago

The future of irccd

The last two months were a bit forgotten regarding irccd's development. I may say that the current irccd 1.1.4 is already nice but it still lacks some features that are addressed in the next release irccd 1.2. However, I plan several major changes in the far future.

Irccd 2.0

Irccd 2.0 will use ECMAScript for developing plugins. The reason behind this major change is simple. I just do not like the Lua authors decisions in Lua's development. I want irccd to be future proof, to make plugins compatible in a long term way and with Lua, each release may completely break existing plugins.

Of course, one may arg "just stick with one precise version of Lua and never change", it is viable; but it also mean that in the next years, users will not be able to get new features from Lua and even worse, if any possible Lua bug is present in the selected version, there is no chance to get it fixed.

That's why irccd 2.0 will switch to ECMAScript, the current implementation selected is duktape. It is great, very small, very well documented and the author is nice and pleasant. Irccd 2.0 will completely remove Lua support but the API will be as much as possible close to the original Lua API.

Irccd 2.0 is planned for december 2015.

Irccd 1.2

Irccd 1.2, currently planned january 2015 and will be the last version with Lua support enabled. This version will have a long term support which will end in january 2016. The current features that are already implemented:

More are shown in the version 1.2 page


Also available in: Atom