unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Jani Nikula <jani@nikula.org>
To: Austin Clements <aclements@csail.mit.edu>, notmuch@notmuchmail.org
Subject: Re: [PATCH 0/5] lib: make folder: prefix literal
Date: Sat, 25 Jan 2014 11:33:04 +0200	[thread overview]
Message-ID: <87r47wfltb.fsf@nikula.org> (raw)
In-Reply-To: <87y525m649.fsf@awakening.csail.mit.edu>

On Fri, 24 Jan 2014, Austin Clements <aclements@csail.mit.edu> wrote:
> On Thu, 09 Jan 2014, Jani Nikula <jani@nikula.org> wrote:
>> Hi all, this series makes the folder: search prefix literal, or switches
>> it from a probabilistic prefix to a boolean prefix. With this, you have
>> to give the path from the maildir root to the folder you want in full,
>> including the maildir cur/new component, if any. Examples:
>
> I strongly disagree with requiring the cur/new component.  The cur/new
> directory is an internal implementation detail of Maildir (and a rather
> broken one at that) and no more a part of the "folder" of a piece of
> mail than its final file name component.  It's also the less obvious
> user interface; if we require the cur/new component, we *will* get
> people asking why their folder searches aren't working, but if we strip
> the cur/new component, nobody will be surprised.
>
> I think the question is not whether we should strip cur/new, but when.
> We've already defined a "_filename_is_in_maildir" test in
> lib/message.cc, which we depend on for flag sync.  It's simple, but I
> think this would be the right thing to use for consistency.

I'd like to discuss some of the reasons I chose to include the cur/new
components. Admittedly, none of them are very strong on their own, but
all of them together tilted my opinion towards requiring them.

The way I see it, notmuch supports maildir, but does not require it. In
many ways the messages are just files somewhere in the directory
hierarchy. There are only a few cases where it matters that there are
cur/new/tmp directories within a directory.

If you strip cur and new, it becomes impossible to distinguish between
files in foo, foo/cur, and foo/new - and one of the reasons for changing
folder: in the first place is to be able to better distinguish between
folders.

Apparently mutt presents the difference between messages in new and cur
to its users (so I've been told; I've never really used mutt), and our
integration with mutt lacks that distinction. We could fix that by
requiring the cur/new components in folder: searches.

Speaking of consistency, compare _filename_is_in_maildir() with
_entries_resemble_maildir() in notmuch-new.c. What should the indexed
folder: prefix be if there is not all of cur, new, and tmp? We will
actually index files in tmp if cur or new is not present! What if the
missing sibling directories are added (or existing ones removed) later?
Where's the consistency compared to new.ignore config, which also
matches the cur/new components if so desired? Or consistency with
notmuch search --output=files?

My conclusion was that requiring *all* filesystem folder components
as-is is consistent, most versatile, agnostic to Maildir or Maildir++
implementation details wrt directory naming or hierarchy, without
difficult corner cases, simplest to implement, and unsurprising (once
you understand the cur/new distinction).

For *me* this is the more obvious user interface. And hey, I'm a user
too.

Perhaps we need to have two prefixes, one of which is the literal
filesystem folder and another which hides the implementation details,
like I mentioned in my mail to Peter [1]. But consider this: my proposed
implementation does cover *all* use cases.


BR,
Jani.


[1] id:8761ppurfz.fsf@nikula.org

  parent reply	other threads:[~2014-01-25  9:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-09 22:18 [PATCH 0/5] lib: make folder: prefix literal Jani Nikula
2014-01-09 22:18 ` [PATCH 1/5] " Jani Nikula
2014-01-24 21:18   ` Austin Clements
2014-01-09 22:18 ` [PATCH 2/5] test: fix insert folder: searches Jani Nikula
2014-01-24 21:20   ` Austin Clements
2014-01-25 19:32     ` Rob Browning
2014-01-09 22:18 ` [PATCH 3/5] test: fix test for literal folder: search Jani Nikula
2014-01-09 22:18 ` [PATCH 4/5] test: add test database in format version 1 Jani Nikula
2014-01-09 22:18 ` [PATCH 5/5] test: add database upgrade test from " Jani Nikula
2014-01-24 21:17 ` [PATCH 0/5] lib: make folder: prefix literal Austin Clements
2014-01-24 23:21   ` David Bremner
2014-01-25  9:33   ` Jani Nikula [this message]
2014-01-25 10:47     ` Tomi Ollila
2014-01-25 11:06       ` Jani Nikula
2014-01-25 11:52         ` Tomi Ollila
2014-01-25 15:38     ` Jani Nikula
2014-01-25 16:58       ` David Bremner
2014-01-25 18:22         ` Jani Nikula
     [not found]       ` <874n4rvcvo.fsf@yoom.home.cworth.org>
2014-01-29 19:05         ` Jani Nikula
     [not found]           ` <87k3dir3ci.fsf@yoom.home.cworth.org>
2014-01-29 20:46             ` Austin Clements
     [not found]               ` <87bnyuqw60.fsf@yoom.home.cworth.org>
2014-01-30  6:34                 ` Jani Nikula
2014-01-30 21:15                   ` Mark Walters
2014-01-30 22:02       ` Austin Clements
2014-01-31 19:19         ` Rob Browning
2014-02-04 20:14           ` Austin Clements
2014-02-04 20:17             ` Rob Browning
2014-01-31 19:24         ` Rob Browning
2014-02-01 14:54         ` Jani Nikula
2014-02-04 20:02           ` Austin Clements
2014-02-05 13:12             ` Tomi Ollila
2014-02-05 21:12               ` Tomi Ollila

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r47wfltb.fsf@nikula.org \
    --to=jani@nikula.org \
    --cc=aclements@csail.mit.edu \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).