I have an interesting situation with the Advanced Audio Server packages (H.248 Annex M.1), and I wanted to check out my proposed solution with the list.
The "basic" package currently consists of three functions: play, play and collect digits, and play and collect a recording. It also includes an extensive description of a syntax for specifying individual announcements, including variable elements. This syntax appears to the Megaco/H.248 grammar as a parameter VALUE in quotedString form.
One "advanced" package defined in the current draft Annex doesn't change any of the functions, but extends the announcement-specifying syntax. Using past practice as a guide, the package was modelled as an extension of the basic one. However, note that the new functionality is actually hidden below the level that would normally distinguish an extension -- no new signals or events are added, and no new parameters are added. (That last wouldn't be legal in any event.)
However, this approach doesn't really work. The first sign of trouble was when I thought to split up the play, play-and-collect, and play-and-record functions, both to clarify the functional definitions and because it would provide more flexibility for product implementation. How would I introduce the "advanced" syntax for each function? Do I need to define an "advanced" package for each, so that the two packages become six?
It becomes worse now that more than one advanced syntax feature has been proposed. I now need a package for the basic announcement syntax, one for that plus feature A, one for that plus feature B, and a fourth one for all three features together. You get the idea: an exponential explosion, multiplied by the number of functions if we decide to split them.
I have an answer to this, but I thought it might be a good idea to legitimize it. It could even lead to a v2 formalization of the process if accepted (with no change in what goes out over the wire!). My proposal is this:
1) We define the announcement specification syntax itself in a package of its own. Note that this package will have none of the usual content -- no properties, signals, events, or statistics.
2) We define each additional feature of the announcement specification syntax in another package which is an extension of the basic syntax package.
3) Within the functional packages (play, play-and-collect, etc.) we say first that the package USES the syntax of the basic syntax package and secondly that if any extension of the basic syntax package is supported the functional package also USES that extension. An implication is that if a device supports an advanced syntactical feature (e.g. sets) for one function it MUST support that feature for all of the functions it implements.
Comments? Is this a legitimate use of packaging? Should we add the USES relationship to our section 12 package description requirements in v2?
Please copy follow-ups to the Megaco list, now at megaco@ietf.org.
Tom Taylor taylor@nortelnetworks.com Ph. +1 613 736 0961 (ESN 396 1490)