Replies: 2 comments 14 replies
-
Great document! 👍
|
Beta Was this translation helpful? Give feedback.
11 replies
-
I see in hyper Vision they talk about Non-goals. I think it may also help for OpenDAL VISION. The currently doc already talked about some |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Following up on #5296, which presents a vision but lacks tenets and use cases, making it difficult to reach an agreement. This discussion aims to address that and establish a new foundation for continuing our conversation.
Charter
One Layer, All Storage.
Tenets
Tenets are guiding principles. They guide how decisions are made for the whole project. Ideally, we do all of them all the time. In some cases, though, we may be forced to decide between slightly penalizing one goal or another. In that case, we tend to support those goals that come earlier in the list over those that come later (but every case is different).
0. Open Community
OpenDAL is an open storage library.
OpenDAL is an ASF project governed by the OpenDAL PMC. At ASF, we believe in "Community Over Code" and adhere to the Apache Way. We aim to develop OpenDAL to meet the needs of our community. We do not maintain private versions or include features that aren't useful to others.
For example, OpenDAL prefers to have clear and readable code, as this allows more people in the community to join the development.
1. Reliable Behavior
OpenDAL is a reliable storage library.
Its reliable behavior ensures that users can trust OpenDAL to perform operations on real-world storage services. Wherever possible, OpenDAL enforces this reliable behavior.
For example, OpenDAL performs additional error checks for AWS S3 complete multipart operations, as S3 may return an error in response with a 200 status code, even though this may add extra costs that conflict with "Fast Access.”
2. Fast Access
OpenDAL is a fast storage library.
Its fast access ensures that OpenDAL implements storage support with zero overhead. Users can integrate with OpenDAL without concerns about additional costs. OpenDAL should be as fast as, or faster than, the SDK for any given storage service.
For example, OpenDAL uses Capability to describe the capabilities of different services and adopts native features of those services whenever possible.
3. Object Storage First
OpenDAL is an object storage first library.
OpenDAL does support all storage services, but it is usually optimized for modern storage services. At the time of writing, we can say OpenDAL is object storage first. When designing features, OpenDAL tends to prioritize optimization for object storage.
For example, OpenDAL's Buffer design is primarily optimized for HTTP-based services, helping to reduce extra allocation, in-memory copying, and memory usage.
4. Extensible Architecture
OpenDAL is an extensible storage library.
OpenDAL can be extended to different languages, various backends, and multiple layers. Each of them is independent and does not depend on the others. Users can combine different layers such as metrics, logging, tracing, and retry, and extend their own languages, backends, and layers.
For example, OpenDAL's core never relies on the behavior or dependency of a single layer. Users can stack as many layers as they want on a given operator.
Use Cases
Who are the users of opendal? How would they use opendal?
Infrastructure Builders (databend, risingwave, greptimed, iceberg)
Use Cases:
Primary Concerns:
Application Developers (sccache, vector, rustic)
Use Cases:
Primary Concerns:
Platform Developers (pants, zino, shuttle)
Use Cases:
Primary Concerns:
This documention is inpisred a lot by hyper’s VISION document.
Beta Was this translation helpful? Give feedback.
All reactions