scylladb/scylla-rust-driver

Describe API stability guarantees in README and docs.rs

Lorak-mmk opened this issue · 1 comments

As we move towards 1.0 we must think what the term "API-stability" will mean in our case - as there is a lot of space for maintainers decision left by Rust's guidelines ( https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-default-item )
What we should decide and document:

  • Which possibly-breaking changes from guidelines are we treating as major and which as minor?
  • What is part of the API - what behaviors do we consider stable and which do we not? E.g. uniqueness of targets returned by DefaultPolicy is an example of such behavior.
  • Do we guarantee stability of default config values in SessionBuilder / Query etc? I think we should not.
  • Do we consider all Cargo features provided by crate stable? Or is it possible for them to be removed / replaced (e.g. in the case of dependency features like secrecy08).
  • Supported versions of Scylla and Cassandra. Also, do we consider dropping support for some version a breaking change?
  • How often are we willing to consider releasing a new major version (e.g. not more often than every 3 years). We probably need to include the possibility of bypassing this policy because of breaking change required by new version of Cassandra / Scylla (Tablets is an example of such change).

to consider: exclude plans returned from DefaultPolicy from API stability. Context: #969