reactor / reactor-addons

Additional optional modules for the Reactor project
234 stars 82 forks source link

Proposal: Operators incubating process #172

Open OlegDokuka opened 5 years ago

OlegDokuka commented 5 years ago

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:

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

OlegDokuka commented 5 years ago

cc/ @simonbasle @smaldini