ietf
[Top] [All Lists]

Re: Gen-ART LC review of draft-dusseault-http-patch-15.txt

2009-11-16 10:25:29


--On Sunday, November 15, 2009 14:54 -0800 "Roy T. Fielding"
<fielding(_at_)gbiv(_dot_)com> wrote:

On Nov 15, 2009, at 12:03 PM, John C Klensin wrote:
...
We should not be adopting a "patch" protocol that lacks both
the tools for, or a serious discussion of, transactional
integrity.

John, HTTP is not SQL.  The transactional integrity is inside
the resource implementation.  The entire transaction consists
of a single request message and a single response message.
HTTP is responsible for the communication interface, not the
implementation of specific resources, and cannot proscribe a
specific transaction semantic because it is NOT WANTED by
many resources.

Roy, I certainly agree with the first part of this.  HTTP is not
SQL.  If it were, I (at least) would be loudly insisting on an
integrity mechanism.  However, normal IETF practice includes
being explicit about issues and traps with specifications.  So,
while it is plausible to take the position you express above,
that just about requires that the specification explicitly
indicate that verifying transactional integrity is the
responsibility of the calling application.  I'm also suggesting
that it should at least point to ways to do that.   The
paragraph in Security Considerations (Section 5) that reads:

        "A document that is patched might be more likely to be
        corrupted than a document that is overridden in
        entirety, but that concern can be addressed through the
        use of mechanisms such as conditional requests using
        ETags and the If-Match request header."

is not, IMO, adequate in that regard, at least absent a
normative reference.  It is also the key to the issue as I see
it: while POST can be used to simulate PATCH, the normal and
obvious use of POST is to supply some information to the server
or to replace ("override") an entire document, PATCH would seem
to have, well, patching as its primary purpose.  

For example, a collaborative whiteboard in which many people
are patching at once, the patches consisting of context diffs
that are internally capable of distinguishing conflicts, would
be impossible to implement via standard etag behavior.

Sure.  So say that in the document.   My problem is _not_ with
the mechanism, it is with what you apparently assume people will
figure out for themselves or learn through oral tradition.

Standard etag conflict resolution is not required because
it is not desirable for many applications of PATCH.  For
other applications of PATCH, it is already defined by HTTP
and does not need to be reiterated here.

We disagree.  I believe it does "need to be reiterated here",
either in-line or by an explicit, normative, pointer to the
relevant portion of the HTTP spec.

    john

_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf

<Prev in Thread] Current Thread [Next in Thread>