Well, remember, Zotero isn’t a web app–the interface is done with XUL,
which makes it more closely resemble a desktop app but requires more
manual implementation of keyboard support for certain actions. Full
keyboard accessibility is still quite possible, though–the only reason
Zotero doesn’t have it is because we haven’t finished adding it.
An actual web app would likely have a different interface from a XUL
app, so they’re not really comparable, but there’s no reason a web app
couldn’t be perfectly usable via the keyboard, either–you’d get
accessibility for standard HTML elements via the browser and implement
anything else via JS. Advantages of a web app include 1) no
download/installation, 2) ability to accept reference data from apps
like Zotero via GET/POST (like, say, the W3C validators), 3) ability to
save edited styles via a simple download link (which, if served with the
proper MIME type, Zotero or another CSL-powered app could auto-install),
and 4) possible integration with a browsable repository of styles, so
you could find a template style, click Edit, make a few changes, and
download into your CSL-powered app.
The advantage of a Firefox extension over a web app, along with Zotero
integration, is that it’d let you create a tool that felt more like a
desktop app, with custom context menus, etc., and you could leverage a
lot of special functionality in the Mozilla framework (for XML handling,
file I/O, etc.). But that may not be necessary.
The most important thing may be to figure out how you’d be providing
previewing of styles, since that may affect other design decisions. If
you weren’t going to leverage Zotero for that, you’d need a CSL
processor and some way of inputting data. I guess maybe CiteProc could
help here, though I don’t know much about it or how up-to-date it is.
But before relying on CiteProc, you (and we, if we were going to
recommend that people use this rather than a Zotero-integrated tool that
we develop) would want to know that CiteProc was going to be kept
up-to-date with the spec.
Another option would be a web app that did previewing using an
abstracted version of Zotero’s JS-based CSL processor…