This post hits the nail on the head. I've been blathering on about some of this stuff at work* for a while: Don't tie your protocol to your programming language, protocol is the most important thing in a distributed system, make data as simple/flexible/loosely-coupled as possible, don't constrain yourself with schemas. Now I've got something to link to.
N.B. I don't think this is just applicable to protocols - also data storage. Serialized objects and O-R mapping tools can seriously louse up your data if you're not careful.
- usually to people that aren't interested