IRC Server in Go

Project Update: 2014-12-02

Planning the Application

So the first challege with this project is working out where to start. Do I start with writing the code to handle the IRC protocol? Do I tackle managing the connected users? Do I handle the message bus? So very confusing!

So as I always do with something like this is start with a simple mock-up of what I want, that is, a very simple prototype which ticks the bare essential criteria.

In this case, I want to build the most simple IRC server possible. One which allows the user to connect, and send messages, and have those messages broadcast to all other connected clients.

For bonus points I will avoid using libraries to handle functionality which I can build myself (within reason).
I will write my own IRC protocol handling, server handling, built directly on the go net package.

This will introduce one of the key points of using Go, which is concurrency.
Each client will be handled by its own goroutine, which means each client connected will have its own virtual thread managed by Go’s built in scheduler. This is a simple measure which should hopefully allow the application to scale to many users with relative ease.

I’ve got some thoughts already about what I’ll use for the message bus, most likely using ZeroMQ / 0mq as it is a lightweight messaging system which can be used in-process, as well as over the network (should I wish to implement clustering)

Next step: Start building the prototype.

You can track the progress of the code on my Github: Repository Link