- A Note on Distributed Computing. ’nuff said.
- Architectural Styles and the Design of Network-based Software Architectures. Roy Fielding‘s dissertation, obviously.
- Modularity and Efficiency in Protocol Implementation. By Dave Clark. I read this over every couple of years, and get something new out of it each time as I apply its lessons to my recent experiences.
- Foundations for the Study of Software Architecture. Before Roy clarified and improved upon it, this defined the field of software architecture.
- Extending the REpresentational State Transfer Architectural Style for Decentralized Systems. Rohit Khare’s dissertation. Still absorbing it, but it’s already had an influence on my work.
- The Stack of Specifications, by Tim Berners-Lee. How to design and interpret a self-descriptive Internet scale protocol stack. Although that could be the best of the bunch, if you haven’t read all of his Design Issues, you’re missing out on some good stuff.
FWIW, I’m not too keen on Marshall Rose’s RFC 3117. It’s wonderful up to and including section four, but how those sections are used to justify BEEP blows my mind. I think he lost sight of the forest for the trees; that application protocol frameworks (like BEEP, and how SOAP is most commonly used) are a dime a dozen, and that until you’ve defined an application protocol, you’re just spinning your wheels. In other words, BEEP addresses most of the hard problems except the hardest one; coordination.