This is an automated email from the ASF dual-hosted git repository. xuanwo pushed a commit to branch proposal-native-capability in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
commit 6d3fd1470c58832ea46b32f58a0fdac7e868c5a2 Author: Xuanwo <[email protected]> AuthorDate: Fri Aug 11 16:42:47 2023 +0800 Save work Signed-off-by: Xuanwo <[email protected]> --- core/src/docs/rfcs/0000_native_capability.md | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/core/src/docs/rfcs/0000_native_capability.md b/core/src/docs/rfcs/0000_native_capability.md new file mode 100644 index 000000000..2ab94bc31 --- /dev/null +++ b/core/src/docs/rfcs/0000_native_capability.md @@ -0,0 +1,43 @@ +- Proposal Name: (fill me in with a unique ident, `my_awesome_feature`) +- Start Date: (fill me in with today's date, YYYY-MM-DD) +- RFC PR: [apache/incubator-opendal#0000](https://github.com/apache/incubator-opendal/pull/0000) +- Tracking Issue: [apache/incubator-opendal#0000](https://github.com/apache/incubator-opendal/issues/0000) + +# Summary + +Add `native_capability` and `full_capability` for `Operator` so that users can make better decisions. + +# Motivation + +OpenDAL adds `Capability` to let users know whether a service supports a specific feature. However, it is not enough for users to make decisions. But OpenDAL doesn't simply expose services API directly, instead it will try to simulate the behavior to make it more useful. + +For examples, `s3` doesn't support seek operations like local fs. But it's a quiet common operation for users. So OpenDAL will try to simulate the behavior by calculate the correct offset and read the data from the offset instead. After this simulation, `s3` service has `read_can_seek` capability now. + +As another example, most services like `s3` doesn't support blocking operation, OpenDAL implements a `BlockingLayer` to make it possible. After this implementation, `s3` service has `blocking` capability now. + +However, these capabilities alone are insufficient for users to make informed decisions. Take the `s3` service's `blocking` capability as an example. Users are unable to determine whether it is a native capability or not, which may result in them unknowingly utilizing this feature in performance-sensitive scenarios and experiencing significantly poor performance. + + + +# Guide-level explanation + + +# Reference-level explanation + + +# Drawbacks + + +# Rationale and alternatives + + + +# Prior art + + + +# Unresolved questions + + +# Future possibilities +
