Sunday, June 12, 2005

REST - The Web Style

I give you the slightly updated slides to a talk I gave on Friday to the Lotus Workplace Architecture Board.

The topic was REST - The web style

An argument about an outlook on technology, on complexity, layering and leverage.

(It's also available a Freelance Graphics presentation .prz)

This relates to a question in the presentation:
How did you get on the web?
My first web development was implementing the Publish to Web functionality in Freelance Graphics in '96-97 so I typically don't do Powerpoint... I'll try to get a pdf version at some point for printing for those who don't happen to be blessed with Freelance.

The presentation is a recasting of things I've been writing about here at the toli for the past few months. It was intended to be a little cri de coeur and slightly provocative and hopefully I'll be taken to task for some of my commentary both inside Lotus and externally. It draws on a few sources which I'll acknowledge below. It's always interesting to try to distill tens of thousands of words and countless discussions into an hour's talk. One should submit periodically to that kind of critical scrutiny to learn if there is value in one's content. I hope you enjoy it, nod your head or as the case may be, cross your hands and disagree furiously. In any case, here's to the ongoing conversation...

The subtitle is Why I am a RESTafarian

Some preliminary information.

REST stands for Representational State Transfer

The canonical work is Roy Fielding's dissertation. Roy led the effort to build the Apache web server and to define the HTTP specification.

Elevator Pitch version

REST is the architecture of the web

REST is the best of the lessons learned in developing the web.

REST embodies the design patterns of the web.

REST is defined by four interface constraints:
  • identification of resources
  • manipulation of resources through representations
  • self-descriptive messages
  • hypermedia as the engine of application state

[Update March 2006] Here's a fuller elaboration of the REST Elevator pitch.

Roy Fielding's Take

A presentation ostensibly about Designing a new protocol for the Web (ppt) but which is revelatory about the motivation of the web.

A short paper on REST (in case you don't want to read a dissertation)

Principled Design of the Modern Web Architecture

Roy Fielding's dissertation

Architectural Styles and the Design of Network-based Software Architectures

The meat is this chapter

It's Just Data

Sam Ruby is participating in an effort at IBM to simplify our technology stack

Attractive Nuisance (Sam Ruby on the View Source imperative, http, html, xml, unicode, encoding etc, excellent presentation)

Radical Simplification (Sam Ruby expounds on shedding layers of complexity in the IBM technology stack)

Adam Bosworth:
"the web succeeded because of Simple Sloppy Standards that Scale"
He's now at Google and also believes in Keep it Simple and Sloppy.

Koranteng's take on things


Craigslist + Google maps (the kind of magic that happens when you design for the web)

For those who think that bleach is new... (Lotus was right there in the mix in 1998-99)
The Horseless carriage (a great description of the social implications of the web, blogging etc)

The specs (if you really want to read them, sadly most don't)

Further reading

REST wiki (trying to document the web style and collect design patterns)

Second Generation Web Services

Show Me the Code - Joe Gregorio walks through creating RESTful applications


< a href="">How to Create a REST Protocol

RFC 3205 - On the use of HTTP as a Substrate

My rest writings

File under: , , , , , , , , , , , , , , , , , , , , , , ,


Anonymous said...

s/leading/participating in/

Koranteng said...

Fixed. I knew that of course...

And there I was replying to a post about Proper attribution in blog postings last week. Oh well...

Anonymous said...

There's a custom over on livejournal to summarize people's phone posts so that people who don't want to listen to the whole audio file can get the gist of the content. So I'd summarize you as:

REST is easy, it works, and it's what's already out there on the web. It enables manufactured serendipity. IBM's technology stack is too complex, and we're ignoring the web style at our peril.

What I'd like to know is how the Lotus Workplace Architecture Board received your talk.