Gnus development mailing list
 help / color / mirror / Atom feed
From: Kevin Greiner <kgreiner@xpediantsolutions.com>
Subject: Re: nnimap usage model
Date: Tue, 18 Feb 2003 08:22:55 -0600	[thread overview]
Message-ID: <uwujxhdmo.fsf@xpediantsolutions.com> (raw)
In-Reply-To: <84n0ku7u6n.fsf@lucy.is.informatik.uni-duisburg.de>

kai.grossjohann@uni-duisburg.de (Kai Großjohann) writes:

> 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.

I don't see these as being separate issues.  If the current
implementation is broken, and no one has noticed, then the feature
must not be in wide spread use.  If it isn't used, do we document how
we think it should work (then fix the implementation) or do we remove
the feature from the documentation?  On the other hand, if the current
implementation is working, how can we document it correctly if we
can't agree on what it is doing?

Kevin



  reply	other threads:[~2003-02-18 14:22 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
2003-02-18 14:22                           ` Kevin Greiner [this message]
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=uwujxhdmo.fsf@xpediantsolutions.com \
    --to=kgreiner@xpediantsolutions.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).