Subject: Use of \DELETED in c-client

From: Chris Newman <[email-masked]>
Date: Tue, 12 Oct 1993 19:15:25 -0400 (EDT)

The current c-client netnews driver's use of \DELETED is dangerous and
violates the specification.

The specification states:

"The EXPUNGE command permanently removes all messages with the
 \DELETED flag set from the currently selected mailbox."
		and
"\DELETED     Message is "deleted" for removal by later EXPUNGE"

I read this as:
The \DELETED flag does nothing until an EXPUNGE is issued, at which
point the messages must be permanently removed from the mailbox.

The c-client allows \DELETED to be set, and does not permanently
remove the messages from the mailbox when EXPUNGE is issued.  Either
the c-client or the spec needs to be changed (I vote c-client).

To quote John Myers:

"As I've mentioned in a previous message, this is a dangerous model.
 It trains users to type "d" instead of "n" and will cause messages to
 inadvertently disappear when users walk into a mailbox to which they
 have delete access."

That said, my understanding is that Pine users want both a per-session
\SEEN state (what the \SEEN flag is used for in the netnews driver),
and a permanent \SEEN state (what the \DELETED flag is used for).  I'm
curious why just a permanent \SEEN state (using the \SEEN flag)
wouldn't suffice?

		- Chris

---

From: John Gardiner Myers <[email-masked]>
Date: Tue, 12 Oct 1993 19:44:12 -0400 (EDT)

To add another relevant paragraph I sent to the imap list:

"That design is based on the narrow view that mail and news are
 fundamentally different, distinguishable things which users process
 with different methodologies.  CMU considers the two to be two
 extremes of the same sort of object which should be proecessed using
 the same tools and methodologies.  We have both sorts of objects
 intermixed in our system and we have several objects that are neither
 one nor the other."

This observation is backed up by the fact that Pine "knows" the
difference between mail and news and behaves differently depending on
how the macro IS_NEWS evaluates.

-- 
_.John G. Myers		Internet: [email-masked]
			LoseNet:  ...!seismo!ihnp4!wiscvm.wisc.edu!give!up

---

From: Mark Crispin <[email-masked]>
Date: Tue, 12 Oct 1993 16:42:21 -0700 (PDT)

Chris -

     A separate message discusses my contention that the IMAP protocol is not
violated by c-client's usage of the \Deleted flag to mark .newsrc updates.

     Until recently, c-client used the \Seen flag to mark .newsrc updates,
much as you suggested.  This was changed to the \Deleted flag.  Terry will
undoubtably offer a more detailed explanation, but in short the reasoning is
this:

     What we call ``read'' in mail and what we call ``read'' in news are
fundamentally different concepts.  In news, there is the extra semantic that
what has been ``read'' is no longer part of the set of interesting messages
that appears in the user's view by default.  This is done because in some
newsgroups, there may be thousands of messages.

     In traditional newsreaders, reading and view-removal are closely tied
together.  People who use such simple tools as rn read news in a fundamentally
different way from how they read mail.

     In a basic sense, the way that messages in mail are removed from the view
is by the mechanism of deletion and expunge.  Simply reading the messages does
not remove them from the view.

     The change to c-client enables this model of the world.  It is not
necessarily the one I would have picked, but it is an interesting model and it
has received some initial positive responses.

-- Mark --

---

From: Mark Crispin <[email-masked]>
Date: Tue, 12 Oct 1993 16:24:24 -0700 (PDT)

Chris -

     I would like to take this discussion off the IMAP list.  Follow-ups about
whether this c-client behavior is a good idea or a bad idea should be directed
to the c-client list.

     It is my opinion that the behavior of c-client's news driver with
\Deleted does not conflict with the IMAP specification.  This message concerns
that issue only.  A message directed to the c-client list only will address
the reasons why c-client behaves the way it does.

     The news driver only responds to BBOARD class opens.  On the August 30-31
meeting, it was observed that bboards imply a type of read-only access in
which certain operations (CREATE, APPEND) are not meaningful at all.  Certain
other operations are either restricted in effect (STORE), or fundamentally
meaningless (EXPUNGE) and execute as a no-op.

     Because EXPUNGE is a fundamentally meaningless operation on a BBOARD, the
semantics of \Deleted as it applies to EXPUNGE become moot.  \Deleted is
simply a status, nothing more.

     There may need to be some additional clarifying wording in the IMAP
specification:
 . An attempt to EXPUNGE when it is meaningless (as opposed to an error in
   expunging) should be treated as a no-op (respond with OK, not NO).  For
   example, it is meaningless to expunge a read-only mailbox or a bboard.
 . Some additional discussion on what bboards actually mean may be needed in
   the description of the BBOARD command.

-- Mark --

---

From: John Gardiner Myers <[email-masked]>
Date: Wed, 13 Oct 1993 11:28:24 -0400 (EDT)

Mark Crispin <[email-masked]> writes:
>      The news driver only responds to BBOARD class opens.

The news driver also responds to SELECT class opens where the first
character of the mailbox name is '*'.  Pine knows about this and will
switch into "news mode" if the first character of a normal-namespace
mailbox is '*'.

> newsgroups, there may be thousands of messages.

This is the view that "because we currently use different tools for
mail and news, they are fundamentally different concepts."  At CMU, we
have had great success in removing these blinders.

Newsgroups do not have a monopoly on "thousands of messages".  For
instance, my primary mailbox has 3873 messages at the moment.  There
are also "shared mailboxes" with thousands of messages.

What we call "read" in mail and what we call "read" in news are the
same concept.  They are both per-user, per-message bits which
automatically change state when the user views a message.  The user
usually also has a separate ability to change state from "read" to
"unread" or "unread" to "read".

There are two useful modes for reading messages.  One is the "read new
messages" mode where you are only interested in new messages and wish
to have a view which is restricted to new messages.  Another is a
"browse" mode, where you want to see all messages.

Traditional newsreaders such as rn tend to only support the first
mode.  It is particularly painful to try to browse an already-read
newsgroup with rn--you either slog through message-by-message or you
have to mark everything as unread and start over.

Traditional mail readers tended to only support "browse" mode because
there was only one mailbox that ever got new messages.  When you start
getting multiple inboxes and shared mailboxes, the "read new messages"
mode becomes necessary for dealing with mail.

>      The change to c-client enables this model of the world.  It is
> not necessarily the one I would have picked, but it is an
> interesting model and it has received some initial positive
> responses.

The change to c-client was not necessary for this model of the world.
Clients can switch into a mode where \Seen messages are removed from
the user's view without the help of the server.

What the change does is require this model of the world.  Either the
client or the user has to know that the server is in "news mode" and
change their behavior appropriately.  As we've mentioned before, it is
extremely dangerous to require the user to change their behavior.

The change also provides a strong disincentive for clients to be able
to provide the "read new messages" mode for mail, since they would
have to do it differently than they do for news.

Having clients know as much detail about the peculiarities of the
c-client imapd as Pine does is going to lead to serious interoperation
problems.