Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Standardize stability terms #3459

Closed
tigrannajaryan opened this issue Apr 28, 2023 · 17 comments
Closed

Standardize stability terms #3459

tigrannajaryan opened this issue Apr 28, 2023 · 17 comments
Assignees
Labels
spec:miscellaneous For issues that don't match any other spec label

Comments

@tigrannajaryan
Copy link
Member

tigrannajaryan commented Apr 28, 2023

I wonder if we need to settle on some common terminology. We use different terms depending what we talk about, but I am not sure there are good reasons. In some place we use Experimental/Feature Freeze/Stable, some other places Alpha/Beta/Stable, somewhere else Unstable/Beta/Stable.

See https://github.com/open-telemetry/community/blob/main/maturity-matrix.yaml

Should we chose one set of names and stick to it? The meaning of each term can still have contextual nuances.

Related to #3456

@tigrannajaryan tigrannajaryan added the spec:miscellaneous For issues that don't match any other spec label label Apr 28, 2023
@tigrannajaryan
Copy link
Member Author

@open-telemetry/specs-approvers thoughts?

@reyang
Copy link
Member

reyang commented Apr 28, 2023

My personal opinion:

  1. Use alpha/beta/rc/stable across all places (semantic conventions, API/SDK specs, packages, etc.).
  2. Here are my suggestions regarding the semantics:
    • alpha - bleeding edge, normally for insiders to try out some idea, most people should keep away from it (e.g. maintainers are not encouraged to implement these unless explicitly communicated, users are not encouraged to use it).
    • beta - ready for broader preview/dogfooding users, with NO stability guarantee, features might be added/removed/redesigned.
    • rc (release candidate) - step towards stable, no plan to add new feature, certain feature might be removed, things might break although the bar is pretty high.
    • stable
    • deprecated - not encouraged, but still maintained/supported.
    • retired - dead end, don't expect support / security fix / etc.

@tigrannajaryan
Copy link
Member Author

tigrannajaryan commented Apr 28, 2023

For visualization mapped to what we have now:

Proposed by @reyang Current API Spec Current Proto
Alpha Experimental Alpha
Beta ? Beta *
RC Feature Freeze ?
Stable Stable Stable
Deprecated ? ?
Retired ? ?

* we give additional guarantees, e.g. breaking changes no more than once per 3 months

@tigrannajaryan
Copy link
Member Author

  • beta - ready for broader preview/dogfooding users, with NO stability guarantee, features might be added/removed/redesigned.
  • rc (release candidate) - step towards stable, no plan to add new feature, certain feature might be removed, things might break although the bar is pretty high.

The spec is currently formally missing these but we went through similar phases recently with Log Spec stabilization. We should formally capture what we are doing in reality.

@lmolkova
Copy link
Contributor

lmolkova commented May 1, 2023

Collector has similar stability levels, but adds a couple more statuses.

I believe the mapping for them should be:

Proposed by @reyang Current API Spec Current Proto Collector
Alpha Experimental Alpha Development
Beta ? Beta * Alpha
RC Feature Freeze ? Beta
Stable Stable Stable Stable
Deprecated ? ? Deprecated
Retired ? ? ?

There is also Unmaintained status which is similar to Retired, but can be given a new life if a new owner is found.

@dyladan
Copy link
Member

dyladan commented May 2, 2023

Will this terminology also apply across the collector and SDKs? If so, we should see what terminology all SDKs are using as well.

@lmolkova
Copy link
Contributor

lmolkova commented May 2, 2023

Will this terminology also apply across the collector and SDKs? If so, we should see what terminology all SDKs are using as well.

We have "Project Status" section in many OTel SDK repo readmes and "Status and Releases" in template for opentelemetry.io docs.

They seem to be slightly inconsistent: e.g. otel-go already has Frozen status, otel-cpp uses Public release instead of stable(?) and otel-js has Development status.

It seems it'd be beneficial to unify them, but it should not conflict with language idiomatic ways to annotate artifacts (v0, -alpha, -rc, etc).

[update]: here're most of statuses used in SDK/contrib repos, separate from artifact stability annotations:

Proposal API Spec Proto Collector .NET/Java/C++/Python Go JS Spec signal lifecycle PHP Swift Rust
Development - - Development - - Development/Unreleased - - in development not yet implemented
Alpha Experimental Alpha Alpha Experimental - Experimental Experimental alpha experimental alpha
Beta - Beta * Beta - Beta Beta - beta - beta
RC Feature Freeze - - - - ** - - - - -
Stable Stable Stable Stable Stable Stable Stable Stable - Stable -
Deprecated - - Deprecated - - Deprecated Deprecated - - -
Retired - - Unmaintained - - Unmaintained Removed - - -

** OTel Go SIG uses Frozen differently (no PRs accepted, regardless of the feature-work state)- #3459 (comment)

@tigrannajaryan
Copy link
Member Author

@lmolkova did you intend to list Collector's Development in two rows? Can you please clarify? It seems if we only list it once and shift up Alpha and Beta we have more matches:

Proposal Collector
Development Development
Alpha Alpha
Beta Beta
RC -
Stable Stable
Deprecated Deprecated
Retired Unmaintained

@lmolkova
Copy link
Contributor

@tigrannajaryan, good catch! fixed.

@tigrannajaryan
Copy link
Member Author

@lmolkova Thanks! If you are interested there is an OTEP that proposes to align on the levels and terms: open-telemetry/oteps#232

@MrAlias
Copy link
Contributor

MrAlias commented Jul 24, 2023

The Go Frozen status does not mean RC, it means that development work is paused for the signal an no PRs will be accepted.

20230724_101241

https://github.com/open-telemetry/opentelemetry-go#readme

@lmolkova
Copy link
Contributor

I think release candidate and general Golang Frozen are quite similar

Sometimes a package reaches the end of its development cycle and is considered complete. It continues to be maintained, meaning regressions or breakages are fixed, but the scope becomes frozen and no new features are meant to be accepted.

in both cases it means no new features, just bug fixes

@MrAlias
Copy link
Contributor

MrAlias commented Jul 24, 2023

I think release candidate and general Golang Frozen are quite similar

The OTel Frozen status is not equivalent to Golang Frozen. Furthermore, it is not equivalent to RC, there is no candidate to consider for release. No development effort was ever spent on the signal.

@tigrannajaryan
Copy link
Member Author

No development effort was ever spent on the signal.

If I understand correctly it is not a maturity level of a component per se. It is a signal in the repository which says "please don't submit PRs and create work for maintainers in this area for now". Seems like it is somewhat orthogonal concept, not strictly a maturity level.

@MrAlias
Copy link
Contributor

MrAlias commented Jul 25, 2023

No development effort was ever spent on the signal.

If I understand correctly it is not a maturity level of a component per se. It is a signal in the repository which says "please don't submit PRs and create work for maintainers in this area for now". Seems like it is somewhat orthogonal concept, not strictly a maturity level.

Correct 👍

@austinlparker
Copy link
Member

Closed by open-telemetry/oteps#232

@tigrannajaryan
Copy link
Member Author

We need to apply OTEP 0232 to this repo. I filed a new issue to track that work: #4051

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
spec:miscellaneous For issues that don't match any other spec label
Projects
None yet
Development

No branches or pull requests

7 participants