<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.25 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="trust200902" docName="draft-seantek-kerwin-arcmedia-type-01" category="info" updates="[2045, 6838]">

  <front>
    <title abbrev="arcmedia">The Archive Top-Level Media Type for File Archives</title>

    <author initials="S." surname="Leonard" fullname="Sean Leonard">
      <organization>Penango, Inc.</organization>
      <address>
        <postal>
          <street>5900 Wilshire Boulevard</street> <street>21st Floor</street>
          <city>Los Angeles</city>
          <region>CA</region>
          <code>90036</code>
          <country>USA</country>
        </postal>
        <email>dev+ietf@seantek.com</email>
        <uri>http://www.penango.com/</uri>
      </address>
    </author>
    <author initials="M." surname="Kerwin" fullname="Matthew Kerwin">
      <organization></organization>
      <address>
        <email>matthew@kerwin.net.au</email>
        <uri>http://matthew.kerwin.net.au/</uri>
      </address>
    </author>

    <date year="2015"/>

    <area>General</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a new top-level media type to be known as
“archive”, which defines a fundamental type of media with unique
presentational, hardware, and processing aspects.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The purpose of this memo is to update <xref target="RFC2045"/> and <xref target="RFC6838"/> to
include a new top-level media type to be known as “archive”.
<xref target="RFC6838"/> describes mechanisms for specifying and describing the
format of Internet Message Bodies via media type/subtype pairs.
“archive” defines a fundamental type of media with unique
presentational, hardware, and processing aspects.  Various subtypes
of this top-level type are immediately anticipated, and will be covered
under separate documents.</t>

<section anchor="notational-conventions" title="Notational Conventions">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this
document are to be interpreted as described in <xref target="RFC2119"/>.</t>

</section>
</section>
<section anchor="definition" title="Definition of an archive">

<t>The archive top-level media type identifies a container of one or
more data objects and metadata about them.  Archives are used to
collect multiple data objects together into a single object for easier
portability and storage.  Archive formats can provide many optional
services, including:</t>

<t><list style="numbers">
  <t>compression</t>
  <t>encryption</t>
  <t>authentication</t>
  <t>backup and restoration</t>
  <t>filesystem imaging</t>
  <t>software packaging and distribution</t>
  <t>volume-splitting (archive split into multiple objects)</t>
  <t>block storage</t>
</list></t>

<t>Formats and techniques that support one or more of these services
already exist under separate registrations.  For example, the
Content-Encoding header can be used to signal compressed Internet
message content.

The distinguishing feature of the archive top-level type is that these
services are integrated into the format itself, along with the
inclusion of object-specific metadata.</t>

<t>Formats contemplated under this top-level type are designed to
concatenate multiple objects into a single data stream, along with
names and other metadata.  When an Internet-facing application handles
content labeled with this type, it SHOULD treat the archive as a
discrete data item.  For example, an Internet mail user agent might
display an archive-labeled type with an archive icon, possibly with a
preview of the objects contained therein, as opposed to automatically
extracting its contents.</t>

</section>
<section anchor="encoding" title="Encoding and Transport">

<t>Unrecognized subtypes of archive SHOULD be treated as “archive/file”.
Like “application/octet-stream”, the purpose of the “archive/file” type
is to provide default handling;  it does not represent a particular
archive format.  Implementations SHOULD defer handling of unrecognized
subtypes of archive to a robust general-purpose archive processing
application, if such an application is available.</t>

<t>If default archive handling is not supported, the archive MAY be
treated as if it were “application/octet-stream”.</t>

<t>Unless noted in the subtype registration, subtypes of archive MUST
be assumed to contain binary data, implying the use of base64 content
encoding for email and binary transfer for ftp and http.</t>

</section>
<section anchor="template" title="Registration Template">

<t>The formal syntax for the subtypes of the archive top-level type SHOULD
look like this:</t>

