Skip to content

RFC: Capability API#7700

Open
Xuanwo wants to merge 2 commits into
mainfrom
xuanwo/rfc-capability-api
Open

RFC: Capability API#7700
Xuanwo wants to merge 2 commits into
mainfrom
xuanwo/rfc-capability-api

Conversation

@Xuanwo
Copy link
Copy Markdown
Member

@Xuanwo Xuanwo commented Jun 5, 2026

Which issue does this PR close?

N/A. This is an RFC PR; the tracking issue will be created after the RFC is accepted.

Rationale for this change

OpenDAL currently exposes both native_capability() and full_capability() to users, which makes feature availability checks harder to teach and easier to misuse.

This RFC proposes OperatorInfo::capability() as the single user-facing availability API while keeping service-declared capability as an internal boundary for services and layers.

What changes are included in this PR?

This PR adds an RFC for renaming the capability API around effective operator capability and service-declared capability, without introducing a new ServiceCapability type.

Are there any user-facing changes?

No code behavior changes are included in this PR. The RFC proposes future public API changes for Rust and bindings.

AI Usage Statement

AI assistance was used to draft this RFC.

@Xuanwo Xuanwo marked this pull request as ready for review June 5, 2026 10:56
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. releases-note/docs The PR modifies docs related content or has a title that begins with "docs" labels Jun 5, 2026
Copy link
Copy Markdown
Member

@erickguan erickguan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines +252 to +253
- Should `OperatorInfo::native_capability()` be deprecated immediately in all
bindings, or only in Rust first?
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I prefer announcing deprecation firstly and removing code in 1-2 release cycles.

Comment on lines +254 to +255
- Should raw `AccessorInfo::service_capability()` be public within `opendal-core`
or restricted to crate-private APIs where possible?
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Private firstly. The idea of this usage is well considered. We could wait for user feedback.
Let's also document this.

@dosubot dosubot Bot added the lgtm This PR has been approved by a maintainer label Jun 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer releases-note/docs The PR modifies docs related content or has a title that begins with "docs" size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants