Wednesday, February 21, 2007

REST isn't about the enterprise.... its about fixing the world (apparently)

Now I've been playing around recently with REST, there are even some projects at work using it (mainly around front end stuff, WS tends to do the heavy lifting) and pretty much its working well for developer to developer constrained domains (i.e. not 3rd party integration) and I'm even thinking of applying for the REST JSR to make sure it doesn't go all fan boy and complex.

But in terms of sheer gobsmacking appeals the paper that Pete Lacey will be presenting at W3C next week surely wins the IT hubris award for the REST crowd. The majority of the abstract reads as a moan that "people don't get it" the three key points for Pete are
* The implied blessing of SOAP, WSDL, and other web service standards, by the W3C, thus leading people to believe that SOAP is the one true way to achieve a world wide web of services.
* Concordant with this, the lack of education, standardization efforts, or general evangelism by the W3C to further promote the proper use of REST.
* The tendency of enterprise software vendors and enterprises themselves to continually reinvent well understood enterprise middleware systems.

I'm loving the last one, particularly as Pete is actually asking W3C to champion REST to the exclusion of enterprise focused work. This to me is exactly what I expected to happen when I was writing REST v WS is pointless, all we have here is another camp claiming that their way of shifting documents between servers is the best and thinking that this technical implementation approach will deliver the benefits to the world. Now explicit in Pete's paper is the idea that Enterprise problems are not worthy of consideration by such an august body as the W3C.
Finally, the W3C should divorce itself from all efforts that further the technological needs of the enterprise at the expense of the world.

This is what really irks me about IT, the perception that "the world" really cares about REST v WS. What Pete means is "cool developers" rather than "employed professionals" and the gripe that Pete's chosen approach just isn't getting the focus it deserves and needs the W3C to stop worrying about all those big companies that actually fund the W3C and concentrate on an idealised view of what will help the world.

What will help the world is fixing the enterprise problems, this is where the money is generated and where the most people are employed. The problems in both the world and the enterprise are not going to be fixed by a different way of exchanging XML documents and to claim otherwise is just silly. REST should survive or die based on its support and its proponents should look to themselves if they feel that it isn't getting the visibility that they think it deserves. Personally I think this argument is just a huge waste of resources that could be better focused on understanding interaction models (which neither REST nor WS does) and on simple modelling approaches for difficult problems.

The final thing I'd like to say on this is that the "world" v "enterprise" argument was exactly the same one used by Mark Reinhold to justify JavaSE 6 and the inclusion of JAX-WS into the basic Java release. Claiming you are addressing the "world" rather than the enterprise is just bollocks, the reality is you are just avoiding the difficult questions to get your personal agenda accepted.

Technorati Tags: ,


Stefan Tilkov said...

It's amazing how you continue to not "get" it :-)

Proclaimed Fact A: The Web *changed the world*. Do you argue this point?

Proclaimed Fact B: CORBA, DCOM, JMS, EJB, <your favorite enterprise technology> didn't

Proclaimed Fact C: The Web was not created due to "enterprise needs"

If the Web had been designed due to "enterprise needs", it would never have succeeded.

Steve Jones said...

I know I must be thick :) Nice use of the religiously overtoned word "proclaimed" BTW!

A: The Mobile phone has had a bigger impact on "the world" than the Web. The web is the 2nd biggest technology revolution in the past 20 years. Very important, but I don't see it helping much in rural Africa or India (where mobile phones are helping). WWW = server -> Person

B: EDI and its successors in inter-enterprise collaboration have had a pretty huge global impact. This is server->server

C: 100% agree. But it was created by someone with a problem at work who had the budget and talent to fix that problem in a way that could be rolled out globally. Once it took off the focus became on that global solution.

The question that hasn't been addressed is why A means B, i.e. why "REST for people means REST for servers". Server to Server (XML Document shifting) is something already well established in the enterprise space and ignoring that would be like ignoring the internet when it came to designing the Web.

Paul said...

um, Pete isn't presenting, you really need to check your facts more!

quark said...

Steve, the point of REST isn't to end all server-to-server XML-based communication. Quite the opposite, infact. The point is that instead of enclosing all of the different resources you might have in your enterprise inside a solid, black-box container (the SOAP Web Service), you should remove the container and expose the resources themselves. These resources can be in an XML format. They can be in the exact same XML format you use in your current SOAP service. The difference is that without the SOAP layer, each and every resource is directly addressable, so it opens up a whole new world of possibilities of what you can do with it.

Server-to-server communication is extremely important and something we need to work more on in the future. It's something both the enterprise and everybody else wants and needs (although not everybody knows it or understands it). But having server-to-server communication based on XML doesn't have to be on the account of the rules of the web, like SOAP-based web services are. If each response from a web service isn't directly addressable (through GET), then it's not RESTful and it's on account of the rules of the web.

There's really no opposites here. It's just that SOAP is an unecessary layer. WSDL on the other hand is something that could be quite useful in REST-based web services too, but not in its current form. What we need is a REST-WSDL format that lets you express the relationship between your different REST-based web services, what format they expect and will return, a formal and human-readable description of them, etc. When we have REST-WSDL, there's no point wrapping our web services up in SOAP any more.

Anonymous said...

Its a very nice blog for...
architects in bangalore , architects in bangalore , interior designers in Bangalore , interior designers in Bangalore , architects in bangalore , architects in bangalore , interior designers in bangalore