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

Proposal: Operators incubating process #172

Open
OlegDokuka opened this issue Oct 29, 2018 · 1 comment
Open

Proposal: Operators incubating process #172

OlegDokuka opened this issue Oct 29, 2018 · 1 comment
Assignees
Labels
type/enhancement A general enhancement

Comments

@OlegDokuka
Copy link
Contributor

OlegDokuka commented Oct 29, 2018

Operators Incubating proposal

In many cases, we can't have an ability to include a "nice to have" operator into the reactor-core library. However, such operators could make sense for some use-cases, and many of the Reactor's users could find it use-full as well. Therefore this issue is about creating an incubation process which allows to include any use-full operator in the reactor-extra first and after some incubation period move it to reactor-core or keep it as an add-on feature in the reactor-extra.

The following is a brief description of how the incubation process can look like and the main intent of this issue is to start a discussion and make final decision after all.

Incubating process

In order to understand whether the operator is useful or not we have to have a specific incubation process which MUST include the following steps:

  1. Create Issue
    Title must include Operator name and starts with Incubation Proposal. For example:

    Incubation Proposal: SwitchTransformFlux

    Content must include the purpose of the operator, at least one use-case that will be useful for a wide audience. For example:

    Purpose: Can transform flux based on the first element of the stream...
    Use-case Elements Routing based on the first element in the stream...

  2. Discussion follow-up and voting process which might be exposed as issue liking, etc.

  3. Providing PR with the reference implementation.

    Note, the implementation must include @Incubation marker annotation and should sit in the reactor-extra module under the reactor.incubator package.

Prerequisites

There are a few prerequisites in order to enable the incubating process feature.

  1. Set of annotation in the reactor-extra reactor.incubation.annotation package. Annotation should include @Incubation, @Beta, @Stabel/@CoreCandidate

    Where:

    • @Incubation means that at this point it is unclear whether this operator will be included either into extra or into core libraries.
    • @Beta means that this operator will be included into either extra or core libraries
    • @Beta + @CoreCadidate means that this operator will eventually be moved to the core library, so anyone who uses annotated operator should be ready for migration to core counterpart
    • @Stable means that this operator is going to be a part of the extra library and anyone can safely use it from there without any expectation for moving from the extra to the core.
  2. Set of labels that indicates the state of incubation in the issue tracker:

Proposal -> Incubation -> Beta -> Beta + Core Candidate -> Movement to Core + Issue closing
_____________________________________ -> Stable + Issue closing

@OlegDokuka OlegDokuka added the type/enhancement A general enhancement label Oct 29, 2018
@OlegDokuka OlegDokuka self-assigned this Oct 29, 2018
@OlegDokuka
Copy link
Contributor Author

cc/ @simonbasle @smaldini

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/enhancement A general enhancement
Projects
None yet
Development

No branches or pull requests

1 participant