unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: David Bremner <david@tethera.net>, notmuch@notmuchmail.org
Subject: Re: [RFC2 Patch 5/5] lib: iterator API for message properties
Date: Tue, 31 May 2016 21:52:06 -0400	[thread overview]
Message-ID: <87pos1u14p.fsf@alice.fifthhorseman.net> (raw)
In-Reply-To: <8760tthfuy.fsf@zancas.localnet>

On Tue 2016-05-31 21:12:21 -0400, David Bremner <david@tethera.net> wrote:
> I was thinking a bit about how to dump/restore these.
>
> The most upwardly compatible way that i thought of is something like
>
> #= msg-id key=val key=val
>
> i.e. duplicate the msg-id for messages with properties
>
> This would be ignored by old notmuch-restore.
>
> Otherwise, maybe something like
>
> msg-id -- +tag +tag # key=val key=val
>
> I'm not sure. this might crash old notmuch-restore.
>
> How important is backward compatibility, and how important is minimizing
> dump size? It's a bit hard to predict the things people might use
> message properties for, but for thread surgery, I would expect a small
> number of messages with properties.

The other concern is our conception of how properties are unset/removed,
right?

With tags, it's possible to include -blah to remove the tag "blah".  how
do we remove/clear/overwrite these tags?  what about using +key=val or
-key=val to set/unset certain key/value combinations, and a value-less
key= to remove all values matching a given key?

alternately:

 key=val (clears all values for "key", and sets a new value "val")
 key+=val (appends a value "val" for "key")
 key-=val (removes any "key" set to "val")
 key= (clears all values for "key"

---------

However we resolve this particular decision, it'd be nice to have a
stable, sane story about backward compatibility going forward, so that
we don't have to worry about it in the future.

For example, each dump file could start with a line like:

  #version 1

and notmuch restore would assume that without "#version n" as the first
line, it's version 0.  then notmuch restore could decline to parse dump
files of a version that it doesn't know about.

Alternately, we could have the first line be something like:

   #features config properties

and if the first line is not #features, then we assume that no features
are in place -- but if restore sees features it doesn't know about, it
can offer to proceed while warning the user that we might miss something
(or that something might break).


Thanks for working on this, David!  I think this is going to be really
useful!

    --dkg

  reply	other threads:[~2016-06-01  1:58 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-22 14:28 RFC: message property API David Bremner
2016-05-22 14:28 ` [RFC patch 1/2] lib: refactor _notmuch_message_has_term David Bremner
2016-05-22 14:28 ` [RFC patch 2/2] RFC message-property API David Bremner
2016-05-30 11:49 ` message properties, round 2 David Bremner
2016-05-30 11:49   ` [RFC2 Patch 1/5] lib: read "property" terms from messages David Bremner
2016-05-30 11:49   ` [RFC2 Patch 2/5] lib: private string map (associative array) API David Bremner
2016-05-30 11:49   ` [RFC2 Patch 3/5] lib: basic message-property API David Bremner
2016-05-30 11:49   ` [RFC2 Patch 4/5] lib: extend private string map API with iterators David Bremner
2016-05-30 11:49   ` [RFC2 Patch 5/5] lib: iterator API for message properties David Bremner
2016-06-01  1:12     ` David Bremner
2016-06-01  1:52       ` Daniel Kahn Gillmor [this message]
2016-06-01  5:04         ` Tomi Ollila
2016-06-01 10:04         ` David Bremner
2016-06-01 14:13         ` Daniel Kahn Gillmor
2016-06-01 23:29           ` David Bremner
2016-06-02 17:33             ` Daniel Kahn Gillmor
2016-06-03 12:54               ` David Bremner
2016-06-03 14:38                 ` Daniel Kahn Gillmor
2016-06-03 23:12                   ` David Bremner
2016-06-04 16:23                     ` Daniel Kahn Gillmor
2016-06-05 10:24                   ` [PATCH] doc: document notmuch-dump header line David Bremner
2016-06-05 22:23                     ` David Bremner
2016-06-06  6:38                       ` Tomi Ollila
2016-06-07 10:55                       ` David Bremner
2016-06-01  4:38       ` [RFC2 Patch 5/5] lib: iterator API for message properties 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=87pos1u14p.fsf@alice.fifthhorseman.net \
    --to=dkg@fifthhorseman.net \
    --cc=david@tethera.net \
    --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).