client-rust/doc/1.0-roadmap.md

4.1 KiB
Raw Permalink Blame History

client-rust 1.0 roadmap

The client-rust project complements the TiKV ecosystem by providing a reliable Rust client. It can be a foundation for implementing clients in other languages. There have been preliminary works in client-py and client-cpp. There are also plans for general-purpose client-java and client-node.

The document describes our plan to push client-rust towards its general availability (1.0).

Deliverable

client-rust 1.0 that

  • enables new users to start using it in 10 mins
  • has been heavily tested under simulated and real workload
  • is easy to use, debug and seek help from documentation
  • is performant
  • supports the most-wanted features: GC, async commit, etc.

Milestones

There are several milestones when we make important progress. We may release new versions with these changes, but it depends. The version numbers are tentative and subject to change.

0.1 - initial release

The initial release that is functional but may be weak in performance and user-friendliness. It supports: raw mode, including CAS transactional mode, including optimistic and pessimistic

0.2 - feature complete

0.2 should be feature complete

  • Region cache
  • Large transaction
  • Async commit
  • (Optional) GC, depending on the progress of the new mechanism

0.3 - user-friendly and high-quality

0.3 should be a relatively mature version. It is easy to use and have fewer bugs.

The tasks include better logging, error handling, compatibility with the Rust async ecosystem, better unit test and integration test.

1.0 - production ready

The gap between 0.3 and 1.0 may include

  • Documentation
  • Test coverage
  • Performance test / benchmark
  • Usability improvement based on user feedback

Estimated Timeline

The timeline is a rough estimate. It is subject to change if we find new issues, underestimate the workload, or have insufficient contributors time.

May 2021

Release 0.1.0

Aug 2021

Release 0.2.0

Oct 2021

Release 0.3.0

Jan 2022

Release 1.0

We will take a relative longer time to let users try the tikv-client, and improve based on their feedback.

Risks

  • Inaccurate estimated workload. Considering the complexity of the client in TiDB, we may underestimate the workload.
  • Lacking staff. Regular contributors include Ziqian Qin and Andy Lok.
  • Too much or too little external contribution - too much means core contributors dont have time to focus on code and design, or that we add too many new features which do not get us to 1.0. Too little means we cant iterate effectively based on user experience.

Tasks

Tasks listed here are collected from https://github.com/tikv/client-rust/discussions/272.

Note: They are preliminary, and we should adapt them according to user feedback.

0.2

0.3

1.0