concieggs: An extensible IRC bot architecture with an attitude

Internet Relay Chat (IRC) is a very basic protocol for text chatting on the internet. In its simplest form, humans use IRC to chat with other humans, but it is also easy to write programs and let humans interact with them over IRC. These programs are called IRC bots and can have many uses: administrative tasks, information gathering, games, and more.

For this talk I want to describe the architecture of an IRC bot called concieggs and why we believe its design is good. See https://github.com/athas/EggsML for the code (among other things). I did not invent concieggs, but have contributed to it since 2013; this is joint work with Troels Henriksen, postdoc at the Department of Computer Science at the University of Copenhagen (DIKU), and many others (please see the contributors tab on the GitHub project page).

This talk will focus on the major aspects of concieggs:

  • The broad strokes: What even is this?

  • An architecture for the masses: How do you design an extensible IRC bot with a low bar for entry and a high degree of stability? Many computer science students at DIKU have added new features to concieggs without having to learn much or even be good at programming.

  • A polyglot solution: If using one programming language is good, then using more programming languages is better. The core parts of concieggs consist only of shell, awk, and C, but concieggs as a whole also uses Python, Haskell, Go, Perl, TCL, PHP, Java, Brainfuck, Javascript, Ruby, Pascal, Emacs Lisp, F#, Standard ML, and more. We believe this variety has a calming effect on new contributors, since they can use whatever programming language they know well. We also make a point out of not having any continuous integration or other kind of testing -- this way, the general code quality is middling at best, which lowers any hesitance new contributors might have when pushing their likely-not-perfect code.

  • A good rash: We have developed our own shell-like domain-specific language for keeping state within an IRC context, rash. This language allows for a longer chain of interactivity and is also fun to use. I will showcase this little corner of concieggs and some of the features that depend on it. If you hear someone say that rash is not a beautiful programming language, then they are lying to you.

  • Fun features: What can concieggs actually be used for on a boring weekday evening? Lots! We have a large catalogue of social quizzes, joke generators, role-playing systems, weather forecasts, and much more. I will go through some of them.

I will also briefly address the question of whether we still need IRC bots, or even IRC, though I will be very biased and likely also complain about whatever proprietary chat protocol is currently riding the hype train.

This talk is introductory in nature and is suited for all audiences, including:

  • ordinary people interested in the future of chat technology;
  • corporate spies interested in the future of chat technology; and
  • IRC connoisseurs interested in new perspectives.

The contents of the talk will occasionally require a good understanding of computer science, but I will make sure to always give the big picture as well.


Metadata

To be recorded?: Yes

URLs for concieggs: An extensible IRC bot architecture with an attitude

Github: https://github.com/athas/EggsML


Instances

    No instances scheduled yet

Speaker(s):