Re: [dispatch] Conceptual proposal for extensibility of Alert-Info URNs
Laura Liess <laura.liess.dt@googlemail.com> Wed, 16 June 2010 13:12 UTC
Return-Path: <laura.liess.dt@googlemail.com>
X-Original-To: dispatch@core3.amsl.com
Delivered-To: dispatch@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CFE613A6800 for <dispatch@core3.amsl.com>; Wed, 16 Jun 2010 06:12:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.196
X-Spam-Level:
X-Spam-Status: No, score=-2.196 tagged_above=-999 required=5 tests=[AWL=1.781, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, GB_I_LETTER=-2]
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 OdnBRAsCVjS7 for <dispatch@core3.amsl.com>; Wed, 16 Jun 2010 06:12:06 -0700 (PDT)
Received: from mail-wy0-f172.google.com (mail-wy0-f172.google.com [74.125.82.172]) by core3.amsl.com (Postfix) with ESMTP id 5897B3A67A7 for <dispatch@ietf.org>; Wed, 16 Jun 2010 06:12:05 -0700 (PDT)
Received: by wya21 with SMTP id 21so1997198wya.31 for <dispatch@ietf.org>; Wed, 16 Jun 2010 06:12:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=uHF1VfNNubS20GBHGaCrR7Tdn8ZHSqz3znakKLaNvWE=; b=jnxZ3vATAbLwe2EoqENAFI4zCzKdHlFey1U7Izk7LjK16imAx7e/n3oTTseHz0IT7O ygTvIxPy5T8LsCGNz83Ni2WxvC8QYO2d4YDcFBsxDcHT0zwDkpp5ggW+4N9GQy3sJU8a vdl5Oc07b2kmskCRSGeLrT3f8dnw10/rZ+cy4=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=LIOA9T2xuQlXY8WHYyphVf2UH07+MyOIQIjL1uRU//JOYXOA/ZlHFQzzl9IURMNkP4 AgqZiOUyVzIQyMwaSxokksluIgUxhjTHPxinIeKn8iaGXTT9TAGbBlwPcJDQ8bIrrTPD 2mAro8N89BdJAn3y5bVtKlScXiph1N2JCWoog=
MIME-Version: 1.0
Received: by 10.216.85.74 with SMTP id t52mr4963926wee.99.1276693925708; Wed, 16 Jun 2010 06:12:05 -0700 (PDT)
Received: by 10.216.169.9 with HTTP; Wed, 16 Jun 2010 06:12:05 -0700 (PDT)
In-Reply-To: <4C17C351.7020405@cisco.com>
References: <CD5674C3CD99574EBA7432465FC13C1B21FD73619B@DC-US1MBEX4.global.avaya.com> <4C17C351.7020405@cisco.com>
Date: Wed, 16 Jun 2010 15:12:05 +0200
Message-ID: <AANLkTim-QG8ji6q4oKK6w5yy9bzOmVwmfNvv3t30zfvO@mail.gmail.com>
From: Laura Liess <laura.liess.dt@googlemail.com>
To: Paul Kyzivat <pkyzivat@cisco.com>, "WORLEY, Dale R (Dale)" <dworley@avaya.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Cc: "dispatch@ietf.org" <dispatch@ietf.org>
Subject: Re: [dispatch] Conceptual proposal for extensibility of Alert-Info URNs
X-BeenThere: dispatch@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: DISPATCH Working Group Mail List <dispatch.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dispatch>
List-Post: <mailto:dispatch@ietf.org>
List-Help: <mailto:dispatch-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 13:12:10 -0000
Dale, Paul, what about trying to combine Dale's conceptual framework (which also seems to me to solve the semantic-non semantic discussion) and the syntax Paul and John and I agreed upon http://www.ietf.org/mail-archive/web/dispatch/current/msg01618.html back in April ? I think they could fit together, or do you see any issues where they don't? Laura 2010/6/15 Paul Kyzivat <pkyzivat@cisco.com>: > Very interesting! > > Without getting into syntax specifics, I think I like this - it provides a > much cleaner conceptual framework. The idea of the specifier providing a > priority seems to resolve some loose ends. > > Thanks, > Paul > > WORLEY, Dale R (Dale) wrote: >> >> [As I am the chair-elect for this topic, I now have to identify that I >> am proposing this as an individual contributor-elect.] >> >> This is a conceptual proposal for for specifying Alert-Info URNs. The >> problem that I am attacking is extensibility -- because the practical >> application of the Alert-Info URNs will be as successors of the >> ring tone and ringback tone implementations of innumerable existing >> telephone systems, we expect the uses of Alert-Info URNs to be subject >> to much extension. The primary problem is to provide a framework >> which allows such extensions to be implemented without damaging >> interoperability between systems whose Alert-Info usage has not been >> coordinated a priori. A secondary problem is to ensure that the >> framework can be implemented efficiently in practical situations. >> >> The basis of this proposal has been stolen from previous contributors >> to the Alert-Info work. >> >> Since this is a conceptual proposal, I am not particular about the >> syntax to be used -- the syntax shown here is just to illustrate the >> concepts. What I am proposing is a system of semantics; many variant >> syntaxes can be used to implement it with differing tradeoffs. >> >> * Terminology >> >> We say that a "specifier" sends an "indication" (a URN in an >> Alert-Info header) to a "renderer" which then "renders" a "signal" >> based on the indication to a human user. A "category" is a >> characteristic whose "values" can be used to classify indications. >> >> * Requirements and non-requirements >> >> Requirement A: Indications must be able to represent a wide variety >> of signals, which have many largely-orthogonal characteristics. (See >> draft-liess-dispatch-alert-info-urns-00 section section 2 for a >> partial list, and Paul Kyzivat's message for another partial list.) >> >> Requirement B: Indications include subsets which have distinctly >> different semantics, that is, they form disjoint "value spaces". For >> example, some indications should describe the semantics of the >> signaling situation whereas others should describe the audio >> characteristics of the signal. This implies that there is no single >> set of categories that can be used as independent coordinates of the >> value-space of indications. >> >> Requirement C: The set of indications must be able to support >> extensibility by a wide variety of organizations that are not >> coordinated with each other. Extensions must be able to: >> >> - add further values to any existing category >> >> - add further categories that are orthogonal to existing categories >> >> - semantically subdivide the meaning provided by any existing >> indication >> >> - add further "value spaces" of indications whose semantics are not >> related to existing indications, and thus, whose categories differ >> from and do not interact with existing categories >> >> Requirement D: An indication is transmitted from a specifier to a >> renderer, which must base its rendering decision only on the >> indication. In particular, there is no multi-message negotiation >> process or carrying of context from one indication to the next. >> >> Requirement E: The renderer may be customized in ways that limit the >> set of signals that it can render, or it may be provided with a set of >> signals that have uncommon semantics. (The canonical example is a UA >> for the hearing-impaired.) (By Requirement D, the renderer has no way >> of transmitting this fact to the specifier.) >> >> Requirement F: If the specifier and the renderer have designs that >> are properly coordinated, the indications must be able to reliably >> carry all extensions that are supported in the coordinated designs. >> >> Requirement G: In any situation, the renderer must be able to perform >> close to the best possible rendering that it could do even the >> specifier had specific knowledge of the renderer's capabilities. >> >> Non-Requirement H: In any situation other than that of Requirement F, >> we do not require the render to perform the best possible rendering. >> >> * Categories, values, and indicators >> >> There are a theoretically infinite number of categories. Each >> category is named by a word, such as: >> >> reason >> priority >> source >> duration >> >> The values of each category conceptually form a tree. The root of the >> tree is the universal, or most general, value. It is denoted by the >> the category name, and represents the universe of all possibilities. >> Each further subdivision of a value is specified by adding a hyphen >> and another word. Thus, within the category "state" we have values: >> >> state >> state-unknown >> state-waiting >> state-on.call >> state-away >> >> (Here we pretend '.' is a letter.) >> >> The first of these values specifies no specific information. The >> following values specify subdivisions of the semantic space. The >> value "state-waiting" can be further subdivided based on the >> importance of the call being waited upon: >> >> state-waiting-standard >> state-waiting-vip >> >> An indication is assembled by providing a sequence of values (which >> implicitly specify their categories), separated by colons, in order of >> importance. That is, the first value is the one that should be >> rendered as accurately as possible; within that constraint, the second >> value should be rendered as accurately as possible; etc. >> >> For example, we can assemble the following indications: >> >> an internal, priority call >> source-internal:priority-high >> >> priority call waiting >> reason-call.waiting:priority-high >> >> short Albanian auto-callback >> reason-auto.callback:duration-short:locale-al >> >> (The specific examples are taken from >> draft-liess-dispatch-alert-info-urns-00 section 4.5, the specific >> categories and values are adapted from Paul Kyzivat's message.) >> >> All of these indications are easily extensible. For instance, if >> Albania has two service providers with different signal tones, we >> could specialize the last indication into: >> >> short Albanian auto-callback, service provider A >> reason-auto.callback:duration-short:locale-al-sp.A >> >> short Albanian auto-callback, service provider B >> reason-auto.callback:duration-short:locale-al-sp.B >> >> Due to the rule that the earlier values in an indicator have more >> influence than latter values, there is a subtle difference between: >> >> source-internal:priority-high >> priority-high:source-internal >> >> in regard to which aspect of the indication it is more important to >> render. >> >> * Selecting the signal based on an indication >> >> Having defined a universe of indications with infinite extensibility, >> we now need to show that a practical device can interpret indications >> to select from a limited set of signals. To do this, I will describe >> a very general algorithm for doing this selection in all possible >> situations. Note that in practical cases (where all the signals that >> can be rendered can be described by a small number of values of a >> small number of categories) the algorithm will operate in a reasonably >> rapid and simple way. >> >> To start with, we assume that the renderer possesses a set of >> available signals. This set will naturally be partially determined by >> the renderer itself, but the set may also be affected by the >> configuration of the renderer (e.g., hearing-impaired mode vs. hearing >> mode) and the context of the indication (e.g., ring tone vs. ringback >> tone situations). The set may be finite or infinite. Of course, if >> the set is infinite, it can't be represented literally, but the >> renderer necessarily has a method of representing the set and its >> possible subsets. A finite set of available signals can be enumerated >> directly, or represented in some other way. >> >> Each available signal is described by the values of a set of >> categories. We assume that the renderer only knows the values for a >> finite set of categories; for all other categories, all available >> signals implicitly have the "universal", root value. >> >> Informally, the algorithm proceeds as follows: >> >> Load a set of "acceptable signals" with all available signals. >> >> Process the words in the values in the indication from left to right. >> As each additional word is considered, consider the portion of the >> value that has been examined, and remove from the acceptable set all >> signals which are inconsistent with that value, in that their value >> for that category is not equal to or below the indication's value (as >> processed so far). >> >> If after processing a word, one or more signals remain in the >> acceptable set, continue processing the next word. >> >> If after processing a word, no signals remain in the >> acceptable set, restore the previous state of the acceptable >> set and continue with the next value in the indication. >> >> At the end of processing, the acceptable set will contain one or more >> signals. Choose from among them according to some sort of priority >> system. >> >> More formally, an indication is processed by: >> >> initialize the acceptable set of signals with all available signals >> >> for each value in the indication (going left to right): >> >> for each word in the value (going left to right, which is down >> the tree of values): >> >> if there are acceptable signals which have a value of the >> category which is equal to or below the indication value as >> seen so far: >> >> delete all acceptable signals which do not have such a >> value, and continue processing this value >> >> else >> >> cease processing this value and continue with the next >> value >> >> the acceptable set will contain at least one signal. Choose from >> among the acceptable signals via some priority scheme. >> >> Let me work through an example. >> >> Let us suppose that the renderer implements three categories: >> >> reason >> reason-normal >> reason-call.waiting >> reason-forward >> reason-auto.callback >> reason-recall.hold >> reason-recall.transfer >> >> duration >> duration-normal >> duration-short >> duration-long >> >> locale >> locale-fm >> locale-al >> locale-al-sp.A >> locale-al-sp.B >> >> Let us suppose that the renderer has signals for all combinations of >> the leaf values of these categories, except that for historical >> reasons if "reason" has a non-universal value, "default" must be >> universal, and vice-versa; the signals (copied from the PSTN service >> providers) do not allow signaling a non-standard reason with a >> non-standard duration. So the allowed combinations of these two >> values are: >> >> reason-normal & duration >> reason-call.waiting & duration >> reason-forward & duration >> reason-auto.callback & duration >> reason-recall.hold & duration >> reason-recall.transfer & duration >> reason & duration-normal >> reason & duration-short >> reason & duration-long >> >> There are signals that combine each of these with "locale-fm", >> "locale-al-sp.A", and "locale-al-sp.B". >> >> To process the indication >> "reason-auto.callback:duration-short:locale-al-sp.A", the renderer >> first loads the acceptable signal set with all 27 of its signals, and >> then examines the indication word by word: >> >> - "reason" >> >> Removes no signals from the set. >> >> - "reason-auto.callback" >> >> Reduces the set to >> >> reason-auto.callback & duration & locale-fm >> reason-auto.callback & duration & locale-al-sp.A >> reason-auto.callback & duration & locale-al-sp.B >> >> - "duration" >> >> Removes no signals from the set. >> >> - "duration-short" >> >> Since no signals in the set have a value at or under this value, no >> change is made and the processing of this value ends. >> >> - "locale" >> >> Removes no signals from the set. >> >> - "locale-al" >> >> Reduces the set to >> >> reason-auto.callback & duration & locale-al-sp.A >> reason-auto.callback & duration & locale-al-sp.B >> >> - "locale-al-sp.A" >> >> Reduces the set to >> >> reason-auto.callback & duration & locale-al-sp.A >> >> The end of the indication is reached, and since only one signal remains >> in the set, it is rendered. >> >> Now, if the indication was less specific, >> "reason-auto.callback:duration-short:locale-al", at the end the >> acceptable set would be >> >> reason-auto.callback & duration & locale-al-sp.A >> reason-auto.callback & duration & locale-al-sp.B >> >> and the renderer would have to choose between these two signals in >> some way. >> >> Let us suppose that the renderer implemented a further category: >> >> mode >> mode-visual >> mode-audio >> >> and applied the value "mode-audio" to all of the above signals, but >> only added the following signals with "mode-visual": >> >> reason & duration-normal & locale & mode-visual >> reason & duration-short & locale & mode-visual >> reason & duration-long & locale & mode-visual >> >> That is, the only variation provided is in "duration". >> >> Then the indication "reason-auto.callback:duration-short:locale-al" >> would generate the same acceptable set as above, that is, there would >> be no "mode-visual" signals. The indication >> "mode-visual:reason-auto.callback:duration-short:locale-al" would >> generate the acceptable set: >> >> reason & duration-short & locale & mode-visual >> >> This is because the indication implies that matching "mode" is more >> important than matching "reason" and "duration". Once the selection >> for "mode-visual" has been done, no further selection can be done on >> "reason", but "duration-short" can be acted upon. >> >> In practice, for use with a hearing-impaired user, the initial set of >> signals would be restricted to those with "mode-visual". In this >> example, we have assumed that the user considers "mode-visual" and >> "mode-audio" to be equally acceptable. >> >> If we configured the renderer to only use "mode-visual" signals, then >> the indication "reason-auto.callback:duration-short:locale-al" would >> select only the signal >> >> reason & duration-short & locale & mode-visual >> >> In this configuration, the indication >> "mode-audio:reason-auto.callback:duration-short:locale-al" would also >> select that signal, because the value "mode-audio" cannot be acted >> upon within that set of available signals. It is effectively ignored. >> >> * Extensibility >> >> Let us now see how this scheme supports the various types of >> extensibility listed in Requirement C. >> >> - add further values to any existing category >> >> We could define an additional value such as >> >> reason-avaya.special >> >> If the renderer had any signals that had this value, they would be >> selected by an indicator containing "reason-avaya.special". If the >> renderer has no such signals, then in an indicator this value acts the >> same as "reason", that is, it has no effect. >> >> - add further categories that are orthogonal to existing categories >> >> We could define an additional category with values: >> >> avaya >> avaya-a >> avaya-b >> avaya-c >> >> If a renderer does not know of this category, all of its signals >> implicitly have the value "avaya". Because of this, when such a >> renderer processes a value of this category in an indicator, it never >> changes the available set. >> >> - semantically subdivide the meaning provided by any existing >> indication >> >> We could define subvalues of existing values, such as: >> >> state >> state-waiting >> state-waiting-avaya.standard >> state-waiting-avaya.vip >> >> If the renderer has two signals that differ only in the values >> "state-waiting-avaya.standard" and "state-waiting-avaya.vip", any >> indicator that does not know of this subdivision will never separate >> the two signals; they will both remain in the acceptable set or both >> be excluded from it. So the renderer needs a policy for choosing one >> over the other -- In this case, clearly "state-waiting-avaya.standard" >> is to be preferred. >> >> However, if the indicator gives one of the two subvalues, the renderer >> will select the appropriate signal. >> >> If the indicator gives one of the two subvalues but the renderer only >> knows of "state-waiting", the "avaya.standard" or "avaya.vip" part of >> the value will never affect the acceptable set (since to select based >> on it would make the acceptable set empty). Processing of >> "state-waiting-avaya.standard" would have the same effect as >> "state-waiting". >> >> - add further "value spaces" of indications whose semantics are not >> related to existing indications, and thus, whose categories differ >> from and do not interact with existing categories >> >> We can define completely independent spaces of signals by defining new >> categories to describe the new space, giving signals in one space the >> universal value for categories describing the other space. >> >> For example, we can define >> >> auto >> auto-make >> auto-make-volvo >> auto-make-toyota >> color >> color-red >> color-green >> >> If we have signals with the values >> >> auto-make-volvo & color-red >> auto-make-volvo & color-green >> auto-make-toyota & color-red >> auto-make-toyota & color-green >> >> and add them to the set of "mode-visual" signals given above, we get: >> >> reason & duration-normal & locale & mode-visual & auto & color >> reason & duration-short & locale & mode-visual & auto & color >> reason & duration-long & locale & mode-visual & auto & color >> reason & duration & locale & mode & auto-make-volvo & color-red >> reason & duration & locale & mode & auto-make-volvo & color-green >> reason & duration & locale & mode & auto-make-toyota & color-red >> reason & duration & locale & mode & auto-make-toyota & color-green >> >> This set is a combination of chalk and cheese. But the first >> non-universal value in the indicator will select signals of one type >> or the other. For instance, "auto-make" will select >> >> reason & duration & locale & mode & auto-make-volvo & color-red >> reason & duration & locale & mode & auto-make-volvo & color-green >> reason & duration & locale & mode & auto-make-toyota & color-red >> reason & duration & locale & mode & auto-make-toyota & color-green >> >> and "duration-normal" will select >> >> reason & duration-normal & locale & mode-visual & auto & color >> >> Dale >> _______________________________________________ >> dispatch mailing list >> dispatch@ietf.org >> https://www.ietf.org/mailman/listinfo/dispatch >> > _______________________________________________ > dispatch mailing list > dispatch@ietf.org > https://www.ietf.org/mailman/listinfo/dispatch >
- [dispatch] Conceptual proposal for extensibility … WORLEY, Dale R (Dale)
- Re: [dispatch] Conceptual proposal for extensibil… Paul Kyzivat
- Re: [dispatch] Conceptual proposal for extensibil… Laura Liess
- Re: [dispatch] Conceptual proposal for extensibil… Paul Kyzivat
- Re: [dispatch] Conceptual proposal for extensibil… Laura Liess
- Re: [dispatch] Conceptual proposal for extensibil… Paul Kyzivat
- Re: [dispatch] Conceptual proposal for extensibil… WORLEY, Dale R (Dale)
- Re: [dispatch] Conceptual proposal for extensibil… Paul Kyzivat
- Re: [dispatch] Conceptual proposal for extensibil… Peter Saint-Andre
- Re: [dispatch] Conceptual proposal for extensibil… Paul Kyzivat
- Re: [dispatch] Conceptual proposal for extensibil… Peter Saint-Andre