Balisage Paper: Versioning fundamentals
David Orchard is senior technical director in BEA Systems' CTO Office, focusing on web and web services standards. He has been elected to a 3rd term on the W3C Technical Architecture Group and is active in numerous standards activities. He is currently or has been a co-editor of various specifications such as SOAP 1.2, WSDL 2.0, WS-Policy, WS-Addressing, WS-ReliableMessaging, WS-Eventing, WS-MetadataExchange, XML Schema, Web Services Architecture, XML Link, XInclude, and SOAP-Conversation.
Active XML vocabularies change over time, undergoing the inevitable evolution called versioning. Versioning means adding, deleting, or changing the elements, element content, number of occurrences, attributes, or attribute values described by an XML schema. Approaches to versioning fall into several classes, including compatible, backwards-compatible, forwards-compatible, and strategy-what-strategy. Specific rules enable the successful use of these strategies, such as the "must ignore unknowns" rule, the "must understand models" rule, and prescriptions for the use of version identifiers. Basic versioning concepts and vocabulary will be illustrated using a set-based model for determining compatibility.