See below

On Aug 1, 2007, at 9:58 AM, Mark Baker wrote:

"what actually is going to happen" is an implementation artifact, not
part of any interface, business, technical, or otherwise. You never
want to expose implementation details because consumers tend to forge
dependencies upon them, preventing the implementation from changing in
ways which break those expectations.


Now this one is interesting and I'm not sure I agree.

I'm not sure I agree with the idea that the uniform interface provide the power to change so transparently. Let me mention again that the more I look at REST the more I'm enjoying it but there are some assumptions I don't agree with - doesn't make REST bad but I think it overstates the case. This is one of them.

If the form/schema/whatever of what I need to send to a REST resource changes then guess what? I need to change what I send it. I can't assume to be blissfully unaware and go on with life. If implementations change, there is a good chance that that might effect me. Now if the back-end database changes or the implementation language changes that might make no difference whatsoever (btw something that lots of non-REST technologies provide) but there are some changes that would effect my resource interface and just because I'm using POST doesn't mean that I won't be inconvenienced.

But, say the REST folks, because it's not so tightly coupled it won't break so easily, it's allows things to be much more dynamic. But sometimes it's important that such changes are VERY visible so that my expectations are still met. I.e. I'd like to know about a change in implementation that will effect how I interact with you.

So we can say things like business has been doing REST based approaches for generations i.e. I use the postal service to send a form to some department to perform some well defined action based on the information in the form sent over a uniform interface, the postal service. However this is nothing more annoying or indeed potentially costly than finding out that "the form has changed" long after you expected the action to be performed! "Why didn't someone tell me the form changed!" We demand. "You've cost me time and money with this delay!" So is this dynamic transparency really true? And does it really always have value?

So on a related note then I wonder if the old "break code violently" saying carries here too. The idea of "breaking code violently" was that you would write sanity checks and assertions in your code so than in testing it would crash the code if certain rules were being broken - that way you found out very quickly where assumptions were wrong and expectations were broken. So does the alleged "transparency" actually delay important information about assumptions and expectations being changed and does this have an adverse effect?

William

Reply via email to