github.com/m3db/m3@v1.5.1-0.20231129193456-75a402aa583b/COMPATIBILITY.md (about) 1 # Compatibility 2 3 This document describes versioning compatibility guarantees. Any compatibility 4 outlined here will be maintained for at least the current major version. 5 Additional guarantees may be added within the same major version, but existing 6 guarantees may only be modified or removed as part of a major version change. 7 8 If you discover a breaking change, please [open an issue][issue]. 9 10 [issue]: https://github.com/m3db/m3/issues/new 11 12 ## v1.0 13 14 As of version 1.0, m3db/m3 and its components are guaranteed to have **binary**, 15 **configuration**, **wire**, and **transport API** compatibility: 16 17 | Compatibility | Scope | Guarantee | 18 | :------------ | :---- | :-------- | 19 | binary | All released executable components. | All executable components will maintain their current functionality. Components may have *additional* functionality added, but no existing functionality will be changed or removed. | 20 | configuration | All configuration serialization for binary components. | All configuration will maintain serialization compatibility. New configuration properties may be added, but existing properties will not be renamed, removed, re-typed, or changed semantically or behaviorally. | 21 | wire | All on-the-wire encoding for data to/from binary components. | All wire encoding (e.g. Protobuf, Thrift) will maintain wire compatibility. Any changes to IDLs or other encodings will be backwards-compatible. | 22 | transport API | All exposed transport APIs for communication to/from binary components. | All transport APIs (e.g. m3msg, Thrift, HTTP+JSON) will maintain their current surface area, definitions, semantics, and behavior. Any changes to APIs will be additive or done semantically and with wire compatibility. | 23 24 This version does **not** guarantee library-level compatibility. Users are not 25 encouraged to integrate libraries from m3db/m3 directly: use at your own risk.