Gnus development mailing list
 help / color / mirror / Atom feed
From: Julien Danjou <julien@danjou.info>
To: Ted Zlatanov <tzz@lifelogs.com>
Cc: ding@gnus.org
Subject: Re: gnus-sync ideas
Date: Thu, 16 Dec 2010 11:06:04 +0100	[thread overview]
Message-ID: <sa3pqt258xf.fsf@cigue.easter-eggs.fr> (raw)
In-Reply-To: <87r5djxahm.fsf_-_@lifelogs.com> (Ted Zlatanov's message of "Wed, 15 Dec 2010 10:32:37 -0600")

[-- Attachment #1: Type: text/plain, Size: 4426 bytes --]

On Wed, Dec 15 2010, Ted Zlatanov wrote:

> OK, let's throw some gnus-sync specific ideas around.  Assume the
> current implementation is just a prototype and can be entirely thrown
> away.  Also assume I will work on this soon-ish but am happy to let
> others contribute up to 100%.  Finally, let's say one of the goals is to
> eliminate newsrc.eld and other Gnus config files entirely or at least
> make them a gnus-sync storage backend.

So far, so good. But I know nothing about current implementation.

> First of all, how should it operate in Gnus?  IMO it should be immediate
> and not triggered as it is now; a sync should happen every time you
> enter or exit a group (and can also be triggered explicitly).  Here we
> can use the hooks I added recently: `gnus-after-set-mark-hook' and
> `gnus-before-update-mark-hook'.

Fair enough.

> Second, how should the data be stored?  IMO it should be stored in a
> free-form key-value format but the storage backend should be able to
> understand the rtree format; the ELisp list, vector, and plist formats;
> and maybe JSON and merge such data (with parameters that control how the
> merge will happen).  I think a custom network server would actually be
> the best storage backend solution here; imap-hash.el could also work
> with some love; the file storage backend is also sensible to duplicate
> the current newsrc.eld functionality; and, of course, people will come
> up with a Git-based and RDBMS-based storage backend Because They Can.

Thanks, I use git, so storing it inside git would be good for me, and
probably the simplest way. :)

> Third, what data are we storing?  I think marks should only be synced
> for news-p backends.  But we should generally be able to save, in order
> of importance IMHO:
>
> - marks for news-p servers (medium difficulty)

That's the only thing that really matters IHMO.

> - splitting rules (trivial but needs a view/edit interface)

I do not see why it's not a configuration (elisp) thing.

> - BBDB (hard but very important, and useful beyond Gnus)

I do not see the point.

> - topic hierarchy (medium)

I do not see why it's not a configuration (elisp) thing either.

> - subscriptions (but the user can pick subsets as the "work" and "home"
>   setup for instance) (hard)

Replace "level" by tags? But once again, that is a configuration stuff.
That should just be a Lisp list in a .gnus you just C-M-x to update.

> - the Gnus registry (medium)

Why not.

> So because this is such diverse data I think the storage backend should
> just be a key-value store.  The rtree/ELisp data merge support is really
> the only thing special about it.  And maybe it's not a Gnus-specific
> thing but could be useful for Emacs in general, in which case it should
> be called data-sync.el and the Gnus glue is gnus-sync.el.  I'm sure the
> org-mode users, for instance, would like this kind of functionality too,
> and maybe they already have it and we can just steal it :)

You're mixing 2 problems IMHO. You want to do data synchronization above
several places, and export Gnus state data so they can be reused easily
with other Gnus instances.

I think the latter is a problem you can solve, but trying to resolve the
data synchronization is not an Emacs problem. I do not want Emacs to
mess with my storage strategy nor I want you to make some cloud storage.
I mean: that's not the point.

I store my Emacs configuration in my home, in a git repository. That's
my choice. I could also store my home on a webdav exported storage, NFS,
or whatever. That's my cloud, my business. Do not try to provide
something else: I do not want you to, nor I'd like an Emacs specific
solution.

OTOH, I'd like to be able to reuse data synchronization from backends
that can store some information, like nntp (or nnrss, or anything else),
and move away things that have nothing to do in here, like for example
subscriptions or subscriptions levels. If I want to split things for
work and home, I can write it easily in Lisp.

If you want the users to change subscriptions or their levels, there is
a common interface called `cuztomize' which I think is done just for
that, and can dump Lisp code in your configuration file.

Let me write Lisp!

(Sorry if the end of the mail is a little off-topic.)

-- 
Julien Danjou
❱ http://julien.danjou.info

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

  parent reply	other threads:[~2010-12-16 10:06 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-13 17:57 Separating marks from other group configuration Lars Magne Ingebrigtsen
2010-12-13 18:49 ` Steinar Bang
2010-12-13 19:14   ` Lars Magne Ingebrigtsen
2010-12-15 16:32   ` gnus-sync ideas (was: Separating marks from other group configuration) Ted Zlatanov
2010-12-15 19:18     ` gnus-sync ideas Lars Magne Ingebrigtsen
2010-12-15 21:26       ` Ted Zlatanov
2010-12-16 16:08         ` Lars Magne Ingebrigtsen
2010-12-16 17:19           ` Ted Zlatanov
2010-12-16 10:06     ` Julien Danjou [this message]
2010-12-16 16:33       ` Ted Zlatanov
2010-12-16 18:08         ` Steinar Bang
2010-12-17 15:55       ` Philipp Haselwarter
2010-12-17 16:12         ` Lars Magne Ingebrigtsen
2010-12-17 22:19           ` Steinar Bang
2010-12-18 13:45     ` Ted Zlatanov
2010-12-19 20:08     ` Steinar Bang
2010-12-27 15:22       ` Ted Zlatanov
2010-12-29 22:07         ` Steinar Bang
2010-12-14 10:02 ` Separating marks from other group configuration Julien Danjou
2010-12-14 12:04   ` Steinar Bang
2010-12-14 14:45   ` Philipp Haselwarter
2010-12-15 19:47     ` Lars Magne Ingebrigtsen
2010-12-15 20:29       ` Philipp Haselwarter
2010-12-15 20:32         ` Lars Magne Ingebrigtsen
2010-12-15 19:45   ` Lars Magne Ingebrigtsen
2010-12-15 20:38     ` Steinar Bang
2010-12-15 20:42       ` Lars Magne Ingebrigtsen
2010-12-16 10:12         ` Julien Danjou
2010-12-16 15:50           ` Lars Magne Ingebrigtsen
2010-12-16 16:17             ` Julien Danjou
2010-12-16 16:20               ` Lars Magne Ingebrigtsen
2010-12-16 16:27                 ` Julien Danjou
2010-12-16 16:33                   ` Lars Magne Ingebrigtsen
2010-12-16 16:49                     ` Julien Danjou
2010-12-16 16:18             ` Ted Zlatanov

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

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

  git send-email \
    --in-reply-to=sa3pqt258xf.fsf@cigue.easter-eggs.fr \
    --to=julien@danjou.info \
    --cc=ding@gnus.org \
    --cc=tzz@lifelogs.com \
    /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.
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 NNTP newsgroup(s).