[ogpx] type-system : version tag and handling unknown tags

Meadhbh Hamrick <ohmeadhbh@gmail.com> Sun, 28 March 2010 17:33 UTC

Return-Path: <ohmeadhbh@gmail.com>
X-Original-To: ogpx@core3.amsl.com
Delivered-To: ogpx@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 489A93A68B2 for <ogpx@core3.amsl.com>; Sun, 28 Mar 2010 10:33:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.131
X-Spam-Level: *
X-Spam-Status: No, score=1.131 tagged_above=-999 required=5 tests=[BAYES_50=0.001, DNS_FROM_OPENWHOIS=1.13]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vaZCSJ+dbvaA for <ogpx@core3.amsl.com>; Sun, 28 Mar 2010 10:33:50 -0700 (PDT)
Received: from qw-out-2122.google.com (qw-out-2122.google.com [74.125.92.25]) by core3.amsl.com (Postfix) with ESMTP id 717A33A683F for <ogpx@ietf.org>; Sun, 28 Mar 2010 10:33:50 -0700 (PDT)
Received: by qw-out-2122.google.com with SMTP id 9so90138qwb.31 for <ogpx@ietf.org>; Sun, 28 Mar 2010 10:34:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:from:date:received :message-id:subject:to:content-type; bh=zsq917dTSrCcmLzTwq5wFmCquAmYH31esx3JjayH1eM=; b=ET4NENCdUtAEFmwNlmw5QghC7ihzWwO6v1fYqbxp1B5E5NDuEoVanY7UUgWpWcJAZH PzaBp5q2+7O9n3Bv3NV7SDYa8vqmKUOf//v9eOuV7ZR4F+jLlQAl2ROoIDPFOXKO0ao+ +4W+Q8bjNr1GZpH/MmiQyEkLTWX/h3TVMA/I4=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=oj8pOISLZAssbxAN/or5jUbdQXTZ4gf02yhuacv0ENJ00Frft4rW0vgundycKHuYS4 XAoO5ZFeA1bkZS/Qp5ZcUfRVp8NLwQ1LutYHqD2dLmhDfFdtpz/cYp6OYtnttvcRh+cj PnxeSPKzmydckzwcD88MF9EQLlr+p1J0xQiW8=
MIME-Version: 1.0
Received: by 10.229.20.209 with HTTP; Sun, 28 Mar 2010 10:33:54 -0700 (PDT)
From: Meadhbh Hamrick <ohmeadhbh@gmail.com>
Date: Sun, 28 Mar 2010 10:33:54 -0700
Received: by 10.229.222.14 with SMTP id ie14mr812712qcb.95.1269797654382; Sun, 28 Mar 2010 10:34:14 -0700 (PDT)
Message-ID: <b325928b1003281033j1ccaa3dend06ebbce29a13359@mail.gmail.com>
To: ogpx <ogpx@ietf.org>
Content-Type: text/plain; charset="ISO-8859-1"
Subject: [ogpx] type-system : version tag and handling unknown tags
X-BeenThere: ogpx@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Virtual World Region Agent Protocol - IETF working group <ogpx.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ogpx>
List-Post: <mailto:ogpx@ietf.org>
List-Help: <mailto:ogpx-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 28 Mar 2010 17:33:51 -0000

at least one person has commented privately about the need to add a
version tag to the binary serialization. i was initially resistant,
but now think it makes sense. the use case is we may want to have
future versions of the binary serialization with new tags.

so i propose we add this verbage to section 4.3 of the type system draft:

"version - this optional tag MUST be the first tag in a serialization
stream. it identifies the an optional version identifier, to be used
for future extension of the binary serialization. the version tag is
the lower case 'v' octet and is followed by a 32 bit value
representing the version."

related to the version tag is the idea of what to do with tags you
don't understand. many tools that process XML have a "ignore but
preserve" semantic that i think works quite well. our situation is
mildly complicated as we don't have a way to know the length of each
tag content defined in the future. ergo, i suggest we say that all
future tags consist of a tag octet followed by a 32 bit network order
unsigned integer representing the length of the tag contents in
octets. that way, if someone has inserted an experimental tag you
don't understand into a binary encoding, you can at least skip over
it.

so i also propose we add the following verbiage to section 4.3 of the
type system draft:

"implementers MAY choose to include experimental or private tags in a
binary serialization. implementations that receive tags they cannot
handle MUST preserve the tag in the serialization. to facilitate
processing of binary serializations with unknown tags, tags not
defined in this specification MUST be of the form: a single tag octet,
a 32 bit network order unsigned integer representing the length of the
tag's content, and the content."

-cheers
-meadhbh

--
meadhbh hamrick * it's pronounced "maeve"
@OhMeadhbh * http://meadhbh.org/ * OhMeadhbh@gmail.com