[wiki-standards] wiki API
Chris Dent
chris.dent at gmail.com
Mon Feb 23 10:47:03 CET 2009
On Feb 23, 2009, at 5:56 AM, Bayle Shanks wrote:
> 10: Amo (SocialText)
>
> [...]
> http://www.wikisym.org/wiki/index.php/WSR_10
>
> which of these are considered alive?
I'm one of the authors of the first couple of phases of the Socialtext
HTTP/REST/Web API and was part of the gang that was exploring making
it into Amo. We were very pleased with the work we had done and
thought we could add to the Wiki community by spreading it around as a
possible standard. As happens with startups, though, we got distracted
by paying the bills and the original team has since moved on to other
things.
To tie this in to your other post a bit, we put a lot of thought into
how we designed the API and what we didn't include as much as what we
did.
We considered Atom pub, but at the time it hadn't quite stabilized and
there wasn't a close enough mapping to the entities we wanted to
consider and the style of use we wanted to support (see below for more
on that). It also is XML based and, well, none of us are too keen on
it: not enough transparency and easy tweaking.
We did not consider WebDAV. It was never an option as it requires
special support on both the client and server for new HTTP methods. We
wanted to stick to with GET, PUT, POST and DELETE for all the reasons
that people have stated many times before so don't really need to be
repeated here.
So we wrote our own and it turned out to be quite fantastic. Greatly
improved the way that Socialtext created features, managed data and
did work.
In Amo the primary entities are workspaces (different wikis supported
by the same server), pages, tags, attachments, users and backlinks and
frontlinks. There's a fairly uniform grammar in the URLspace and in
the handling of HTTP verbs. It's this uniformity that's the big win.
The core Socialtext code is still open (it's on http://github.com/socialtext)
and the REST API is actively used and being expanded in various
ways. The documentation is athttp://www.socialtext.net/st-rest-docs/index.cgi?socialtext_rest_documentation
(here's that same workspace as represented in the API http://www.socialtext.net/data/workspaces/st-rest-docs
I continue to want to see Amo happen in some form. I think a URL based
API for wikis would be great. Most of the APIs that you see are method
based, which limits their flexibility.
I took a lot of what I learned from working on the Socialtext API and
put it to good use in TiddlyWeb, which is a server-side API for
TiddlyWiki: http://tiddlywiki.org/wiki/TiddlyWeb
It has a much different structure (because it has different entities:
recipes, bags, tiddlers) but follows the same principles.
More information about the wiki-standards
mailing list