home *** CD-ROM | disk | FTP | other *** search
-
- 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.
-
-