<t><list style='empty'>
  <t><list style="hanging">
    <t hangText='Type name:'><vspace blankLines='0'/>
    archive</t>
    <t hangText='Subtype name:'><vspace blankLines='0'/>
    xxxxxxxx</t>
    <t hangText='Required parameters:'><vspace blankLines='0'/>
    none</t>
    <t hangText='Optional parameters:'><vspace blankLines='0'/>
    TBD</t>
    <t hangText='Encoding considerations:'><vspace blankLines='0'/>
    base64 encoding is recommended when transmitting archive/* documents
 through MIME electronic mail.</t>
    <t hangText='Security considerations:'><vspace blankLines='0'/>
    see <xref target="security"/> below</t>
    <t hangText='Published specification:'><vspace blankLines='0'/>
    TBD</t>
    <t hangText='Applications that use this media type:'><vspace blankLines='0'/>
    TBD</t>
    <t hangText='Fragment identifier considerations:'><vspace blankLines='0'/>
    The considerations of this document, plus any extra syntaxes
 not inconsistent with this document.</t>
    <t hangText='Additional information:'><vspace blankLines='0'/>
            <list style="hanging">
          <t hangText='Deprecated alias names for this type:'>
          (Include non-archive alias names, such as those in application.)</t>
        </list>
    </t>
    <t>Magic number(s): TBD</t>
    <t>File extension(s): TBD</t>
    <t>Macintosh file type code(s): TBD</t>
  </list></t>

  <t>See <xref target="subtypes"/> for references to some of the expected subtypes.</t>

  <t><list style="hanging">
    <t hangText='Person and email address to contact for further information:'><vspace blankLines='0'/>
    TBD</t>
    <t hangText='Intended usage:'><vspace blankLines='0'/>
    TBD (COMMON will be the most common)</t>
    <t hangText='Restrictions on usage:'><vspace blankLines='0'/>
    TBD</t>
    <t hangText='Author:'><vspace blankLines='0'/>
    TBD</t>
    <t hangText='Change controller:'><vspace blankLines='0'/>
    TBD</t>
    <t hangText='Provisional registration? (standards tree only):'><vspace blankLines='0'/>
    (Yes/No)</t>
  </list></t>

  <t>(Any other information that the author deems interesting may be
added below this line.)</t>
</list></t>

<t>The optional parameters consist of starting conditions and variable
values used as part of the subtypes.</t>

</section>
<section anchor="parameters" title="Common Required and Optional Parameters">

<t>Archive formats usually include parameteric meta-data within the
format.  Consequently, subtypes of archive SHOULD NOT specify
the same information as parameters to the type.</t>

<t>Some archive formats are very old, or are designed to be
backwards-compatible with older formats, and as such might not have
been designed with transport across the Internet in mind.  For example,
modern versions of the ZIP file format <xref target="ZIP"/> include support for the
Universal Character Set <xref target="ISO10646"/>, however the default encoding of
filenames within a ZIP archive has always been Code Page 437 <xref target="CP437"/>.
Due to the historical nature of archives, and to support
interoperability with older implementations, sometimes it is preferable
to communicate the archive as-is, rather than updating it to a more
modern or universal format.
</t>

<t>Implementations that are archive-type aware MUST support the
following parameters for maximum compatibility.  At the same time, new
archive types SHOULD NOT rely on these parameters for disambiguation;
new archive types SHOULD be designed in such a way that “universal”
interoperability is achieved using information contained within the
archive format itself.</t>

<t>[[TODO: write this list]]</t>

<t><list style="symbols">
  <t>Code Page – like charset but only applies to certain strings
in the archive, when the archive format is ambiguous.  Do not
attempt to apply this parameter as one would apply charset to text/*</t>
  <t>Endianness?</t>
  <t>Time/Y2K representation issues?</t>
  <t>Anything else?</t>
</list></t>

</section>
<section anchor="splitarchives" title="Split Archives">

<t>Several archive formats (notably RAR and ZIP) support split archives.
A “split archive” can be stored in multiple files, or more generally,
across multiple storage media.</t>

<t>For example, the ZIP format supports two types of splits: “split
archive” and “spanned archive”.  A “split archive” is a standard ZIP
archive split over multiple files using file extensions .z01, .z02,
etc.; the final file in the sequence uses the .zip file extension.
The “spanned archive” was designed for use on floppy disks with
restrictive space limitations;  all archive files have the same
filename, and volume labels (presumably on floppy disks) are used to
store sequence information.  Neither sub-format is merely a naive
division of the octet stream: each ZIP file is parseable in its own
right, and contains its own offset values.</t>

<t>The TAR format (or family of formats, including cpio and ustar) was
originally designed for streaming to and from tape devices, so
splitting is accomplished differently.</t>

<t>[[TODO: Consider how to label this content. archive/zip^01?
archive/zip; split=01? Something else? How shall 01 be associated
with 02, 03, etc., when the Content-Disposition: ; filename=””
parameter is “presentation-information” and may be separated from the
Content-Type header information?]]</t>


</section>
<section anchor="fragments" title="Fragment Identifier Syntax">

<t>As archives usually store objects in hierarchical structures similar to
filesystems, archives can serve as virtual filesystems.  Respondents
have noted that the objects stored in an archive can be addressed by a
fragment syntax that resembles a filesystem path.  At the same time,
archives can store objects in different ways (along with different
types of metadata), suggesting that a common baseline with flexible
extension points is more appropriate than a fixed universal syntax.
[[TODO: This will be explored in future drafts.  Note the
similarities with this and the file: URI…]]</t>

<t>[[TODO: consider how to provide a fragment for content in the
archive. NB: most archives do NOT provide Content-Type/media type
information! So /foo.html being an HTML file is just an <spanx style="emph">assumption</spanx>,
and possibly a very wrong one at that. There is no IETF registry for
file extensions.]]</t>

</section>
<section anchor="piped-composite-type-suffix-syntax" title="Piped-Composite Type Suffix Syntax">

<t>[[TODO: discuss tar piped through bzip2, gzip, etc. as a distinct
file format, rather than an application of the Content-Encoding:
header. Suggest common suffix like archive/tar|bzip2, where | is some
useful character but not + since + is for structured syntaxes.]]</t>

</section>
<section anchor="security" title="Security Considerations">

<t>Archives can store files, file metadata, and even entire filesystems; thus,
security issues loom large because archives can contain just about
anything. These concerns are magnified by the arbitrary transport of
such data across the Internet. [[TODO: complete.]]</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor='RFC2045'>

<front>
<title abbrev='Internet Message Bodies'>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</title>
<author initials='N.' surname='Freed' fullname='Ned Freed'>
<organization>Innosoft International, Inc.</organization>
<address>
<postal>
<street>1050 East Garvey Avenue South</street>
<city>West Covina</city>
<region>CA</region>
<code>91790</code>
<country>US</country></postal>
<phone>+1 818 919 3600</phone>
<facsimile>+1 818 919 3614</facsimile>
<email>ned@innosoft.com</email></address></author>
<author initials='N.S.' surname='Borenstein' fullname='Nathaniel S. Borenstein'>
<organization>First Virtual Holdings</organization>
<address>
<postal>
<street>25 Washington Avenue</street>
<city>Morristown</city>
<region>NJ</region>
<code>07960</code>
<country>US</country></postal>
<phone>+1 201 540 8967</phone>
<facsimile>+1 201 993 3032</facsimile>
<email>nsb@nsb.fv.com</email></address></author>
<date year='1996' month='November' />
<abstract>
<t>STD 11, RFC 822, defines a message representation protocol specifying considerable detail about US-ASCII message headers, and leaves the message content, or message body, as flat US-ASCII text.  This set of documents, collectively called the Multipurpose Internet Mail Extensions, or MIME, redefines the format of messages to allow for</t>
<t>(1)   textual message bodies in character sets other than US-ASCII,</t>
<t>(2)   an extensible set of different formats for non-textual message bodies,</t>
<t>(3)   multi-part message bodies, and</t>
<t>(4)   textual header information in character sets other than US-ASCII.</t>
<t>These documents are based on earlier work documented in RFC 934, STD 11, and RFC 1049, but extends and revises them.  Because RFC 822 said so little about message bodies, these documents are largely orthogonal to (rather than a revision of) RFC 822.</t>
<t>This initial document specifies the various headers used to describe the structure of MIME messages. The second document, RFC 2046, defines the general structure of the MIME media typing system and defines an initial set of media types. The third document, RFC 2047, describes extensions to RFC 822 to allow non-US-ASCII text data in Internet mail header fields. The fourth document, RFC 2048, specifies various IANA registration procedures for MIME-related facilities. The fifth and final document, RFC 2049, describes MIME conformance
  criteria as well as providing some illustrative examples of MIME message formats, acknowledgements, and the bibliography.</t>
<t>These documents are revisions of RFCs 1521, 1522, and 1590, which themselves were revisions of RFCs 1341 and 1342.  An appendix in RFC 2049 describes differences and changes from previous versions.</t></abstract></front>

<seriesInfo name='RFC' value='2045' />
<format type='TXT' octets='72932' target='http://www.rfc-editor.org/rfc/rfc2045.txt' />
</reference>



<reference anchor='RFC2119'>

<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year='1997' month='March' />
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='TXT' octets='4723' target='http://www.rfc-editor.org/rfc/rfc2119.txt' />
<format type='HTML' octets='17970' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5777' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>



<reference anchor='RFC6838'>

<front>
<title>Media Type Specifications and Registration Procedures</title>
<author initials='N.' surname='Freed' fullname='N. Freed'>
<organization /></author>
<author initials='J.' surname='Klensin' fullname='J. Klensin'>
<organization /></author>
<author initials='T.' surname='Hansen' fullname='T. Hansen'>
<organization /></author>
<date year='2013' month='January' />
<abstract>
<t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols.  This memo documents an Internet Best Current Practice.</t></abstract></front>

<seriesInfo name='BCP' value='13' />
<seriesInfo name='RFC' value='6838' />
<format type='TXT' octets='72942' target='http://www.rfc-editor.org/rfc/rfc6838.txt' />
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="ISO10646" >
  <front>
    <title>Information Technology - Universal Multiple-Octet Coded Character Set (UCS)</title>
    <author >
      <organization>International Organization for Standardization</organization>
    </author>
    <date year="2003" month="December"/>
  </front>
  <seriesInfo name="ISO/IEC" value="10646:2003"/>
</reference>
<reference anchor="CP437" target="https://msdn.microsoft.com/en-us/library/cc195060.aspx">
  <front>
    <title>Code Page 437 MS-DOS Latin US</title>
    <author >
      <organization>Microsoft Developer Network</organization>
    </author>
    <date year="2015" month="April" day="20"/>
  </front>
</reference>
<reference anchor="ZIP" target="http://www.iana.org/assignments/media-types/application/zip">
  <front>
    <title>application/zip registration at IANA</title>
    <author initials="P." surname="Lindner" fullname="Paul Lindner">
      <organization></organization>
    </author>
    <date year="1993" month="June" day="19"/>
  </front>
</reference>


    </references>


<section anchor="subtypes" title="Expected Subtypes">

<t>The following archive formats will be explored for registration as
subtypes along with this effort:</t>

<t><list style="hanging">
  <t hangText='Archiving Only'>
  TAR</t>
  <t hangText='Multipurpose (archiving, compression, encryption)'>
  ZIP, ACE, RAR, 7-Zip, StuffIt, FreeArc</t>
  <t hangText='Software Packaging'>
  MSI, RPM, JAR, XPI, CAB, CRX, APK</t>
  <t hangText='Disk Imaging'>
  ISO, NRG, BIN/CUE, VMDK, WIM, PartImage, IMG/IMA/IMZ, DMG</t>
</list></t>

</section>
<section anchor="change-log" title="Change Log">

<t>Changes since -00</t>

<t><list style="symbols">
  <t>retool to use XML2RFC – lots of layout changes</t>
  <t>remove large sections of text, as suggested by Ned Freed and
Dave Crocker</t>
  <t>replace “primary” with “top-level”, and “content-type” with
“media type” throughout</t>
  <t>add reference to RFC 6838 (BCP 13) - Media Type Specifications
and Registration Procedures</t>
  <t>lots of editorial changes</t>
</list></t>

</section>


  </back>
</rfc>

