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

Add support and stability level definitions #9412

Merged
merged 8 commits into from
Apr 29, 2022

Conversation

jpkrohling
Copy link
Member

Proposal for the definition of the stability and support levels. Once we have this in place, I'll add them to a couple of components to be used as example.

Notes:

  • I thought about adding specific requirements to promote a component from experimental to stable, but in the end, I think code owners should be free to determine when a component is ready to be declared stable
  • In the support levels, there's a mention that the maintainers are ultimately responsible for all components. This deliberately includes vendor-specific ones, as we might be forced to remove vendor-specific components
  • To be proposed in the next step, but wanted to give a heads-up: the individual components could list the code owners, so that users know who to ping in case of problems. So, the support is still provided by the maintainers but specific people (non-maintainers) could be pinged directly.

Fixes #9379

Signed-off-by: Juraci Paixão Kröhling juraci@kroehling.de

@jpkrohling jpkrohling requested review from a team and pmm-sumo April 22, 2022 19:17
@jpkrohling jpkrohling added the Skip Changelog PRs that do not require a CHANGELOG.md entry label Apr 22, 2022
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
@jpkrohling
Copy link
Member Author

I believe I addressed all comments, but there are some discussions pending.

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
@jpkrohling
Copy link
Member Author

Just to make it explicit how I see the lifecycle of a component to be, which would justify the need for only three stability levels:

  • a component is accepted into this repository and development starts. There might be multiple PRs until the component is ready for consumption. This is the "in development" level.
  • once the development has been finished, the component owners make the component available for people to start using it and provide feedback. Real world usage starts here, with people reporting bugs and asking for new features (better observability, new capabilities, ...). This is the "experimental" level.
  • once the component has been in the wild for a while and component owners are confident it is ready for production usage, the component is marked as "stable".

As a user, I'm not sure I see the need for the second stage to be broken down into other stages: the information I need is only whether the component I need is ready for production or not.

@TylerHelmuth
Copy link
Member

As a user, I'm not sure I see the need for the second stage to be broken down into other stages: the information I need is only whether the component I need is ready for production or not.

I tend to agree. Though if the code owners want to breakdown the Experimental stage into more granular levels within their README somewhere else I think that is ok, as long as it is also marked Experimental in all expected places (top of README, any tables somewhere, etc).

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
@TylerHelmuth
Copy link
Member

As a user, I'm not sure I see the need for the second stage to be broken down into other stages: the information I need is only whether the component I need is ready for production or not.

I tend to agree. Though if the code owners want to breakdown the Experimental stage into more granular levels within their README somewhere else I think that is ok, as long as it is also marked Experimental in all expected places (top of README, any tables somewhere, etc).

Reading through the change from Experimental to Alpha/Beta I actually think I've changed my mind. Alpha and Beta are well defined and Stable is still the indicator that "yes, this is good to use in production". As a customer (especially if I am an early adopter) Alpha and Beta will make it easier to decide which "Experimental" components I would feel comfortable using in production. When it was only "Experimental" I would probably have to dig deeper into the community/code to understand how risky it really is.

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
Copy link
Contributor

@pmm-sumo pmm-sumo left a comment

Choose a reason for hiding this comment

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

I left a comment on core distro wording but overall this LGTM

@jpkrohling
Copy link
Member Author

I applies some suggestions but forgot to publish the review comments :-) I have also applied @pmm-sumo's suggestion about the distributions/repositories.

In any case, I think you all have seen the changes already, but I'll give it a few hours for folks to give it a final look.

README.md Outdated Show resolved Hide resolved
README.md Outdated

* **In development**: not all pieces of the component are in place yet and it might not be available as part of any distributions yet. Bugs and performance issues should be reported, but it is likely that the component owners might not give them much attention. Your feedback is still desired, especially when it comes to the user-experience (configuration options, component observability, technical implementation details, ...). Configuration options might break often depending on how things evolve. The component should not be used in production.
* **Alpha**: the component is ready to be used for limited non-critical workloads and the authors of this component would welcome your feedback. Bugs and performance problems should be reported, but component owners might not work on them right away. The configuration options might change often without backwards compatibility guarantees.
* **Beta**: same as Alpha, but the configuration options are deemed stable. While there might be breaking changes between releases, component owners should try to minimize them.
Copy link
Member

Choose a reason for hiding this comment

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

Didn't you propose that Beta can be used in production while config might break? #9412 (comment)

Copy link
Member Author

Choose a reason for hiding this comment

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

I had only the config changes in mind based on previous comments, but we could say that people can have higher confidence in a beta component to run it with more workloads than they'd run with an alpha component. Let me draft something to that effect.

Copy link
Member Author

Choose a reason for hiding this comment

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

A component at this stage is expected to have had exposure to non-critical production workloads already during its Alpha phase, making it suitable for broader usage.

How about this?

Copy link
Member

Choose a reason for hiding this comment

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

I think that wording is good. I like keeping "Stable" as the only place to official say "this is officially GA".

Copy link
Member

@TylerHelmuth TylerHelmuth Apr 28, 2022

Choose a reason for hiding this comment

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

Although now I'm wondering if instead of "Stable: the component is ready to be used in production." we should say something like "Stable: the component is ready for general availability." The former implies no stage before "Stable" should ever be used in production, but there are times Beta could be used, if you want to take some risk. The later implies this component has had a "production" release, thus making it safe to use.

Copy link
Member Author

Choose a reason for hiding this comment

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

Makes sense to me

Copy link
Member Author

Choose a reason for hiding this comment

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

PR updated.

jpkrohling and others added 8 commits April 29, 2022 09:14
Fixes #9379

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
Co-authored-by: Przemek Maciolek <58699843+pmm-sumo@users.noreply.github.com>
Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
@jpkrohling
Copy link
Member Author

Looks like we have a good number approvals, so I'll go ahead and merge this.

@jpkrohling jpkrohling merged commit 033bc94 into open-telemetry:main Apr 29, 2022
djaglowski pushed a commit to djaglowski/opentelemetry-collector-contrib that referenced this pull request May 10, 2022
* Add support and stability level definitions

Fixes open-telemetry#9379

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>

* Addressed first round of comments

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>

* Second review round

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>

* Replace experimental with Alpha, added Beta

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>

* Replace other experimental instances with alpha

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>

* Apply suggestions from code review

Co-authored-by: Przemek Maciolek <58699843+pmm-sumo@users.noreply.github.com>

* Expand beta description, remove redundant paragraph

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>

* Use 'general availability'

Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>

Co-authored-by: Przemek Maciolek <58699843+pmm-sumo@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Skip Changelog PRs that do not require a CHANGELOG.md entry
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Definition of the stability levels to be followed by each component
8 participants