I am assuming that, just like everything else, the various wiki engines will be slow to implement Atom support and the various wikis will be slow to upgrade. So I am building Atom support into WikiGateway. So, if you have an Atom client, and you want to target a wiki server which doesn't support Atom, you would send your Atom request to a WikiGateway instance which would interface with the target wiki for you. This functionality currently works in WikiGateway (code is available) (except for "COMMENT" support, which wikis don't do anyway), but I need to tidy up the code a bit before a real "release".
-- BayleShanks
This is fairly obvious, but needs to be spelled out: the syntax for editing Wikis not the syntax used for display. This means that there needs to be separate mechanisms for retrieving either the original source vs the formatted source. This can be achieved as simply as having different URLs for each function. -- Sam Ruby
Joe Gregorio agreed.
Sounds good to me. I agree that the spec needs to mention somewhere that such-and-such a URL is for the "source", when such a distinction exists. -- BayleShanks
Danny Ayers felt that the server-interpretation of links could be problematic. He feels that maybe the client should just send the HTML source rather than the wiki markup source. He points out that a WSYIWYG wiki client would be a natual choice in this case.
Joe Gregorio feels that in order to create a page, Atom clients should first GET the nonexistent page, and then PUT the first version. This mirrors what wiki users do today.
The words interaction model sets of alarm bells in my head. Those words, particularly in conjunction with the notion of implicit state and coordination are sure to invite a series of flames from those of the REST persuasion.
One could perhaps wave these concerns off as "merely theoretical", but they have pragmatic implications. In particular, they impose greater requirements on the clients to have more knowledge of the target application. In this case, they can require a generalized web editing application to be aware that the target is a wiki, and therefore a different series of steps are required to create a page than for a weblog. -- Sam Ruby
MoinMoin inserts a hidden "datestamp" form field on HTTP POST to ensure that people don't overwrite each other's changes. I believe that other wiki software employs similar tactics. What this would correspond to in Atom is requiring that the atom:modified date be echoed back on the POST request. If it doesn't match, the request is rejected. This should be spelled out in the API. -- Sam Ruby
Joe Gregorio feels that the following would be sufficient: "elements or attributes in an Atom representation of an entry SHOULD NOT be dropped between the GET and the PUT, and that servers MAY reject such PUTs if elements or attributes are missing."
I'm concerned specifically about the modified element. My concern isn't that clients will remove this element, it is that clients will "helpfully" choose to update it. I see one of two possible paths to take on this one: either declare that modified is always set by the server and state that PUT requests MUST NOT contain this element, or state that clients MUST repeat the original value of the modified element on PUT requests that act as a replacement. -- Sam Ruby
> Re. datestamps, note that ETag/If-Match can be used with PUT.
Unfortunately, I have yet to find a single Wiki that supports ETags. I'm torn. My feeling at the moment is that Atom should be defined in a way that enables and perhaps even encourages the use of ETags for this purpose, but does not require such. Alternatives such as If-Modified-Since and "hidden" elements should also be supported. -- Sam Ruby
What concerns me most about ETags is that it depends on the correct operation of clients in order for the server to maintain a coherent version history. That would invite mischief. So the only way I think that going with an ETag based approach make sense is if they are REQUIRED on PUT requests.
BTW, I don't buy the argument that because there must be a gateway or explicit Atom support that "it doesn't matter if wikis don't do ETags". That reasoning can be used to justify almost any feature.
What I would most like to see is an API which is as common as possible to as wide of a set of use cases as possible - first and foremost being weblogs. For single user weblogs, the requirements for coherency is versioning are quite different. -- Sam Ruby