[haiku-development] Re: [GSoC proposal] IMAP FS - A few queries

  • From: Clemens <clemens.zeidler@xxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Thu, 21 Apr 2011 09:56:10 +1200

On Thu, 21 Apr 2011 09:27:39 +1200, Donn Cave <donn@xxxxxxxxxxx> wrote:

Quoth "Ingo Weinhold" <ingo_weinhold@xxxxxx>,
[... re deletion ...]
 I was hoping the recent discussion clarified things.

I am afraid no amount of discussion is going to clarify things, and
the only way to move ahead is to defer implementation of a Trash feature.
That's the place where no one seems to be able to agree - it's surprising
how many ways there are to see this working, and how we all seem to be
able to defend a different one.  I could go on about why I don't think
your version will work so well, and what I'd like to see different in
the proposal, but we've been over it all a couple times already.  It
will all work fine without a Trash folder, as long as users unmount
once in a while.

[... re offline ...]

I agree a queue is problematic.  Probably another case where it would
be better not to support this right now - could IMAP operations while
offline just fail?  Anything else would take a lot of experience
with IMAP to get right.

        Donn


Somehow agree to defer this a bit... More interesting for me is for example how to implement the local cache? The local storage should be robust against fs crashes, think that is not trivial to implement.

A possible solution would be to abuse a bfs iso image for the mail storage (really just to store mails internally), This would also gives easy query support. I see some problems with this though:
- performance does not becomes better
- query support does not work for pseudo attributes (Mail:thread) or dynamic attributes (Mail:account)
- is it possible to increase a bfs iso?

probably its better to store the mails in a raw file and load them (filenames and attributes only) into a modified bfs ramfs on startup. Proposal for a flat file format: store mail header, internal header and body part in separate not necessarily continuous blocks. In this way a body can be added at the end of the file without the need to move (and potential corrupt) other parts. The internal header could also be modified with single fs operations... But how to delete messages?

Did I miss a simple solution? Any ideas?

cheers,
        Clemens

Other related posts: