This document describes the process for advancing proposals and the voting guidelines followed by the JSON Logic Technical Committee (TC).
A proposal is a formal suggestion or plan introduced to the JSON Logic organization for consideration.
Proposals typically aim to enhance, modify, or clarify JSON Logic functionality.
Within the scope of "JSON Logic Core", we will explore:
- The addition of a limited set of new operators.
- Clarifying the error boundaries for existing operators.
- Clarifying the behavior of operators.
- Parsing semantics.
- Modifiying operators for consistency.
Proposals may also cover things outside of JSON Logic Core. For example,
- Introducing a community extension outside of Core, or operators to an extension.
- Amending organization procedures
Proposals in JSON Logic follow a structured lifecycle consisting of three phases:
- Proposals are introduced to the organization as discussions in the relevant repository.
- Each proposal must include:
- Relevant background and use cases.
- An exploration of potential roadblocks.
- A test suite in the format described here.
- Proposals must adhere to previously ratified proposals, or explicitly supercede them.
- During these phases, proposals will be implemented in a few JSON Logic runtimes, if relevant.
- If significant friction is encountered or reasonable community concerns are raised, the proposal may be pulled back to Phase 0.
- For a proposal to move to Phase 3:
- A predefined number of implementations (to be decided by the TC) must support the proposal.
- The proposal must meet all other acceptance criteria established by the TC.
The TC uses a voting system to decide the advancement of proposals, inspired by https://www.apache.org/foundation/voting.html.
The guidelines are as follows:
- Votes are represented by a range of
[-1..1]
:-1
: Constitutes a veto.[-0..-1)
: Represents non-blocking distaste for a proposal.(0..1]
: Represents a positive vote.
To advance a proposal from Phase 0 to Phase 1:
- Positive Votes: A minimum of three positive votes must be received from TC members.
- Aggregate Vote: The aggregate score of votes must be positive.
- Vetoes: There must be no vetoes (
-1
votes from members of the TC).
Community members are encouraged to cast votes, as their votes will be counted towards the aggregate.
The current TC members are as follows:
GitHub Handle | Name | Background |
---|---|---|
@TotalTechGeek | Jesse Mitchell | Project Maintainer; Initiative Organizer |
@codetiger | Harishankar Narayanan | Project Maintainer; Working on Compat Table |
@gregsdennis | Greg Dennis | Project Maintainer; Active in multiple RFCs |
@toddbaert | Todd Baert | JSON Logic User; OpenFeature TC Member |
@jwadhams | Jeremy Wadhams | JSON Logic Creator |
The JSON Logic TC process is designed to ensure that proposals are thoroughly evaluated and widely supported before being accepted.
By adhering to this structured process, we aim to maintain the stability and reliability of JSON Logic while fostering innovation.