INTERNET-DRAFT                                                 K. Swenson
 <draft-swenson-swap-vs-ipp-00.txt>          Netscape Communications Corp.
 Expires February, 1999                                       Tom Hastings
                                                               Xerox Corp.
                                                            August 7, 1998


                       Similarities and Differences
                            between SWAP and IPP

This document is an Internet-Draft.  Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups.  Note that other groups may also
distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time.  It is inappropriate to use Internet-
Drafts as reference material or to cite them other than as
"work in progress."

To view the entire list of current Internet-Drafts, please check
the "1id-abstracts.txt" listing contained in the Internet-Drafts
Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
(Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au
(Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu
(US West Coast).

1.0 Abstract

IPP (Internet Printing Protocol) has been compared in conversations to SWAP
(Simple Workflow Access Protocol).  Both are for starting an asynchronous
job, and then being able to check up on it later. The IPP is specifically
designed for printers and print jobs.  SWAP is more generic, and is
generally oriented toward more computational jobs.  But many of the
problems encountered are the same, and the approach to the solutions can be
examined and compared.  This document goes through the features point by
point and shows in what ways they are similar, and more importantly in what
ways their approaches differ.  The purpose of this is to guide discussions
about the two protocols.

2.0 Comparison


 SWAP                                 IPP

 Resources that are named using       Resources that are named using
 URIs.  Requests are made using       URIs.  Requests are made using
 HTTP.                                HTTP.

 A process definition resource,       A printer resource, named by a URI,
 named by a URI, allows cration of    allow for creation of instances of
 process instances.  Process          jobs.  Printer operations (methods)
 definition methods are               are Print-Job, Print-URI,
 LISTINSTANCES,                       Validate-Job, Create-Job,
 CREATEPROCESSINSTANCE, as well at    Get-Printer-Attributes, and
 the standard PROPFIND and            Get-Jobs.
 PROPPATCH.

 Process instance resource, named by  A print job resource, named by a
 a URI, represents a specific         URI, represents a specific print
 instance of the service.  Process    job.  Job operations (methods) are
 instance methods are GETHISTORY,     Send-Document, Send-URI,
 TERMINATE, SUBSCRIBE, UNSUBSCRIBE,   Get-Job-Attributs, and Cancel-Job.
 as well as PROPATCH and PROPFIND.

 No concept of a numeric process      IPP has additionally an integer
 instance ID, no ability to call      that represents the job ID.  Print
 instance methods on the process      Job request can be made to the
 definition.                          Printer, including the job ID.
                                      Thus the printer resource acts as a
                                      proxy for the printer job resource.

 Single command to create the         "Print-Job" command creates a print
 instance, give it data and start     job, accepts all data, and starts
 it.                                  the printing.  "Print-URI" does the
                                      same thing with the document
                                      retrieved from a web server.

 Can start an instance without        "Create-Job" creates a print job
 starting it, buy passing false in    but does not cause it to start.
 the start parameter.  Data can be    Data can be supplied later using
 set on the process instance using    "Send-Document" or "Send-URI".
 "propPatch" any number of times.     Whenever the data is sent with the
 Then a transition to the running     "last-document" flag set to true it
 state causes it to start.            causes the printing to start.

 No analog to the "validateJob"       "Validate-Job" command on the
 command                              printer has all the parameters of a
                                      create print job (except the
                                      document data), it does not print,
                                      but it does return whether the
                                      printer is able to handle that
                                      particular job request.

 "listInstances" returns a list of    "Get-Jobs" returns a list of the
 the process instsances from that     printer jobs on that printer.
 process defnition.

 Attributes: name/value pairs on the  Attributes: name/type/value
 process instance. Can retrieve from  triplet. Printer resource will
 the process definition a list of     provide a list of attributes on the
 names and types for attributes on    printer, as well as on the print
 process instances.  No attributes    jobs.
 on the process definition.

  Data type encodings supplied for    There is a fixed set of types
 date, number, and string.  Other     available.  Support provided for
 data types are implementation        enumerated data types where there
 dependent.                           is a specified set of allowed
                                      values.

 New data types can be registered     New data types can be registered
 for use.                             for use.

 No standard attributes on the        Printer object has standard
 process definition, which is         REQUIRED and OPTIONAL attributes
 assumed to be configured in a        that can be queried.  No operation
 proprietary  way.  Proprietary       at present to set them.
 process definition attributes can
 be queried and set with PROPFIND
 and PROPPATCH.

 Attribute data is expressed in XML,  This protocol invents its own way
 using the same command (PROPFIND,    to encode attribute data.  They use
 PROPPATCH) as WebDAV.  The text/xml  a mime type to indicate this
 mime type is used.                   encoding: application/ipp.

 Protocol invents new HTTP methods    The POST method is used for every
 as the command on the resources;     operation.  The actual command is
 consistent with WebDAV.              specified as part of the
                                      application/ipp data.

 Single level of attributes.  Each    Most attributes are job level
 named attribute has on value.  That  attributes, but there can be a
 value may be arbitrarily complex     collection of documents to be
 XML, but this is implementation      printed, and there are a few
 dependent.  No collection attribute  document level attributes.  Defines
 type.                                a datatype "collection" which
                                      itself contains a set of named
                                      attributes.

 Attributes have a single (possibly   Attributes can be multi valued.  A
 complex) value                       single value on a multivalued
                                      attribute is encoded the same as a
                                      single valued attribute.

 Namespace controlled by XML          Global attribute namespace
 namespace mechanisms                 capability through use of the
                                      company's domain name: e.g.
                                      xerox.com-xxx for private use.
                                      Also new standard attributes can be
                                      registered for use in the global
                                      namespace.

 Makes use of a nested state          There are a fixed number of
 mechanism.  A set number of          states.  Adding a new state
 required states, but people can      requires a new version of the
 define sub states.  Command to       specification.  There are special
 change state allows moving to        commands to change between states.
 states not defined by the spec, but  There is a "job-state-reasons"
 nevertheless implemented by the      attribute that explains why a
 vendor.                              printer job ends up in a certain
                                      state. This is an extensible set of
                                      keyword values, effectively
                                      providing one level of substate
                                      capability.

 Additional keywords can be           Additional keywords can be
 registered in the global namespace   registered in the global namespace
 for standard use.                    for standard use.

 Input attributes and output          IPP operations have input
 attributes on the process instance,  parameters and response value, but
 described by the process             there is no set of attributes that
 definition.                          can be considered the 'result' of
                                      print job.

 Can get a history record of all the  No standardized concept of
 events that occurred on the process  history.  Can find out the current
 instance.  Can retrieve a            status of jobs, and the reason for
 collection of events across all      the current status, including
 instnces.                            completed, aborted, and cancelled
                                      jobs, but no history.

 process instances stay around until  Completed job are accessible for a
 released by the originator.          while, but jobs disappear at an
                                      undefined time.

 When creating a process instance,    When you ask for a print job, there
 you can supply a URI to receive      is a design (near future) for a way
 responses back to.                   to register a URI to receive a
                                      notification back on that job
                                      and/or that printer.   Also a
                                      client can register a URI directly
                                      with the IPP printer object for
                                      specified events that happen to any
                                      job and/or that printer.  If the
                                      printer does not implement the
                                      notification directly, it will
                                      register for you in an external
                                      notification service.



3.0 References

More information about SWAP can be obtained from:

     http://www.ics.uci.edu/pub/ietf/swap/

More information about IPP is available at:

     http://www.ietf.org/html.charters/ipp-charter.html
     http://www.pwg.org/ipp/

4.0 Copyright

Copyright (C) The Internet Society 1998.  All Rights Reserved.

This document and translations of it may be copied and furnished to others,
and derivative works that comment on or otherwise explain it or assist in
its implmentation may be prepared, copied, published and distributed, in
whole or in part, without restriction of any kind, provided that the above
copyright notice and this paragraph are included on all such copies and
derivative works.  However, this document itself may not be modified in any
way, such as by removing the copyright notice or references to the Internet
Society or other Internet organizations, except as needed for the  purpose
of developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be followed, or
as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked
by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS
IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE.

5.0 Author Contact Information

Keith Swenson
Netscape Communications Corporation
501 E. Middlefield Rd.
San Jose, CA, 94043
kswenson@ms2.com

Tom Hastings
Xerox Corporation
hastings@cp10.es.xerox.com