Chapter 1: Introduction
1.1 - History
It all begin several years ago, with this partly-Irish lad named Dylan Hardison. He was a regular user of IRC and other chats, including a java-based chatroom for a gaming community he participated in. One day, it is said, young Dylan decided to create his own client for that chatroom.
Soon, however, he discovered for himself how frightening the chat protocol was, and decided to invent a new chat server and client instead. For this, he determined, he would use this flashy new Perl thing called POE. He called this new chat system "Chet", and after some brilliant innovations, it was consigned with little ceremony to his projects folder and forgotten for quite a long time.
Happily, though, he suddenly remembered about it again sometime around 2002 or 2003 (no one is sure), and with the help of one Mr. Underscore (Bryan Donlan), "Haver" was born. Soon, a few other developers joined the bandwagon, and things began to move along. After a period on Savannah, it finally settled at Gna!. The protocol grew and evolved like a genetic engineering project gone terribly wrong as time passed, as did the existing servers and clients.
The evolution is not finished yet, though. Oh, no. It has only begun.
1.2 - What Haver Really Isn't
At this point you're probably wondering, "Ok. It's a chat protocol. So? What makes Haver so special, anyway? What about IRC, hmm?" Let me begin by explaining what Haver fails to be.
First and foremost, Haver fails to be complex. Utterly. It's darned simple, guaranteed*. It's so easy that you hardly need a client. You can just use a telnet program, for goodness' sake. As such, making clients for it is, by extension, a piece of cake. This is a big difference from most of the currently popular chat protocols, not least IRC. You shall see proof of this as we proceed.
Speaking of IRC, Haver fails to be a drop-in replacement for it, Jabber, or any other popular, clever-sounding, or acronym-riddled protocol. Don't expect things to translate well. The layers of hacks that have built up since long ago to make up the IRC protocol we know today do not fit in Haver's tidy, simple world, and nor do the complex, high-minded ideals that form Jabber. Did I mention that Haver isn't complex?
Finally, Haver fails to be limited to just plain chatting. It was designed from the very beginning to be highly flexible. It's bendy! With Haver, you can theoretically just as easily play games with fellow chatters, send messages in strange formats that only people you choose can read, and more, as you can say "Yo."
1.3 - Purpose of This Primer
That brings me to the reason why you're here. The purpose of this document is to educate you, the reader, as to how Haver works on a fairly basic level, to either satiate your idle curiosity or to aid you in the construction of a client. To speed things along, I'm going to assume you know at least some about how stuff like TCP/IP networking and other chat protocols work. In the spirit of Haver itself, though, I will make things as easy as possible to understand.
Ready to begin your training, grasshopper? Then let's proceed...* Not really guaranteed. I'd need a lawyer to say that sort of thing.