2005-12-02

Committees Can Go to Hell

In the last few days, I read a blog that lamented about protocols designed by committees. I wish I could remember where I saw it, but it basically discussed how certain protocols are obviously over-engineered and bear convoluted designs that are more a result of consensus than the limits of reality.

Now I know what that anonymous blogger meant. His example was the OSI 7-layer model, which is far more convoluted than it probably needs to be. (The fact that universities never seem to teach the whole thing in any serviceable detail is proof enough that a lot of those layers are fluff and voodoo.)

My example of fluff and voodoo is SIP versus IAX. SIP is an IETF standard that looks pretty much like Cisco and a herd of demented baboons collaborated on a bloated multi-channel, multi-path, multi-port data exchange protocol. Seriously. Look at the graph if you don't believe me.

IAX, on the other hand, was designed by two guys for the Asterisk project. It uses one UDP port for both data and control information. To the designers' credit, when they moved from IAX version 1 to IAX version 2, they changed the port number to avoid confusion. SIP, on the other hand, uses a variable, user-definable number of ports, making it a little like the nightmare that would arise if SMTP and FTP had a bastard child together. Instead of punching one "pass in" rule into /etc/pf.conf to enable your network to use IAX, you can download a six-page PDF and hope for the best.

The best protocols are the ones developed by small teams, sometimes individuals, to fulfill a precise need. I'm thinking of great networking tools like BitTorrent and rsync. Instead of building a protocol to gain some political ground, these tools keep practicality at the forefront of the design guidelines. If you're building some software, protocol or not, ask yourself "Is this going to be easy to use?" and "Is this project growing significantly larger than its intended range?" If you answer yes to either of these questions, you might want to check to see if your project is being designed by a committee.

When everyone puts in their two cents, you end up paying the check entirely in pennies.

No comments: