protocols are hard



http://www.flickr.com/photos/greencolander/2356459228/
http://www.flickr.com/photos/pbo31/95696658/
not-so-hidden agenda




http://www.flickr.com/photos/gullig/2163728126/
self-describing
http://www.flickr.com/photos/moriza/189889980/
not self-describing




http://www.flickr.com/photos/25128555@N03/2371783536/
cowpaths accommodated
http://www.flickr.com/photos/suda/672714986/
redbot.org


http://www.flickr.com/photos/15708236@N07/2754478731/

Editor's Notes

  • #2 Protocols are hard, because distributed systems are hard, and interoperability is hard.
  • #3 Part of my day job is fielding questions for developers who have trouble with HTTP.
  • #4 Questions like "why isn't my page caching?" "why isn't gzip working?" "what does this mean?"
  • #5 Many issues can be found by inspecting responses, and observing how a resource behaves.
  • #6 RED is the Resource Expert Droid -- an automated tool for testing HTTP resources, whether they're Web pages or RESTful Web Services.
  • #7 [ screenshot showing interface for a basic response]
  • #8 [ screenshot showing interface calculating cacheability of response ] 
  • #9 [ screenshot showing interface validating resource ]
  • #10 [ screenshot showing interface verifying proper operation of partial response ]
  • #11 [ screenshot showing interface verifying gzip content negotiation ]
  • #12 RED can find common errors like a Content-Length that's incorrect or a header with incorrect syntax.
  • #13 And it also catches issues like headers that are too big, URIs that are too long, and URIs that contain illegal characters.
  • #14 You can drill down on any problem and get a complete explanation of the issue and its impact.
  • #15 RED can also tie-in to other tools: HTML / Atom / RSS / CSS validation. In time, it will have more knowledge of common payload formats.
  • #16 I have a hidden agenda with this tool -- encouraging RESTful design.
  • #17 If your message is self describing (E.g., Allow header, Link header), RED can navigate them and give you a richer experience.
  • #18 OTOH, if you use non-standard headers or your messages aren't self-describing, it won't work as well with RED.
  • #19 RED can, in time, support extension protocols like OAuth, OpenID, AtomPub and others. 
  • #20 Under the covers, RED is asynchronous, event-driven Python, from sockets up. GPL License.
  • #21 See [URL] to use, download or contribute. Work is still in progress.