Thanks for going through it, I know there's a lot to go through..
I was thinking of just having one mail root and inside that there could
be maildirs and mboxes. Everything would still be relative to the root.
> 1. Are URIs the way to specify individual messages, despite bremner's
> concerns about too much of the API being strings? Is adding another library
> is the easiest way to parse URIs?
In my opinion the nice thing about using strings is that it does not require
any changes to the Xapian database to store them. I think using URIs may
not be best though as they seem to be annoying to parse (as filenames
can contain the same characters) and you seem to need to work around the
parser in some cases.
I wonder if the following would be practical: use // as the field
separator:
e.g. mbox://filename//start_of_message+length
I think 2 consecutive slashes // is about the only thing we can assume
is not in the path or filename. Since it is not in the filename I think
parsing should be trivial (thus avoiding the extra library).
Secondly, I would prefer to keep maildirs as just the bare file name: so
the existence of // can be the signal that there is some other
scheme. This is asymmetric, but is rather more backwardly compatible.