Maintaining Backward Compatibility

When planning updates to an existing extension, take care to maintain compatibility with a previously-distributed version of that extension. Some changes will have no adverse effects, some involve a significant risk, and others are known to break compatibility and should be avoided.

Changes With No Risk

The following changes will not affect backward compatibility:

  • adding new Node, ModelOutput, DocumentOutput or InteractiveModelBuilder elements
  • adding new Property definitions and their associated new controls to these elements
  • adding new containers to these elements*
  • adding new values to an existing enumeration property

* Note that any code using these new containers should allow for the fact that these containers will be empty for objects created using the previous version of the extension.

Changes With Significant Risk

Changes to existing declarations carry a significant risk of breaking compatibility. These should be tested carefully before distribution.

Changes to Avoid

The following changes are known to break compatibility and should be avoided:

  • changing the value of the id or providerTag attributes in the ExtensionDetail element
  • changing the value of the id attribute in a Node, ModelOutput, DocumentOutput or InteractiveModelBuilder element
  • removing a Node, ModelOutput, DocumentOutput or InteractiveModelBuilder element from the extension
  • changing the value of the valueType attribute of a Property or PropertyType element