Respecting Backwards Compatibility #16
Replies: 5 comments 6 replies
-
A reminder: https://github.com/orgs/json-logic/discussions/15#discussioncomment-11620756 For this proposal to be accepted by the TC, it needs 3 TC votes (self-votes count for now) and no vetoes. Members of the community are also invited to voice input (we're also looking for another TC seat). If there are objections, then we will try to reach consensus or expand TC involvement. I'm hoping for this decision to be unanimous though. |
Beta Was this translation helpful? Give feedback.
-
(Not a TC member, but nevertheless I've got the following questions:)
|
Beta Was this translation helpful? Give feedback.
-
@TotalTechGeek I advise against requiring a unanimous approval from the TC in favor of a supermajority since it may not be possible to get a response from everyone in a reasonable amount of time. |
Beta Was this translation helpful? Give feedback.
-
Agreeing 100% on not breaking backward compatibility at this point and defining extension categories. We need to also publish extension categories like:
These categorization might give more clarity for users on what it means to use an optional extension or legacy. |
Beta Was this translation helpful? Give feedback.
-
With 3 TC Votes; I believe that makes this "Accepted". We will keep the discussion open for a bit to allow other members of the community to voice thoughts / give TC members time to object. Action item: The .github repo should have a document added to reflect & document this. Issue #6 seems like it would be relevant for this. |
Beta Was this translation helpful? Give feedback.
-
Background
This is the first topic I'd like for @json-logic/tc to address.
Essentially, we've had some extended discussions over the past two weeks with regards to respecting backwards compatibility and the goal of this initiative. Some operators in JSON Logic have been deemed controversial, and are difficult to retrofit with new capabilities.
I believe very strongly that respecting backwards compatibility is necessary to build a stable community and ecosystem, and to give credibility to this initiative.
Because of this, I'd like to propose the following:
Proposal
(We, however, intend to break down the above test suite into smaller collections. As we review each operator.)
* If TC Members have not cast a vote for a week after a supermajority has been reached, the proposal may proceed.
Reasoning
I'd prefer to avoid invalidating all 19 implementations of JSON Logic under this umbrella organization; but we do want to allow JSON Logic to evolve and grow, and address issues many users have encountered.
To avoid fragmenting the ecosystem and harming JSON Logic Core adoption, and to retain community trust, I'd prefer an approach that respects backwards compatibility.
For this reason, I believe it'd be a safer route to deprecate certain operators to a "Legacy" extension, and agree upon replacement operators for the core specification that do not interfere with existing logic.
This will give folks a larger window to create migrations (mapping old operators to new ones), and it should allow for a seamless upgrade.
Out of Scope
Which Operators?
This proposal does not specify which operators will be deprecated to legacy status.
However, some of the current contenders are:
var
missing
missing_some
I believe we may want to replace
var
with aval
operator, which does not embed pathing semantics in a parsed string argument, and instead opts for a more AST-like approach.This would potentially allow for a custom operator like
rfc6901
to be introduced, which would allow forOr more simply
However, the
val
operator is not what is being voted on here.Additional Tests
What is also out of scope are other tests.
If your implementation has additional tests outside of
tests.json
from mainline, that you would like to be incorporated, then we will review those in another proposal 😄Beta Was this translation helpful? Give feedback.
All reactions