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


Help: OASIS Mailing Lists Help | MarkMail Help

office-formula message

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

Subject: Re: [office-formula] RE: [oic] Implementation-defined, Unspecified,and Undefined behaviors in OpenFormula

Doug Mahugh wrote:
"I have one question about this matter, which perhaps David Wheeler or
somebody involved early on can answer: how were the existing
implementation-defined items determined? I'm assuming that some thought
has already been given to what should be in the standard and what should
be implementation-defined, and that is reflected in the current content
of the OpenFormula draft. Is that a fair assumption? And if so, it would
be useful to hear some of the rationale for how these decisions were
originally made."

Sure.  Quite a lot of thought and time went into determining what is 
implementation-defined; a little history might help.

The OpenFormula specification was developed by examining a large number 
of actual spreadsheet applications, including Excel, OpenOffice.org, 
Lotus', Word Perfect/Quattro Pro, Gnumeric, KOffice, Palm DocumentsToGo, 
and many others.  This reflects a belief of mine: I believe standards 
should reflect _actual_ _practice_, instead of some academic notion of 
what such applications MIGHT do.  I think this is a belief that most 
others in this group share; it's certainly not unique to me.  We created 
a number of tables comparing functions and operators in each 
application, for example, as well as many test cases to look for "edge 
cases" or undocumented functionality.

The specification is in some sense a "union" of the applications above, 
because we want to be able to represent the data generated by any of 
those applications.  It's not quite a union; if the capability was 
considered extremely exotic and unlikely to be useful to more than a few 
users, it was omitted. For example, Gnumeric and Quattro Pro have an 
enormous number of predefined functions, and not all of them are in 
OpenFormula.  Nevertheless, OpenFormula can represent even very exotic 
Excel or OpenOffice.org spreadsheets without difficulty, and since 
extensions are easily supported, it can even represent those well. 
Syntactically, OpenFormula looks like the XML formal used by 
OpenOffice.org, though not it's identical; we added syntactic extensions 
as necessary to support other implementations.

When existing applications _differed_ in what they produced, we (the 
group) tried to gain agreement on what they "should do".  In some cases, 
we could agree that an application was simply buggy, and the spec should 
say something else.  In other cases, we agreed that there were actually 
different functions, that happened to have colliding names.  In those 
cases, we defined both functions with different names. In general Excel, 
OpenOffice.org, and Gnumeric all agree on function names, so we followed 
their names where they existed.

But in some cases, applications do things differently, and there were 
good arguments for each option.  In those cases, we tried to determine 
what it "should" be.  But if we could not agree on a single result, we 
labelled it as "implementation-defined".  Even when it's labelled as 
implementation-defined, we tried to limit the possibilities.  A good 
example is 0^0: The only plausible values are 0, 1, or Error, so we can 
at least spec that it must be one of those 3.

As Rob noted, the number of "implementation-defined" items is really 
very, very small.  The C and C++ specifications are _already_ 
international standards, and they have FAR more implementation-defined. 
  Even the Ada specification has many implementation-defined items, and 
that is one of the most rigorous specifications for a language with the 
ability to do numerical calculations.  I don't see the few 
implementation-defined items as a real problem.  You can certainly 
exchange a vast number of spreadsheets, even given these 
implementation-defined areas.

That's the history in a nutshell.  Does that help?

--- David A. Wheeler

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