Gnus development mailing list
 help / color / mirror / Atom feed
From: kai.grossjohann@uni-duisburg.de (Kai Großjohann)
Subject: Re: nnimap usage model
Date: Mon, 17 Feb 2003 17:23:12 +0100	[thread overview]
Message-ID: <84n0ku7u6n.fsf@lucy.is.informatik.uni-duisburg.de> (raw)
In-Reply-To: <uk7fzrf4q.fsf@xpediantsolutions.com>

Kevin Greiner <kgreiner@xpediantsolutions.com> writes:

> It's true so how does gnus-agent-cache differ from gnus-agent? hmmm,
> see following...
>
> When I search the code, I find that gnus-agent-cache always appears in
> an AND expression, "(and gnus-agent gnus-agent-cache ...", that also
> requires that gnus-agent be set.  The specific functions, as you
> implied, where it is found are:
>
> gnus-request-article-this-buffer
> gnus-retrieve-headers
> gnus-request-head
> gnus-request-body
> gnus-request-expire-articles
> gnus-request-move-article
>
> Checking further, the function gnus-agent-retrieve-headers is the only
> function to bind gnus-agent-cache to nil.  This explains why the
> original definition was somewhat accurate.  It also points out that
> most of the functions checking gnus-agent-cache
> (i.e. gnus-request-article-this-buffer, gnus-request-body,
> gnus-request-expire-articles, and gnus-request-move-articles) should
> NOT do so.  The only function called while gnus-agent-cache is bound
> to nil is gnus-retrieve-headers.  That function performs an AND of
> gnus-agent and gnus-agent-cache so binding either to nil would have
> the same result.
>
> I'd say that the proper thing to do is to replace gnus-agent-cache
> with gnus-agent in gnus-agent-retrieve-headers (i.e. bind gnus-agent
> to nil) then delete gnus-agent-cache at all other references.
>
> If you really want to implement the original definition, then we'd
> need to make several changes.  For headers, it would look something
> like this: 
> The function gnus-retrieve-headers would, if gnus-agent is
> set, call gnus-agent-retrieve-headers which would, if gnus-agent-cache
> is set or gnus-plugged is nil, use the local cache.  Otherwise,
> gnus-agent-retrieve-headers would use the backend to retrieve the
> headers then store them in the local cache.
>
> As I see it, the only advantage to having gnus-agent-cache is to
> handle the case in which the article keeps changing on the server.
> Does that actually happen with any of the backends?

Now I'm more confused than before.

Often, gnus-agent and gnus-agent-cache are mentioned together.  There
is one spot that you have identified where gnus-agent-cache is
mentioned without gnus-agent.

There are also just a couple of spots where gnus-agent is mentioned
without gnus-agent-cache: (1) On sending a message, the Gcc processing
is different depending on gnus-agent.  (2) gnus-get-unread-articles
tells the agent to save the active file, if gnus-agent is non-nil.
(3) gnus-active-to-gnus-format does the same.

Hm.  Oh, I forgot to search for "gnus-agent$".  That finds more
spots.  (1) gnus-group-get-new-news-this-group tells the agent to
save the group info.  (2) gnus-get-function calls gnus-agent
functions instead of nnchoke functions.  (3) gnus-open-server does
stuff.  ...  And other stuff.

So, to summarize:

* Turning on gnus-agent enables a lot of special behavior, even if
  gnus-agent-cache is off.

* Turning on both gnus-agent and gnus-agent-cache enables more
  special behavior.

* Turning on gnus-agent-cache enables 1 piece of strange
  functionality, even if gnus-agent is off.  This is arguably a bug.
  Hm.  Hmmm...  No, the let-binding that you're talking about is
  something else entirely.

I think what we want is this:

* If gnus-agent is off, then the value of gnus-agent-cache doesn't
  matter.

* If gnus-agent is on, then it's possible to also turn on
  gnus-agent-cache to enable more special behavior.


It seems there is a misunderstanding.  I'm looking at things from the
user's perspective.  For this case, I think the questions we need to
answer are the following:

(1) Under which circumstances does the agent write data to the local
    disk?  Which data does it write?

(2) Under which circumstances does the agent read data from the local
    disk?  Which data does it read?

Then we can formulate some documentation that helps the user.

Another issue is whether the current Gnus behavior is correct or
should it be changed.
-- 
A turnip curses Elvis



  reply	other threads:[~2003-02-17 16:23 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-10 22:16 David Abrahams
2003-02-11  7:08 ` Kai Großjohann
2003-02-11 16:51   ` David Abrahams
2003-02-11 18:39     ` Kai Großjohann
2003-02-11 20:05       ` David Abrahams
2003-02-11  8:25 ` Niklas Morberg
2003-02-11 16:36   ` Kai Großjohann
2003-02-11 16:55   ` David Abrahams
2003-02-11 18:17     ` Kevin Greiner
2003-02-11 20:03       ` David Abrahams
2003-02-12  2:45         ` David Abrahams
2003-02-12  5:16           ` Kevin Greiner
2003-02-15 11:10             ` David Abrahams
2003-02-15 15:56               ` Kevin Greiner
2003-02-16 14:32                 ` David Abrahams
2003-02-16 18:41                   ` Kevin Greiner
2003-02-16 20:51                     ` Kai Großjohann
2003-02-16 23:15                       ` Kevin Greiner
2003-02-17 16:23                         ` Kai Großjohann [this message]
2003-02-18 14:22                           ` Kevin Greiner
2003-02-19 11:04                             ` Kai Großjohann
2003-02-19 12:11                               ` Simon Josefsson
2003-02-21  8:00                                 ` Kevin Greiner
2003-02-25  4:08                                   ` gnus-agent-cache is broken Kevin Greiner
2003-03-05  3:52                                     ` FIXED: gnus-agent-cache Kevin Greiner
2003-02-17  8:34                       ` nnimap usage model Andreas Fuchs
2003-02-17 16:40                         ` Kai Großjohann
2003-02-17 19:06                           ` Andreas Fuchs
2003-02-15 17:58               ` Kai Großjohann
2003-02-16 14:35                 ` David Abrahams
2003-02-16 15:41                   ` Kai Großjohann
2003-02-20 16:19                     ` David Abrahams
2003-02-20 17:33                       ` Kai Großjohann

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=84n0ku7u6n.fsf@lucy.is.informatik.uni-duisburg.de \
    --to=kai.grossjohann@uni-duisburg.de \
    /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).