i’ll admit it. i fell for the allure as well, but ultimately, most of the Human Readable Protocol concepts are stupid.
Allow me to explain. Say, you’ve got two computers that want to talk to each other (chances are very good that this is the case). You have infinite ways that they can go about doing this, but a rather attractive way is to have something that you can read.
so instead of getting something like ^A<long stream of binary cruft>^D you get something more like:
FROM [email protected]
TO [email protected]
SUBJ That thing i sent you
Did you get that thing i sent you?
It’s nice and readable, with the added benefit that if you’re ever stuck somewhere without a mail client, you can telnet to port 25 and send out an email. Provided you remember the order of the steps. And get the format of the lines right (pretty sure i didn’t just now). And don’t make spelling mistakes, etc…
There are lots of protocols that have Human Readable Formats. FTP, SMTP (e-mail), HTTP (web), etc. Some of these make sense, particularly if they’re for short, on then off right away sorts of things. The problem is that if you want to do something really complicated, there’s a lot of work trying to figure out what “HELO\r\n” means, vs. two characters. It becomes even more of an issue when you’re talking about small devices that pay per KB (Hi there mobile devices!)
That’s when looking at something like
<message to="[email protected]" id="if00lu" >
<body xml:lang="cy">Prynhawn da</body>
becomes absolutely terrifying. (really, i need to fully specify the namespace of a nick with a URL that doesn’t resolve just so that the consumer knows what i mean?)
It’s at this point that i cry out that anyone that proposes such a protocol is forbidden from using a client in order to use it.
There’s a good reason that TCP is not human readable. It’s never meant to be displayed directly to humans. Likewise, things like Finger and HTTP are meant to be displayed to humans. Yeah, yeah, you’re probably not going to understand the stream of crap that adds up to a JPG image or movie, and depending on how aggressively a server compresses outbound data or collects additional content you might have issues figuring out what it all says, but a minimal HTML page is:
<title>This is a page</title>
No, really, this is valid HTML and will render just fine.
If you didn’t have a browser you could just enter the command:
and be able to mostly read what you got back.
Granted, most folks (as in > 99.999% folks) don’t do that, and thus we have things like SPDY, which is optimized for Machines and is generally faster.
Really, the question becomes, how realistic is it that J. Random User is going to get a screen full of raw protocol they have to act on? If the answer is “Not often”, do you really need to have it be “human readable”, or can you just build a tool for the less than 1% of developers and systems folks that need to see what’s going on?