I was recently thinking about starting a gRPC project just to kick the tires and get a feel for how the technology worked. In the past I’ve only played with it for a short while and this was during the proto2 days. To give this a go I spent a couple of days learning about the proto3 specification and then trying to think of something worth spending the time and effort on.

After a bit of thinking about how to use the duplex streaming that the framework provides I decided upon writing an IRC-like server and client. I figured this was complex enough to merit the attention and simple enough to implement over a couple of weeks during my spare time. With all of this in mind I started the chatterbox github repository and started to hack away. True to my method I started by spending a couple of days studying other “chat” implementations and trying to understand how the duplex would be implemented in the Go programming language.

Once I had an idea of how the duplex would work, which came down to using managing Go routines to track ingress and egress traffic I started to lay down the basics of what I wanted to implement. At first I’ll admit I probably tried to go too far but eventually I settled on implementing four of the basic IRC commands. Those were join, part, ping, and msg. With these commands I could support multiple channels and all of the basic behavior seen in an IRC server implementation.

It took me about two days of hacking to get to a point where I’d call it pre-alpha, that is it will compile, it may not work, and will definitely have bugs. Feel free to check it out. I’ll attempt to move it into a true alpha release in the next couple of weeks and hopefully a beta version by the end of the year. If you have any questions feel free to reach out. I don’t plan to implement any other commands but do plan to get the commands that exist and the client and server into beta state.