Skip to content

Commit 24fa268

Browse files
ekexiumandylokandy
andauthored
doc: 1.0 roadmap (#290)
* doc: 1.0 roadmap Signed-off-by: ekexium <[email protected]> * adjust timeline Signed-off-by: ekexium <[email protected]> * doc: describe clients that will be built on top of client-rust Signed-off-by: ekexium <[email protected]> * doc: add the tracking issue of region cache Signed-off-by: ekexium <[email protected]> * doc: add CheckTxnStatus to the tasks Signed-off-by: ekexium <[email protected]> Co-authored-by: Andy Lok <[email protected]>
1 parent ccf8a2c commit 24fa268

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed

doc/1.0-roadmap.md

+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# client-rust 1.0 roadmap
2+
3+
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](https://github.com/tikv/client-py) and [client-cpp](https://github.com/tikv/client-cpp). There are also plans for general-purpose client-java and [client-node](https://github.com/tikv/tikv/issues/10054).
4+
5+
The document describes our plan to push client-rust towards its general availability (1.0).
6+
7+
## Deliverable
8+
9+
client-rust 1.0 that
10+
- enables new users to start using it in 10 mins
11+
- has been heavily tested under simulated and real workload
12+
- is easy to use, debug and seek help from documentation
13+
- is performant
14+
- supports the most-wanted features: GC, async commit, etc.
15+
16+
17+
## Milestones
18+
19+
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.
20+
21+
#### 0.1 - initial release
22+
23+
The initial release that is functional but may be weak in performance and user-friendliness. It supports:
24+
raw mode, including CAS
25+
transactional mode, including optimistic and pessimistic
26+
27+
#### 0.2 - feature complete
28+
29+
0.2 should be feature complete
30+
- Region cache
31+
- Large transaction
32+
- Async commit
33+
- (Optional) GC, depending on the progress of the new mechanism
34+
35+
#### 0.3 - user-friendly and high-quality
36+
37+
0.3 should be a relatively mature version. It is easy to use and have fewer bugs.
38+
39+
The tasks include better logging, error handling, compatibility with the Rust async ecosystem, better unit test and integration test.
40+
41+
#### 1.0 - production ready
42+
43+
The gap between 0.3 and 1.0 may include
44+
- Documentation
45+
- Test coverage
46+
- Performance test / benchmark
47+
- Usability improvement based on user feedback
48+
49+
## Estimated Timeline
50+
51+
The timeline is a rough estimate. It is subject to change if we find new issues, underestimate the workload, or have insufficient contributors’ time.
52+
53+
##### May 2021
54+
Release 0.1.0
55+
56+
##### Aug 2021
57+
Release 0.2.0
58+
59+
##### Oct 2021
60+
Release 0.3.0
61+
62+
##### Jan 2022
63+
Release 1.0
64+
65+
We will take a relative longer time to let users try the tikv-client, and improve based on their feedback.
66+
67+
68+
69+
## Risks
70+
71+
- Inaccurate estimated workload. Considering the complexity of the client in TiDB, we may underestimate the workload.
72+
- Lacking staff. Regular contributors include Ziqian Qin and Andy Lok.
73+
- Too much or too little external contribution - too much means core contributors don’t 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 can’t iterate effectively based on user experience.
74+
75+
76+
----
77+
78+
## Tasks
79+
80+
Tasks listed here are collected from https://github.com/tikv/client-rust/discussions/272.
81+
82+
**Note**: They are preliminary, and we should adapt them according to user feedback.
83+
84+
85+
### 0.2
86+
87+
- https://github.com/tikv/client-rust/issues/299 Add region cache
88+
- https://github.com/tikv/client-rust/issues/209 Use CheckTxnStatus rather than Cleanup
89+
- https://github.com/tikv/client-rust/issues/239 Better experience when "dropping active transaction"
90+
- https://github.com/tikv/client-rust/issues/287 Support 1PC
91+
- https://github.com/tikv/client-rust/issues/189 Support large transaction
92+
- https://github.com/tikv/client-rust/issues/287 Support async commit
93+
94+
### 0.3
95+
96+
97+
- https://github.com/tikv/client-rust/issues/267 Better logging
98+
- https://github.com/tikv/client-rust/issues/284 Test with nemesis and fault injection
99+
- https://github.com/tikv/client-rust/issues/246 Compatibility with any async reactor (don't bind to tokio)
100+
- https://github.com/tikv/client-rust/issues/285 Improve unit test coverage
101+
- https://github.com/tikv/client-rust/issues/286 TiKV version compatibility check
102+
- https://github.com/tikv/client-rust/issues/284 Test with various workload: simulated / real / extreme
103+
104+
### 1.0
105+
106+
107+
- https://github.com/tikv/client-rust/issues/288 Benchmarking script/tool
108+
- https://github.com/tikv/client-rust/issues/283 Parallelize multi-region request
109+
- https://github.com/tikv/client-rust/issues/289 Synchronous API
110+
111+
112+

0 commit comments

Comments
 (0)