Forward-Compatibility (Extensibility) Requirement & Proposal from Sandro Hawke on 2006-11-08 (public-rif-wg@w3.org from November 2006) (original) (raw)

I didn't have a clear notion of the extensibility requirement until just after the F2F ended. Then it started to make sense to me, and since then I've talked it over with a few of you, and it seems like I might have it right.

The requirement might be phrased like this:

RIF must be extensible, so that implementations can be forward
compatible, continuing to operate well when given RIF dialects
which use extensions unknown to the implementation.

The wikipedia page on forward compatibility has some discussion of this issue: http://en.wikipedia.org/wiki/Forward_compatibility (Their page on extensibility refers only to extensible systems, not to extensible formats.)

Forward compatibility is essential to allowing a format to grow in a large, decentralized environment like the web. Without it, the decision to use an extension in some document is also a decision to entirely exclude the base of users using software which does not implement the extension.

Document format evolution, without forward compatibility, proceeds in ponderous steps where everyone has to install new versions of the software. In constrast, if RIF implementation are forward compatible, the decision to use an extension can be based on the particular characteristics of that extension, and an awareness (from the RIF standard) of how implementation will handle your rules when they don't implement the extension. Forward compatibility means progress can be incremental instead of revolutionary.

The simplest approach to forward compatibility, in general, is to mark each extension as "must-understand" or "may-ignore". For example, an extension which introduces negation probably falls under "must-understand", since if you were to ignore the syntactic elements of a ruleset which used negation, the meaning of the ruleset would probably be quite different from what was intended. On the other hand, an extension which annotates rules with the last date they were modified would be a "may-ignore" one. In general, the term "annotation" is used to cover syntactic elements which can safely ignored. (This matches RDF well, since RDF is generally processed with the notion that any triples you don't understand can be safely ignored.)

I think RIF can do better than this general must-understand/may-ignore approach. Here are some intermediate categories:

I think that covers the basic problem space.

Here's a rough proposal for an extensibility mechanism:

Thoughts?

-- Sandro

Received on Wednesday, 8 November 2006 19:20:53 UTC