1.6 Versioning and compatibility

The version number is defined in InterfaceVersion::version_number in osi_version.proto as the field’s default value.

Major

A change in the major version makes the code and recorded proto messages incompatible.

Major changes include:

  • An existing field with a number changing its meaning. Example: optional double field = 1; changes to repeated double field = 1;.

  • Changing the definition of units or the interpretation of a field.

  • Deleting a field and reusing the field number.

  • Changing the technology from Protocol Buffers to FlatBuffers.

Minor

A change in the minor version indicates there is still compatibility with previously recorded files. However, the code needs fixing.

Minor changes include:

  • Renaming a field without changing the field number.

  • Changing the names of messages.

  • Adding a new field in a message without changing the numbering of other fields.

Patch

Both recorded files and code still have compatibility.

Patches include:

  • File or folder structure that does not affect integration of the code in other projects.

  • Changing or adding comments.

  • Clarifying text passages explaining the message content.