unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Michal Sojka <sojkam1@fel.cvut.cz>
To: Carl Worth <cworth@cworth.org>,
	Sebastian Spaeth <Sebastian@SSpaeth.de>,
	notmuch@notmuchmail.org
Subject: Re: Introducing notmuchsync
Date: Mon, 01 Mar 2010 09:57:26 +0100	[thread overview]
Message-ID: <87ljecmnbd.fsf@steelpick.localdomain> (raw)
In-Reply-To: <87wry2wl7p.fsf@yoom.home.cworth.org>

On Wed, 24 Feb 2010 10:19:06 -0800, Carl Worth <cworth@cworth.org> wrote:
> Elsewhere in the thread Jameson Rollins wrote:
> > I should have mentioned in my previous mail that I think this tool is
> > a great idea, and I plan on using it.  I just hope that all of it's
> > functionality will be integrated directly into notmuch itself.
> 
> I think that's the open question still. How much of this kind of
> functionality do we integrate into notmuch itself. I don't know the
> answer to that question yet, but I'm quite happy to see people
> experimenting with doing scripts like this on top of notmuch already.

Hi, when you are on this topic, I'll put my two cents in. Currently
notmuch works only with mail-store comprised of files. People want to
work with their mails on multiple computers so there are several
ideas/solutions how to achieve that. Notmuchsync, which plays well with
offlineimap, is one of them. Another idea is Git based mail-store, which
I would really like to have.

If we want to make notmuch work with Git-based mail-store, it will be
necessary to make the interface between notmuch core and mail-store
handling code a bit more abstract so that it will be possible to
configure mail-store type to be used.

This abstract mail-store interface will contain methods for the
following operations:
1. read mail identified by a path from mail-store
   (current notmuch uses fread() for this, for git this will be
   something like system("git cat-file ..."))
2. get the list of new mails which need to be indexed
   (current notmuch does recursive file traversal, for git-based store
   it will be something like system("git diff-tree --name-status ...")
3. add/remove tags for a given message (this will be NULL for current
   notmuch functionality)

This way the mail-store will be able to store both mails and
corresponding tags and in case of git, it will be easy to synchronize
mail-stores on multiple computers.

Now, if we have this, it would be very easy to add support for
Maildir-based mail-store. The implementation of the first two methods
would be the same as what is currently in notmuch and the third method
would rename files in mailstore if certain tags (such as unread) are
added or removed. In case of rename, notmuch database would be
immediately updated to reflect the change.

So to summarize, I think there should be an abstract layer for
handling different types of mail-store. I can see at least three
possible implementations of this abstract interface: 1) immutable
mail-store (as currently implemented in notmuch) 2) Maildir-based
mail-store for limited synchronization with other Maildir tools and 
3) git-based mail-store for full synchronization.

I've already started working on this, but I'm still in the state where I
mainly study how notmuch works in order not to break its current
functionality.

I'd like to hear what others think about this idea.

Bye
Michal

  parent reply	other threads:[~2010-03-01  8:57 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-18 15:12 Introducing notmuchsync Sebastian Spaeth
2010-01-18 15:24 ` Sebastian Spaeth
2010-01-18 15:41 ` Michal Sojka
2010-01-18 15:57   ` Sebastian Spaeth
2010-01-19 13:37     ` Sebastian Spaeth
2010-01-19 15:00       ` Marten Veldthuis
2010-01-19 15:24         ` Jameson Rollins
2010-01-19 15:52           ` Sebastian Spaeth
2010-01-19 16:04             ` Jameson Rollins
2010-01-19 16:13               ` Sebastian Spaeth
2010-01-19 16:29               ` Servilio Afre Puentes
2010-01-19 16:38                 ` Jameson Rollins
2010-01-20  8:20               ` Tassilo Horn
2010-01-19 15:42         ` Sebastian Spaeth
2010-01-18 15:48 ` Marten Veldthuis
2010-02-24 18:19 ` Carl Worth
2010-02-24 18:49   ` Jameson Rollins
2010-02-25  9:50     ` Sebastian Spaeth
2010-02-25  9:40   ` Sebastian Spaeth
2010-03-01  8:57   ` Michal Sojka [this message]
2010-03-01 16:27     ` Ben Gamari
2010-03-01 17:18       ` Michal Sojka
2010-03-01 18:43         ` Ben Gamari
2010-03-01 20:20           ` Michal Sojka

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=87ljecmnbd.fsf@steelpick.localdomain \
    --to=sojkam1@fel.cvut.cz \
    --cc=Sebastian@SSpaeth.de \
    --cc=cworth@cworth.org \
    --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).