spreadsheet compatibility - openoffice.org · 2020. 11. 16. · spreadsheet compatibility...

22
September 19 Spreadsheet Compatibility Backwards, Forwards, and Sideways Jody Goldberg [email protected] OooCon 2006 Lyon, France

Upload: others

Post on 02-Jan-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

September 19, 2006

Spreadsheet CompatibilityBackwards, Forwards, and Sideways

Jody [email protected] 2006Lyon, France

Page 2: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

2

Spreadsheet Compatibility

Interesting• Calculation – Reproducability– Provide clear warnings when results may differ

Uninteresting (for this talk)• Visual fidelity• User Interface• Organizational Tools• Scripting

Page 3: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

3

Why is this Interesting

Blocks migration• User's usually have existing data

Increases error rates• Error rates are relatively constant at 5% of cells• Complex or unfamiliar systems will triple that

Page 4: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

4

Why People Will Pay

“Spreadsheets should be treated as software applications in their own right.”

Price Waterhouse Regulatory Guide

Financial RegulatorsSOX 302 & 404

Pharmaceutical RegulatorsTitle 21 part 11

Page 5: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

5

Types of incompatibility

Easy• Bounds

– Floating Point– Grid Size

• Versioning– Application

– 3rd Party extensions

Hard• Workbook Functions• Formula Interpreter

Page 6: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

6

Floating Point

Precision• single• double• quad

CPU• Between Vendors– Intel vs AMD

• Different Modes– ARM 'Vector Floating Point' (hard & soft)– ARM 'Floating Point Accelerator' (hard & soft)

Page 7: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

7

Grid Size

Name Wrapping• Named range with a relative referenceeg 'A1' created in B1 and evaluated in A2

Full Row/Column references=COUNTBLANK(B:B)

A1 style addresses conflict with useful names• Column 1000, Row 1 = ALL1• Column 8509, Row 2 = LOG2• Column 364239 = TRUE– A non-issue for ODF ⅓ because it is smart enough to mark references

– [.LOG2]

– ⅓ because ODF does not support full column refs yet– ⅓ because ODF does no support literal booleans fully yet

Page 8: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

8

Application Versioning

Most formats contain version tag• Most are limited to integer versioning• Some also differentiate from a family of implementations

No central registry• Simple with a single application to know what changed

between versions• Almost impossible to know what change for other

implementations or architectures

Dangerous• Enough version info provides an attack vector

Page 9: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

9

Addin Versioning

A common idiom• Do not trust functions in spreadsheet• Use calc as deployment platform for custom analytics

Stored Values• Allow external tools to check generating addin

Page 10: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

Solutions for Easy Problems

Page 11: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

11

Goals and Tools

Goals• Do not need to solve the problems• Know when something might change

– avoid false positives

• Provide reasonable warnings of where to look for changes

Tools• Use existing file format

– Adapt existing tags when possible– No format provides the full set of detail

• Add additional data– Requires standards approval in some cases, impossible in others– Keep set to a minimum.

Page 12: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

12

XML Formats

ODF and XLSX• XML based

– 3rd party tools are likely to parse the results

• Easy to Extend (With standards approval)<characteristics>

<bounds><fp precision=”quad”/>

<grid max-col=”256” max-row=”65535”/>

<bounds/>

<addins><addin name=”foo” version=”id”/>

<addins/>

<characteristics/>

• Fall back on known current details if unspecified• Can get extensions into MS Office Open filters

Page 13: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

13

Binary Formats

XLS• Warn about bounds when generating

– binary format already has hard coded maxima

• Few external tools parse format• Can add additional records

– Only OOo (and other OpenSource spreadsheets) would recognize them– MS Excel ignores the unknown records

Add 'OOOGENERATED' (0x8D0)• an empty biff record to differentiate xls generated by OOo and

MS XL.

Add 'OOOAddinVersion' (0x8D1)• similar to xml record

Page 14: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

14

Types of Compatibility

Backwards• Never change existing behavior• Even if it's broken

Forwards• Ensure that old apps can round trip new constructs

Sideways• Give other implementations enough detail to degrade

gracefully.• Even across file formats.

Page 15: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

15

Function Incompatibilities

Name Conflicts• LOG vs LOG10

Parameter Conflicts• Different signatures– Adding R1C1 support to ADDRESS and INDIRECT

Current xls importer strips the unsupported arguments

and restores them on export

• Extending a function– Adding a parameter– Extending the allowable value for a parameter

Behavior differences• Improving Accuracy• Type Conversion

Page 16: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

16

Why is this difficult ?

Just create a new function for everything• FOO_v2• What could be simpler ?• Backwards becomes simple– Ignoring cost of maintaing multiple copies of functions in-perpetuity

Forward Compatibility• Need fallback mechanism old version does not know about

new name.

Isn't it all being Standardized• ODF formula subcommittee (previously OpenFormula)• OfficeOpen includes partial spec

Page 17: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

17

Don't Forget Sideways

Can we use file format as a flag ?• When loading an xls use XL_FOO• No :-(

Trans-format Roundtripping• OOo(xls)• XL(xls) -> OOo(xls) -> XL(xls)• OOo(xls) -> XL(xls) -> OOo(xls)

Page 18: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

18

Available Tools

ODF• Generator version• A namespace for each expression– “oooc:” The existing name space for 2.0 -> 2.0.3– “of:” 'OpenFormula' namespace now supported in 2.0.4

OfficeOpen (ECMA TC45)• Version of appliction• 'Platform' of application• A plethora of random backwards compatibility flags

Page 19: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

19

Proposed Solution

Add a function Map for behavior changes• Use 'default' names in exported formulas

– Ensures backwards and forwards compat– Newer versions can lookup expected version– Older apps can warn of mismatches in impacted cells

• Use versioned names for signature changes– Too large a change to allow old apps without forcing old apps to know about

the map

Page 20: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

© Novell Inc

20

Summary

ODF Extensions• Function map to completement the baseline versions• Minor additional characteristics tree with details

XLS Extensions• Add 2 new records for characteristics

Page 21: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may
Page 22: Spreadsheet Compatibility - OpenOffice.org · 2020. 11. 16. · Spreadsheet Compatibility Interesting • Calculation –Reproducability –Provide clear warnings when results may

Unpublished Work of Novell, Inc. All Rights Reserved.

This work is an unpublished work of Novell, Inc.

General Disclaimer

This document is not to be construed as a promise by any participating company to develop, deliver, or market a product. Novell, Inc., makes no representations or warranties with respect to the contents of this document, and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. Further, Novell, Inc., reserves the right to revise this document and to make changes to its content, at any time, without obligation to notify any person or entity of such revisions or changes. All Novell marks referenced in this presentation are trademarks or registered trademarks of Novell, Inc. in the United States and other countries. All third-party trademarks are the property of their respective owners.