OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

office message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: Moving forward on Conformance

It might help to take a top down approach to defining the conformance 
clause, and see whether we agree on the broad strokes at least.  We might 
not be able to avoid a vote on the details, but let's see what we agree 

A conformance clause can define conformance for one or more "products". A 
product is the subject of conformance, the thing that conformance is 
defined for.  In the case of markup languages, it is typical to define the 
document itself as a product, as well as one or more applications that 
operate on that document.

ODF 1.0 & ODF 1.1's conformance clause was not as crisp as I'd like it to 
be, but if you parse out section 1.5 carefully, you'll see that it defines 
conformance for:

-- Document
-- Applications 
-- Applications that read and write 

You can gleam a bit more by reading the entire standard, but if you look 
at just the conformance clause you get those three products.

A standard can also define one or more conformance "classes" for each 
product.  In the case of ODF 1.0/1.1 there is only a single conformance 
class, the unnamed default conformance class.

So the question for us in ODF 1.2 is to determine what conformance 
products and classes we want to define.  If our intent is to confuse 
adopters of ODF, we could easily define a large matrix of a 48 or more 
different product/class combinations, such as "ODF Spreadsheet Consumer of 
the Loose Legacy Class".   But my personal belief is when the number of 
conformance classes starts to exceed the number of implementations of the 
standard, then we're up to no good.

So let me propose a set of possible product combinations and see if there 
is generally agreement on which ones we use:

A) Document/Applications/Applications that read & write (same products as 
ODF 1.1)

B) Document/Producer/Consumer (What Michael has in his latest draft)

C) Document/Producer/Consumer/Processor (adding processor, which we could 
define as an application that both reads and writes and for which we could 
additionally make statements about "preservation" or "round-tripping" if 
there is consensus to do that)

D) Document/Spreadsheet Document/WordProcessor Document/Presentation 
Document...Spreadsheet Consumer, WordProcessor Consumer...

Choice D) would be like B), but we explicitly define products for 
individual document types and applications that operate on those document 
types.  Probably not worth it unless we can say state different 
requirements for each document type.  But it is possible, for example, we 
can say that an ODF Spreadsheet has <office:spreadsheet> as the root and 
uses OpenFormula for the value of the table:formula attribute, etc.  We 
could also make Appendix D normative for the individual document classes.

So, is there any consensus on what we want as products in the conformance 
clause?   B) or C) are fine for me.  I'd like to see us get to D) over 
time.  A) is out for me, because the ODF 1.0/1.1 definitions are not 
particular crisp and easy to parse.  Whatever we do we need to improve on 
what we had then.

If we can get some agreement on the products, then we can talk about 
whether we want multiple conformance classes on top of that. 

The strict/loose distinction has been made in other standards, but that is 
more typically done where legacy documents could only fit into only the 
loose class.  But I have not heard anyone claim widespread use of 
arbitrary private extensions in ODF 1.0/ODF 1.1 applications.  So whatever 
we decide, we should be concerning ourselves with real documents and real 
applications, not merely theoretical ones.  The fact that ODF 1.0 allowed 
arbitrary extensions does not oblige us to preserve this capability as 
conformant if in fact this feature was never or only rarely used.  We 
should just count ourselves lucky and move on.  On the other hand, any 
widespread conformant constructs from ODF 1.0/1.1 should be respected, I 

So I think the choices we have are:

A) Single conformance class, same definition as ODF 1.0/1,1, but cleaned 
up to meet OASIS requirements

B) Single conformance class, but stricter than ODF 1.0/1.1, i.e., allow 
extensions in particular places but no the general use of foreign 
elements/attributes. (So, essentially what Michael has in his latest 

C) Single conformance class that is even stricter than B) not allowing any 
extensions.  Some real documents that were conformant to ODF 1.0/1.1 would 
not be conformant under this definition.  (This is what I proposed 

D) Dual conformance classes, say loose and strict, where loose=A and 
strict = B

E) Dual conformance classes, say loose and strict, where loose=B and 
strict = C

F) Dual conformance classes, say loose and strict, where loose=A and 
strict = C

And finally we need to decide whether we apply the conformance class(es) 
to documents only or make some statement about other products, such as 
Consumers/Producers.  The main question seems to be whether a conformant 
Producer is required to produce a non-extended document. 

I think the choices are:

A) With a single document conformance class, we have a single class of 
Producers/Consumers.  Producers produce conformant documents, Consumers 
consume conformant documents.  We can make some additional statement about 
how to process non-conformant documents.

B) With two document conformance classes we have a single conformance 
class for Producers/Consumers and require that they are able to 
produce/consume strict documents, but may also produce/consume loose 

C) With two document conformance classes we have a single conformance 
class for Producers/Consumers and require that they are able to 
produce/consume loose documents.  In other words, there is no requirement 
that a conformant producer/consumer be able to handle strict documents.

D) With two document conformance classes we have a two conformance classes 
for Producers/Consumers, loose and strict, and each is required to be able 
to read and write documents of their class.   Obviously the loose 
applications become an interoperability black hole, since they are 
extended in ways that the standard can not speak to, other than to make 
statements about how to ignore or report things that the consumer does not 

My preferences are as follows:

1) For products, I'd like to see us follow C) and define conformance for 
ODF Documents, Producers, Consumers and Processors.  B) would also be 

2) For conformance classes, My preference is for C, but B would also be 
acceptable.  Of the dual-class choices, E is the least offensive.

3) And for the last question, this will depend on what agreement we can 
arrive to on the other two questions, but I generally want to avoid a 
proliferation of conformance classes, with applications as well as 

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]