API Policy#

Ray APIs refer to classes, class methods, or functions. When we declare an API, we promise our users that they can use these APIs to develop their apps without worrying about changes to these interfaces between different Ray releases. Declaring or deprecating an API has a significant impact on the community. This document proposes simple policies to hold Ray contributors accountable to these promises and manage user expectations.

For API exposure levels, see API Stability.

API documentation policy#

Documentation is one of the main channels through which we expose our APIs to users. If we provide incorrect information, it can significantly impact the reliability and maintainability of our users’ applications. Based on the API exposure level, here is the policy to ensure the accuracy of our information.

API Documentation Policy#

Policy/Exposure Level

Stable Public API

Beta Public API

Alpha Public API

Deprecated

Developer API

Must this API be documented?

Yes

Yes

Yes

Yes

Up to the developers

Must a method be annotated with one of the API annotations (PublicAPI, DeveloperAPI or Deprecated)?

Yes

Yes

Yes

Yes

No. The absence of annotations implies the Developer API level by default.

Can this API be private (either inside the _internal module or has an underscore prefix)?

No

No

No

No

No

API Lifecycle Policy#

Users have high expectations for certain exposure levels, so we need to be cautious when moving APIs between different levels. Here is the policy for managing the API exposure lifecycle.

API Lifecycle Policy#

Policy/Exposure Level

Stable Public API

Beta Public API

Alpha Public API

Deprecated API

Developer API

Can this API be promoted to a higher level without any warnings, heads up to users?

Yes

Yes

Yes

No

Yes

Can this API be demoted to a lower level? If so then how?

Can be demoted to Deprecated only. The API should emit warning messages and a deadline for deprecations in 6 months (or +25 ray minor versions).

Can be demoted to Deprecated only. The API should emit warning messages and a deadline for deprecations in 3 months (or +12 ray minor versions).

Users must allow for and expect breaking changes in alpha components, and must have no expectations of stability.

Yes

No annotations mean it is a developer API by default

Can you remove or change this API’s parameters?

Yes. The API should emit warning messages and you must set a deadline for the end-of-life of the original version that is 6 months or +25 Ray minor versions. During the transition period, you must support both the new and old parameters.

Yes. The API should emit warning messages and you must set a deadline for the change in 3 months or +12 Ray minor versions. During the transition period, you must support both the new and old parameters.

Users must allow for and expect breaking changes in alpha components, and must have no expectations of stability.

No

Yes