home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1997 December
/
Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso
/
ietf
/
imap
/
imap-minutes-93aug.txt
< prev
next >
Wrap
Text File
|
1994-02-08
|
36KB
|
996 lines
INTERIM_MEETING_REPORT_
Reported by Terry Gray/University of Washington
Minutes of the Internet Message Access Protocol Working Group (IMAP)
Summary
An interim IMAP Working Group meeting was held at the University of
Washington on August 30 and 31, 1993. Eight people attended.
Twenty-three issues were discussed. A consensus position was reached on
twenty of those issues. No consensus was reached, but some progress was
made on the issues related to namespace semantics and hierarchy support.
A separate message, attempting to summarize this particular issue, will
be forthcoming.
A new Internet-Draft, incorporating the results of this meeting and
several suggestions made via e-mail, will be forthcoming for general
review and comment.
Issue 1: Extensibility of IMAP
A. Envelope headers
B. Body structure changes (e.g. content-disposition, MD5)
o Discussion
- There are some IMAP primitives that do not return as much
information as would now be desirable. For example, it would
be nice if the ENVELOPE structure included RESENT fields.
Moreover, the BODY structure does not return
content-disposition or MD5 information.
- Modifying the existing primitives will break existing IMAP
software; therefore, new functionality often implies a new
primitive.
- There is a difference between defining a protocol extension and
defining a protocol extensibility mechanism. When considering
the need to accommodate protocol evolution, it would be ideal
to define a mechanism that would allow ``old'' clients to
discover new fields and do something useful with them. But
this is not viewed as a realistic expectation because how the
new values would be presented to the client depends upon the
type of data, and fully describing the data type, whether or
not it is parsed or presented literally, etc., can lead to an
overly complex protocol. (In short, a simple name=value
property list is not sufficient.)
- Even if we cannot build a client that will never have to be
updated, (to track protocol evolution), at least we should
strive to minimize the need to change clients and servers at
the same time. We can define new primitives in such a way that
clients receiving *lists* of elements can interoperate with a
new server that will return more elements in the list than the
client understands. That is, the primitive is specified so
that the client will discard list elements beyond those it is
expecting, rather than choke on them.
- In order to accommodate MIME evolution, it is proposed that a
new BODY type be defined along the above lines. It will return
an S expression list including newly defined MIME elements, and
will have new list elements defined over time as needed.
- Doing the same thing for the ENVELOPE data structure was
thought to not be worth the effort because there is now a
primitive to fetch arbitrary groups of header lines---although
they are returned as unparsed strings. ENVELOPE contains
information to aid the client (e.g. by pre-parsing the basic
addresses), but a client can request all or any headers using
other primitives. While this places an additional burden on
the client to be able to parse these other header lines, that
burden is not considered more egregious than the effort to
implement an ENVELOPE2 structure.
o Action
- Define ``BODY2'' which will allow for unanticipated fields.
- Part 0 (zero) in encapsulated messages is defined to mean
header.
- No change re ENVELOPE.
Issue 2: Mstring Grammar
o Discussion
- In RFC 1176, a FIND is defined to return ``* mailbox string''
but C-client actually returns ``* mailbox text-line''
- Change existing implementation to match specification? Define
a new FIND?
o Action
- Table until other FIND issues (i.e. namespace semantics) are
resolved.
Issue 3: BBOARDS are 2nd class citizens (cannot CREATE, APPEND, etc.)
o Discussion
- What do the BBOARDs really do?
* Define a different namespace
+Global, rather than per-user
* Imply Read-Only (of course mailboxes *may* be Read-Only)
o Action
- Action deferred until the namespace semantics discussion. If
that leads to a more general way to specify a namespace, then
the BBOARD construct becomes superfluous.
Issue 4: 8Bit
o Discussion
- Should IMAP have a way to transmit 8 bit characters? Yes, if
the character set is discoverable, but No for the raw 822 text
case.
- Should IMAP allow unencoded binary transfer? No, due to
robustness concerns about mixing binary transfer in an
ascii-oriented protocol. Better to wait on this one,
especially in view of the null problem described below. The
only real downside to encoding before transfer is the cost of
transmitting extra characters due to the encoding overhead.
- Should IMAP allow nulls in strings without Base64 encoding?
No, because so much software is based on the
``null-terminated-string'' model, and tends to break when
presented with a null. But clients should be encouraged to be
``null tolerant'' in any case.
- Should IMAP allow 8bit characters in mailbox and flag names?
No, not yet. Let the dust settle on other efforts to extend
Internet protocols to 8 bit rather than claiming to have the
answer.
o Action
- Revise page 34 to clarify intent per above discussion.
Issue 5: ``Optionals'' in the Specification
o Discussion
- Having ``OPTIONALS'' tends to perpetuate disparity across the
set of IMAP servers. We want to encourage all new servers (and
clients) to fully implement the new specification. Hence make
all the primitives mandatory, but provide information on
backward-compatibility issues. Also avoid using term
``COMPATIBLE'' as this will be an invitation for sub-standard
implementations to claim IMAP2bis compatibility.
- Should primitives such as SUBSCRIBE really be mandatory? Yes,
better to have a degenerate implementation that always returns
``NO'' than to have a truly ``optional forever'' command.
(Note: a full implementation of SUBSCRIBE may also have
occasion to return ``NO''.)
o Action
- Make all IMAP2bis primitives mandatory and create an appendix
documenting backward compatibility issues.
Issue 6: Versioning or Command Discovery
o Discussion
- There are existing clients and servers with different
capabilities. There will be new commands added over time.
Should IMAP have a way to discover what commands exist before
they are executed ``for real''? Yes, but...
- Alternatives
* Version string... deprecated because advertised version may
not really match what is implemented in the software. It is
an assertion of compliance to a certain level, but history
has shown many deviations.
* Discovery command... still some sentiment for this, but not
useful for clients/servers that predate the Discovery
command. (Absence of Discovery command does not mean that
other commands, e.g. CREATE, are missing.)
* Define non-destructive, reversible behavior for all new
primitives, so that a client can test for their existence
before actually using them ``in action.'' Example: CREATE
INBOX should return either BAD or NO, depending on whether
the server is old (does not know anything about CREATE) or
new (wherein that particular operation is an error.)
o Action
- Attempt to define safe ``probe'' operations for CREATE, DELETE,
RENAME, APPEND, etc.
Issue 7: IMAP Command Interruption
o Discussion
- Would be nice, but assumes server will be listening while
sending.
- Hard to do with TCP and Standard I/O-based software.
- Therefore, widespread implementation is unlikely.
o Action
- None.
Issue 8: Returning Size Information So Client Can Present ``Progress
Bars''
o Discussion
- Highly desirable.
- Extremely hard to implement efficiently, to the point that it
is unlikely that a client could depend upon having the
information.
o Action
- Defer until someone proposes a sufficiently efficient solution
to expect widespread implementation.
Issue 9: Preserving flags/date on COPY, setting on APPEND
o Discussion
- Should APPEND provide a way to set flags? Yes.
- Should COPY preserve flags? Yes (if access controls allow).
o Action
- Change COPY definition to include SHOULD preserve flags.
- Change APPEND definition to add *optional* argument for flags.
Issue 10: International error strings
o Discussion
- Should the IMAP specification define a way for the client to
tell the server what language to use for messages? No,
because...
- Internationalization is non-trivial.
- Server needs to be able to generate implementation-specific
messages, in whatever language it chooses.
- Maybe IMSP can tell the server what language the client likes?
- Best we can do is to make it easy for a client to
localize/modify messages from the server if it does not like
the default language... see error codes!
o Action
- None. (See error codes.)
Issue 11: Error codes
o Discussion
- There will always be more error cases than can be specified in
the document.
- It would be nice if major categories were presented so that the
client could easily localize or make program flow decisions
(e.g. TRYCREATE).
- You do not need a numeric code to achieve the above.
o Action
- An effort will be made to identify some common error cases and
define a short descriptor to go at the beginning of all
messages in the category, similar to [PARSE] and [TRYCREATE].
Unlike the rest of the error string, these would become
required constant parts of an error string.
Issue 12: TRYCREATE
o Discussion
- Should TRYCREATE be part of solicited ``NO'' response on COPY
and APPEND? (Right now it is an *unsolicited* NO response) Yes,
because it is providing information tied specifically to the
COPY or APPEND operation.
o Action
- Change specification accordingly.
Issue 13: ISTRING/RFC 1342 SEARCH Argument
o Discussion
- Multiple character set searches are a can of worms.
o Action
- John and Mark to take Peter's suggestions and come up with
revised text.
Issue 14: UID Operations for Disconnected Operation
o Discussion
- Proposed UID operation definitions appear to be satisfactory,
for achieving the disconnected operation goal, but BEFORE does
not add much value...
o Action
- Drop BEFORE operation as superfluous.
Issue 15: UID Uniqueness
o Discussion
- Regarding the desire to have UIDs be globally unique: there is
a conflict between the global uniqueness goal and the goal of
having UIDs within a single mailbox always be ascending.
Global uniqueness is desirable if it allows detecting that a
message saved in different or multiple mailboxes is identical
to the one in the client cache. However, it is not---in
general---possible to take an arbitrary message with a globally
unique ID, and *append* it to a different mailbox while
preserving the ``UIDs must be in ascending order with a
mailbox'' requirement. (We ruled out the possibility of
inserting a message in the middle of a mailbox to preserve UID
ascendancy as this would violate user expectations, especially
for APPEND!)
- Conclude: global uniqueness is desirable, but cannot be
required. (Nor should it be forbidden in the specification.)
o Action
- Define UIDs as unique within a folder, but not necessarily
across folders.
- Note that globally unique UID will conflict with ``UIDs are
always ascending in a mailbox,'' assuming we always append/copy
rather than insert a message in the middle of a mailbox.
Issue 16: RECENT Description
o Discussion
- Current definition is incomplete/inconsistent
o Action
- Make wording changes on page 15 based on Peter's suggestions
(avoid word ``new'' in RECENT defn; specify read-only case).
Issue 17: New SEARCH
o Discussion
- Understood to be needed
- A starting point for a definition:
* Be able to search on Composed DATE
* Be able to search on Received DATE
* Be able to search on MessageID
* Be able to search on general header text
* Not operator
* Deprecate ``UN...'' constructs
* OR operator
* Operator grouping
* If not regular expressions, at least wild cards in strings
* Better international searching
o Action
- Solicit IMAP developers to flesh out a detailed proposal for
new SEARCH.
Issue 18: Mailbox Reorder
o Discussion
- Legitimate reasons to want to (permanently) reorder a mailbox,
but hard to anticipate all possible sort requirements...
- COPY provides a moderately efficient way for client to create a
new mailbox in the order desired by the client.
- For now, best to leave as a client issue.
o Action
- None now; revisit if support for sorted/filtered views is ever
added.
Issue 19: Sorted/Filtered Views
o Discussion
- A goal of some clients is to present to the user (possibly
multiple) message selections (subsets) in an order other than
the natural order of the mailbox.
- A perennial question is how much support should the protocol
and server provide to the client for this type of situation.
- This is (as is often the case) a performance tradeoff.
Client-based sorts, even if based only on header information,
can be quite time-consuming on current desktop hardware.
- A downside of trying to do this on the server is that the
protocol must anticipate all the potentially interesting sort
and selection criteria.
- An open question is whether increasing desktop computer
performance, relative to per-user server performance, will
mitigate the need for server-based processing; however,
server-based search/selection is expected to remain important,
especially when connecting via low-speed lines.
o Action
- Defer for further study.
Issue 20: Message Annotation
o Discussion
- It would be desirable to allow messages to be annotated,
perhaps with keywords, perhaps with additions to the text.
- It has been proposed that it be possible to rewrite a message
in a mailbox (with additional flags or annotations) without
having to delete the original version and append the new
version to the end of the mailbox, as the change of mailbox
order is undesirable. Unfortunately, this approach to
annotation is at odds with disconnected operation, wherein it
is expected that the client cache copy of a message matches the
original. If the content of the original changes, so should
the UID, but then it cannot stay in the same place in the
mailbox without violating the ``UIDs must be in ascending
order'' rule.
- Additional work must be done to explore alternatives for
annotation, whether they be via a ``threads'' model, or
external annotation by reference, or invalidation and
regeneration of UIDs...
o Action
- Defer for further study.
Issue 21: Accessing Definitive Address of Message Originator
o Discussion
- It is desired that client can obtain the SMTP envelope address
most likely to definitively get a reply back to originator.
- Some delivery agents do terrible things to the SMTP envelope
addresses, e.g. when the delivery agent creates a ``From''
address.
- RFC 1123 (Sec 5.2.8) requires the receiver SMTP to make the
``MAIL FROM:'' address of the SMTP envelope available via the
Return-Path header line.
- IMAP specification allows fetching individual header line (e.g.
Return-Path) even though it is not part of the IMAP envelope
structure.
o Action
- None. Current IMAP behavior is sufficient if host adheres to
RFC 1123.
Issue 22: Concern About Lack of Multi-Threading
o Discussion
- A concern was reported having to do with accessing multiple
mailboxes/views at the same time. The concern was that this
might not be possible in IMAP because IMAP does not have
multiple threads on a single connection.
- It is believed that this concern is a misunderstanding. While
an IMAP stream does map to a single TCP connection, it is
acceptable and often desirable to have multiple streams open
concurrently. Existing IMAP clients routinely allow access to
multiple mailboxes concurrently.
o Action
- None needed.
Issue 23: Namespace Semantics and Hierarchy Support
o Discussion
- This one's long... a separate document will be forthcoming.
o Action
- Develop a detailed plan for how a context-free name scheme
could adequately support hierarchy.
- Define hierarchy primitives desired in c-client API.
- Compare/assess tradeoffs between implementing hierarchy in the
client vs. adding protocol support for it.
Summary of Items From 3/93 BOF
o Support for disconnected operation
o Off-line sorting of mailbox
o Background server searching and sorting
o Shared mailbox per-user state (like a .newsrc, but for mailboxes)
o Function to determine where to submit messages
o Storage/retrieval of MUA configuration data
o Minimal non-plaintext authentication
o Minimal confidentiality (XOR with shared secret)
o Test assertion that PEM does not affect IMAP
o Remote printing (from IMAP server's copy of message)
o Improved searching
Summary of Items From 7/93 Working Group Meeting
o Disconnected operation support, a la DMSP, continues to be widely
desired.
o There is considerable interest in using IMAP to access message
archives.
o Several people asked about extensions to support binary message
part access, without Base64 or QP encoding:
- Possible?
- Impact on s-expression model?
- Can unencoded binary attachments be transferred without charset
concerns?
o The question of signalling when large blocks of data are being
transferred:
- Congestion of pipe; need to have multiple channels or
out-of-band signals
o Can we have an IMAP server capabilities command, a la new SMTP?
o Be sure to look at URL/I work before settling on unique message ID
scheme.
o Is IMAP a distribution list alternative: shared but limited access
mailbox?
o Can IMAP ``integrate'' two mailboxes (remote mail archive plus
local subset)?
o Should IMAP become ``Interactive Message Access Protocol''?
Summary of Items From 6/92 CMU-UW Meeting
o Clearly needed IMAP futures:
- Fetch partial text
- Add create, delete, rename folder
- Clarify find folder semantics
- Put/append
- Subscribe/unsubscribe
o Functions needed with multiple IMAP servers:
- Directory service
o Desired, but deferred:
- Search multiple mailboxes on multiple servers
- Put/replace
- Extend IMAP to subsume DMSP (Disconnected operation)
- Add IMAPd driver to access arbitrary files
o Possibilities outside the scope of remote mailbox access:
- Change password
- Get disk usage
- Get disk quota
- Set disk quota
- Change protections on folder
- Message posting facility (Send via other than SMTP?)
o Believed to be upward-compatible changes:
- Disconnected operation
- Internationalization of error strings (add numbers while we're
at it?)
- Internationalization of search strings
- Server generated browser lines?
o Extensions where old functions must be retained for compatibility:
- More powerful search command
- New envelope fetch with additional headers
o Possibly incompatible changes:
- 8-bit operation
- Using unique IDs as fundamental key instead of sequence number
- Rename fetch operations for greater clarity
- Return additional fields after a mail_find(), e.g. count,
unseen count
o Low bandwidth issues (outside the scope of Remote Mailbox
Manipulation):
- Printing messages from server
- Forwarding messages from server
Part 1: Background/Overview
o Goal
Our System (servers, clients, protocol) must support hierarchy and
collections in a consistent way across different clients (and
ideally across different servers as well).
o Approaches
1. Client gets to pick its own hierarchy model, treating server
namespace as ``flat''---that is, it only sends and receives
context-free (?) names, and any notion of hierarchy is ``in
the eye of the client.'' The server must figure out how to
accommodate the client's view if/when it conflicts with
server's natural hierarchy.
2. Server has a natural hierarchy mechanism; client discovers and
exploits the server's natural hierarchy.
3. Protocol defines a lowest-common-denominator hierarchy model
that is believed to be useful for most clients and
implementable on most servers.
Options 1 and 2 are not mutually exclusive. That is, from a protocol
perspective, one can imagine a design that would allow either a client
having its own view of hierarchy, interacting with the server only via
flat (context-free) names, while also allowing other clients to discover
and use the servers' natural hierarchy. However, consistent behavior
across clients remains an important goal.
o Issues
1. Defining scope of name set to be returned by FIND. It is
essential that the client be able to bound the scope of a FIND
search, both on the ``prefix'' and ``suffix'' sides of the
search string. (Note: c-client FIND does not implement the
IMAP specification because it does not follow directories at
the moment. This needs to be fixed for clients implementing
Approach #1, but those implementing Approach #2 will then need
a new mechanism to bound the search to a single directory.)
2. Defining what server will do with ``directory'' names found
within the specified scope. A non-terminal name must be
distinguishable from a terminal name. Alternatives for FIND
include:
(a) Return an attribute for non-terminal names designating them
as such.
(b) Ignore non-terminal names; define new primitive to find
them.
(c) Return non-terminal names with the hierarchy delimiter
included.
(d) Server flattens namespace and traverse directories,
returning only context-free names. (This supports only
approach #1.)
3. There is a distinction between hierarchy created by the user
and hierarchy that is pre-existing (designed by someone other
than the user, as in an anonymous archive or netnews
hierarchy).
4. A mechanism is needed for common name semantics across clients.
We all agree that it's really important that different clients
can see a common view of the same namespace. If namespace
semantics are not an inherent characteristic of the protocol,
nor is there a way to discover it via protocol primitives, then
there must be an external agreement on how to describe
hierarchy, and a mechanism for clients to share hierarchy
definitions. IMSP has been suggested as one way various
clients could access a common hierarchy definition.
5. Clients should not have any built-in knowledge of server file
system semantics. They should be able to discover what they
need to know from the server or from client config information.
6. If the conversation with the client is via context-free names,
a client needs to be able to easily recombine locally
maintained context information, e.g. prefixes, with FIND
responses in order to generate arguments for SELECT and other
primitives.
There was not much support for building a ``lowest common denominator''
model of hierarchy into the protocol, so the discussion centered on
approaches #1 and #2. Number 1, where hierarchy is in the ``eye of the
client'' came to known as the ``flatlander'' view, since names going to
and from the server are always flat (context-free) names. Approach #2,
wherein the client discovers and uses the natural hierarchy of the
server is referred to below as ``server exported hierarchy.'' As you
will see, neither approach is without problems.
Part 2: Summary of the Two Leading Alternatives
o Two models:
- Flatlander
- Server Exported Hierarchy
o Flatlander
- Server flattens any internal hierarchy in FIND. Current
c-client bezerkely behavior is a bug--it needs to recurse down
directories.
- CREATE needs to automatically create any necessary internal
directories. The client does not know the internal structure
of the server and cannot be expected to create internal
directories.
The directory structure may limit the ability to create certain
named objects because of internal hierarchical limitations
(e.g., a unix based server which maps . to / may not allow ..
because // can not be maped to the unix filesystem.) or for
other administrative reasons.
- Need a facility for clients to limit results of FIND results to
substring matches based on hierarchical delimiters.
Proposal: extension to FIND to allow the client to specify a
set of 'stop' characters:
a FIND ALL.MAILBOXES comp.* ./
MAILBOX comp.ai
MAILBOX comp.lang.
MAILBOX comp.baz/
a OK Done
comp.ai is a folder. There are folders which start with
``comp.lang.'' and ``comp.baz/'' but a subsequent FIND is
necessary in order to find out what they are. The
non-terminals can be identified as such by the fact that they
are both longer than the prefix and end with a stop character.
They could alterately be identified by using either a new
unsolicited reply for non-terminals or by IMSP-style
attributes.
- The set of stop characters is a client configuration problem.
A client can start with a ``default'' set (probably ./\) which
is modified by a configuration file or IMSP option. (John
Myers view: Netnews convention will eventually just win)
TEG Comment: The default set of stop characters is a problem.
On a single IMAP server, it is possible to have multiple
hierarchies using different stop characters, e.g. netnews with
a dot, and a Unix filesystem with a slash. There may be cases
where having multiple stop characters makes sense, but I
certainly do not want all the dots in my Unix file names to be
interpreted as hierarchy delimiters. (And the existence of
zillions of files with dots in their names makes me skeptical
of John M's prediction that dot will win out as the one true
hierarchy delimiter.)
o Drawbacks:
- There is no way to create empty non-terminals which persist.
If a folder browser was used to create a ``directory,'' the
client would have to handle that information virtually. If the
user did not subsequently create a mailbox in that directory,
the virtual directory would not persist across sessions.
(Chris Newman proposal: add concept of ``namespace extender,''
which can be manipulated through the protocol. A client could
create the placeholder ``comp.lang.'' which is neither a
folder nor the initial substring of a folder, but shows up as a
non-folder when doing FIND with a (possibly empty) set of stop
characters.)
Counterpoint: in some domains, such as netnews, the concept of
an empty nonterminal does not exist. Either the concept would
have to be hacked on top of the domain or users would see
inconsistent behavior. Is the feature worth the cost?
- An anonymous IMAP server may have a pre-defined hierarchy for
its data with stop characters which are unknown to the client.
One possible solution would be for anonymous IMAP servers to
use one of the ``default'' stop characters for any predefined
hierarchy. Another solution would be for the anonymous IMAP
server to have an IMSP server which advertises the appropriate
stop characters.
(reluctant proposal: Add a wart to the protocol to obtain the
set of separator characters.)
- The ``stop character'' mechanism will view a VMS-style
namespace in an unexpected way.
The namespace can still be used and viewed in a hierarchical
manner.
- Flattening out some namespaces may take an inordinate amount of
resources.
e.g. FIND /* in c-client berkeley driver will thrash server.
This problem exists in other domains (e.g. SEARCH BODY) and is
usually solved with administrative limits on such things as
depth of search, CPU use, or total number of matches.
o Server exported hierarchy:
- Need server determined directory concept MKDIR, RMDIR commands
Drawback: in some domains, such as netnews, the concept of
creating and removing directories does not exist.
- NFIND returns both folders and directories.
Does not recurse down directories.
- Still need flatlander view
Flatlander clients
Folder discovery (FIND *mail* or similar)
Flatlander FIND needs to return directory structure information
- Client needs to know the characteristics of the namespace.
Protocol has to mandate restrictions on the namespace and/or
communicate to the client those characteristics which are not
mandated.
In order to implement a Macintosh-style folder browser or a
hierarchical browser, client needs to obtain fully qualified
name from directory and relative name components. In order to
enter such a browser from a flatlander search or Pine-style
rubber-room path, client also needs to know how to obtain the
sequence of relative names to get to a fully qualified name.
This suggests two commands, JOINPATH and EXPANDPATH.
Drawbacks: Mandated restrictions will prohibit servers from
exporting otherwise useful views. Attempting to describe
characteristics which have insufficient restrictions is overly
complex. This leaves the possibility of a ``convert between
relative and absolute paths'' command.
Examples: In the VMS namespace, the absolute path name:
sys$user:[bovik.foo]bar
converts to the relative name sequence:
sys$user:[000000]
[bovik]
[.foo]
bar
o Drawbacks:
- IMSP server has to know about the characteristics of the
namespaces for its IMAP servers.
o Comments:
- CD/PWD is orthogonal to hierarchy, except in that they provide,
as a side effect, a JOINPATH mechanism. They are not
sufficient to provide a EXPANDPATH mechanism.
Part 3: Elaboration of Hierarchy Support Issues for VMS Namespaces
This comes from a view that the server needs to export its hierarchy to
the client. If restrictions were put on the hierarchy such that
assumptions could be made about the namespace and a namespace like the
VMS filesystem were disallowed this would not be as bad.
The basic problem in the hierarchy view of the world is how to represent
a hierarchical namespace such as VMS. In VMS you have a hierarchy that
looks like:
for the file:
sys$user:[wally.foo.bar]baz.txt;1
the relative hierarchy used by something like a cd command:
(all the devices and logicals which you cannot find with a dir command)
sys$user:[000000]
[wally]
[.foo]
[.bar]
baz.txt;1
And their fully qualified names for discovery:
sys$user:[000000]
sys$user:[wally]
sys$user:[wally]foo.dir;1
sys$user:[wally.foo]bar.dir;1
sys$user:[wally.foo.bar]baz.txt;1
To use this namespace from an FTP client you need to know something
about the namespace. For example, to properly represent a VMS namespace
fetch knows that mail.dir;1 should be shown to the user as [.mail].
In your pine client you want to be able to jump to a ``rubber room'' in
the namespace given a name in a config file. Now if you specified that
you wanted to jump to:
sys$user:[wally.foo.bar]
A macintosh folder browser would want to fill in the bottom parts in the
pop of menu denoting where in the namespace you are in. Fetch cannot do
this, so shows you the places you cd'ed from and then a special ``parent
directory'' marker. It also gets confused frequently, especially if I
cd to the parent directory which is sys$user:[0000000].
Also to continue to support a flat namespace (which we would need very
much), for something like *imap* to work you would need to be able to
return hierarchy information. This would be needed to fill a hierarchy
map of the entire namespace or portion of the namespace.
So, given a name or pattern you need to return typed information of the
name and its hierarchy, and the relative name from the previous level:
find *imap*
sys$user:[000000] sys$user:[000000] (/directory)
sys$user:[wally] [wally] (/directory)
sys$user:[wally.foo] [.foo] (/directory)
sys$user:[wally.foo.bar] [.bar] (/directory)
sys$user:[wally.foo.bar]imap.txt;1 imap.txt (/folder)
This is the hierarchical tree for imap.txt;1. Now this does not explain
it if there are multiple ways of getting there in the tree and probably
is more complicated than it is being explained.