CAMARA API Maturity Levels - proposal



This is a proposal how CAMARA can re-use project maturity levels of CNCF in API lifecycle management.

Each CAMARA API can have a maturity level of sandbox, incubating, or graduated that reflects the advancements of API specifications process and obligations of the subprojects in the CAMARA Release Management Proces. The โ€œarchivedโ€ status can be added for closed/not-finished specifications.

Here the issue Consider including Alpha and Beta labels to API versionsย #13 is also addressed. Semantic Versioning is related to software development, for API specification it can be referenced as the Best Practice.ย For prerelease identifiers arbitrary strings may be used, "alpha" and "beta" are just common convention.

Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.

For API specifications in early development (before reaching version 1.0.0) ย using these identifiers can be helpful when multiple versions are exposed to developers for testing APIs in their applications.



The proposal can be also related to Readiness Checklist step 6 update proposalย #16.



Sandbox

Sandbox is the initial level for APIs starting development within CAMARA Project.

There are no specific requirements related to API Readiness checklist items for sandbox APIs.



Participation in meta-relase: ย no obligation

If API is included in the meta-release, it must support all the release requirements.



API Version: 0.x.y

The following objects are used in OAS:

version: 0.x.y

...

ย ย ย ย ย  basePath:

ย ย ย ย ย ย ย  default: endpoint/v0alpha . . . /v0alpha1



Incubating

Incubating API should be part of each CAMARA meta-release.

The following API Readiness checklist items should be supported:

No

Deliverables/Criteria

Mandatory

ย Incubatingย  API support

1

API Spec

Y

Y

2

API Implementation

N

N

3

API Documentation

Y

Y

4

User Stories

Y

Y

5

API test cases and documentation

Y

Y

6

Tested by at least 2 operators

Y

N

7

Security review

Y

Y



Participation in meta-relase: ย mandatory

Participation in at least 1 meta-release (as sandbox API) is required to accept it into CAMARA Incubator.

API included in the meta-release must support all the release requirements.



API Version: 0.x.y

The following objects are used in OAS:

version: 0.x.y

...

ย ย ย ย ย  basePath:

ย ย ย ย ย ย ย  default: endpoint/v0beta . . . /v0beta1



Graduated

API is graduated when the release 1.0.0 is reached with all API Readiness checklist mandatory items supported:

No

Deliverables/Criteria

Mandatory

ย Incubatingย  API support

1

API Spec

Y

Y

2

API Implementation

N

Y

3

API Documentation

Y

Y

4

User Stories

Y

Y

5

API test cases and documentation

Y

Y

6

Tested by at least 2 operators

Y

Y

7

Security review

Y

Y



Participation in meta-relase: ย mandatory

API included in the meta-release must support all the release requirements.

If needed the new API release should be prepared for meta-release, but without breaking changes .

New major version (e.g. 1->2) is needed when breaking changes are introduced.



API Version: v.x.yย  ย v>0

The following objects are used in OAS:

version: 1.x.y

...

ย ย ย ย ย  basePath:

ย ย ย ย ย ย ย  default: endpoint/v1



References

Semantic Versioning 2.0.0 https://semver.org/

Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.