It would be good to have something in between the hook special remote and
the built-in special remotes. The hook is easy to set up, but its simple
interface misses some features that a more full-features interface could
provide to a third-party program that wants to provide the best possible
special remote it can w/o being written in haskell:

* No way to send progress updates when uploading, so no progress bars for uploads from hook special remotes in the webapp.
* No way to verify the `initremote` parameters include all needed configuration, and do any initalization needed.
* No way to query and/or set the remote.log while it's running. (Well, technically, `git annex enableremote` can set values..)
* No way to store per-key information to the git-annex branch.
* No (easy) way to split files into chunks.

Some of these features could be added to git-annex as subcommands. Which would
improve the general programmability and flexability of git-annex. OTOH,
running `git-annex upload-progress` repeatedly is pretty ugly. Or the
interface could provide a channel for the program and git-annex to
communicate back and forth on. Maybe a mix of the two?

A final feature such an interface should provide is the ability to drop a
program into PATH and have it just work, without the user needing to do any
configuration beyond `initremote`. So, `git annex initremote foo type=$bar`
should look for `git-annex-remote-$bar` in PATH if that's not a built-in
special remote name.

--[[Joey]]

[[done]]
