Erik sent me Stevey's Google Platforms Rant repost on news.ycombinator.com Subject: I'm glad you get this and that's how you designed 6d. My short gut response was, "well of course", and I was about to hit send, but something compelled me to reafirm why I had that gut response. Here's my reply to the message, after Erik's suggestion to post it.
It's exactly how 6d is designed. 6d is a platform. Blog, Address Book, Media Manager, etc., they are all apps built with the platform. As a matter of fact, I've taken the idea of a platform even further by mimicking and staying close to the design decisions of the HTTP protocol and the web. Every resource is uniquely identifiable and can stand alone, meaning you can call any resource by itself. You don't have to make a GET call to addressbook before you make a POST call to it. It's stateless just like HTTP, which makes it scalable. It's revolutionary to design a web app like this because I have yet to meet someone who thinks it can be done. The ones i have spoken with about this still believe that you have to build a separate admin interface because you can't "mix" the two. But that just tells me that they don't get it. They don't see the app as a platform first.
After reading this to make sure I didn't misspell anything or use grammar that, to my knowledge, is incorrect, I didn't like where the last statement stopped because what I mean is that the app is the platform. And everything else is built with it (or on top of it, depending on your preference). I purposefully chose to design the app as a RESTful application. It's not just an acronym to me. It's a design, an architecture, a philosophy, and constraints. There's so much more to building a RESTful application than just pretty URLs and JSON. You're constrained by the HTTP methods and the idea that everything is a resource that the eventual design is simple, stateless and flexible. Just think about this, the same URL that you used to request this post, represented as HTML, can be modified by adding ".json" to the end of it to get it represented as JSON instead. Think how powerful that becomes when you want to make a web app that makes AJAX requests? It uses the same URLs as the web site does but with different file types (JSON, XML, HTML, etc.). Come on! That's cool!