REST Leading To Rails

From 2000 to 2004, Peter and I drove the development of GE Smallworld’s Internet
Application Suite
which made is possible for customers to put their complex-GIS applications onto the Web.

What we built was in many ways similar to Rails. It used a dynamic language called Magik (not much different than Ruby, maybe I’ll post about it one day), had an ORM layer, had controllers (we called them services), had the concept of layouts, partials, pages, etc. I suppose it shouldn’t be that surprising since both frameworks were designed to solve similar problems – although ours heavily focused on GIS applications.

Anyway, I find it fascinating to compare and contrast what we did versus what
Rails does. Much is worse, some is better. We also learned a whole lot about the Web and its triumvirate of technologies – URIs, HTML and HTTP. At the beginning, our URIs were on the ugly side and we thought REST was something precious you squeezed into the nooks of an 80 hour work week. And then we succumbed to the chimera of Web Services and soon became experts on all things Web Services – name the spec and we knew it cold. WSDL? XML Schema? SOAP? No problem. And I
don’t mean we knew how to use it – I mean we knew how to implement it starting with just a lowly XML parser [No – were are not masochists, we had to because of the environment in which we worked].

By 2002 we had come to our senses – Web Services were a great idea but SOAP sure wasn’t – not to mention XML Schema (for fun go look up substitution groups and wonder why). We found the RESTafarian religion thanks to the writings of Roy Fielding (you really should read his dissertation!), Paul Prescod, MarkBaker, etc. After lots of internal discussion and debate (or was that shouting matches) we made the decision that REST was the one true way for web apps and that’s where we were taking the product. And we never looked back.

Now its three years later and we’ve both moved on to other jobs/ventures. By coincidence we both recently got back into web development using Rails. Surveying the web development landscape again – its remarkable to see the WS* versus REST debate still raging. REST is so much better suited for building web applications, as very many smart people have explained over and over and over and (yeah I’ll stop now), that is amazing there is any doubt left. However, I have a nice dream that the debate is almost over because the Atom publishing protocol, Rails and PHP (don’t hold me to the PHP claim since I’ve never used it) are driving a stake into the WS* heart.

Which brings us back, in our own tortuous way, to Rails. Rails is fun to use. Rails is productive. And Rails is fully RESTFUL…or not. Fortunately, its actually not that far off but does have some warts as Peter did a great job explaining a couple months ago. The summary is that it falls short it two places. First the inclusion of actions in URLs and second in HTTP content negotiation. And that sets the stages for my next couple of posts. Till then….