[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