stargrave's blog

FSFE Fellowship Blogs weblog

Minimalistic simple IRC server written on Go

Go programming language seems to be very interesting for me. I used to program several years on Perl, Lua and last time on Python. Go is like C, but with convenient necessary features I wished for. I have never coded on it before (except two half-screen sized functions) and this weekend is the first time I decided to write something useful.

As XMPP organization killed global Jabber network (requiring TLSed interserver connections), I looked for good global chatting solution. (Un?)fortunately only IRC protocols seems to be simple enough and there are clients for every available platform I presume. Big global IRC networks are not protocol compatible between themselves. Existing IRC daemons are not so easy and quick to setup. Anyway even in XMPP world there are islands of separated servers, so even if my server can not communicate with other ones — so be it.

I used miniircd IRC daemon: it is written on Python, does not have configuration files and satisfies all my IRC needs. But as I decided to try Go: I rewrote it. Single executable binary and pretty fast working daemon with ability to save logs and channel states. https://github.com/stargrave/goircd

I still did not cover all it’s commands with unittests (however I began with TDD development principle, I wished to chat with my friends stronger), so probably there should be bugs. And as I do not have any experience in that language: bugs have to exists. Currently it works pretty well for private/personal use. You can easily create TLS connections with crywrap utility. And of course it is free software!

2 Responses to “Minimalistic simple IRC server written on Go”

  1. Matija “hook” Šuklje Says:

    Have you checked out PSYC yet: http://about.psyc.eu

    …it seems to be a quite interesting secure communication protocol.

  2. Sergey Matveev Says:

    Yeah, I run PSYC daemon for nearly half a year. The protocol itself seems really very interesting, no doubts. Truly hackerish. The only concern is some daemon problems. PSYC clients (I use simple telnet) work perfectly, but IRC/XMPP sometimes fail for example to add friendship and that was rather annoying.

    I really hope and PSYC together with GNUnet project modules will replace damned proprietary censored centralized existing systems in the future.