|
| 1 | +# JMESPath Enhancement Proposals |
| 2 | + |
| 3 | +Any changes to the JMESPath specification |
| 4 | +(http://jmespath.org/specification.html) must have a JEP (JMESPath Enhancement |
| 5 | +Proposal) which is tracked in this repo. There are implementations of JMESPath |
| 6 | +in over 9 different languages, and we want to make sure that any modifications |
| 7 | +to the spec make sense for all JMESPath libraries. A JEP helps to work through |
| 8 | +the design process for new additions and ensures that the JMESPath community |
| 9 | +has a chance to give feedback before it's officially part of the specification. |
| 10 | + |
| 11 | + |
| 12 | +## Things that need a JEP |
| 13 | + |
| 14 | +Any functionaly change that would require an update to the specification |
| 15 | +(http://jmespath.org/specification.html) requires a JEP. |
| 16 | + |
| 17 | +This includes, but is not limited to: |
| 18 | + |
| 19 | +* New syntax |
| 20 | +* New functions |
| 21 | +* New semantics/functionality |
| 22 | + |
| 23 | +## Things that do not need a JEP |
| 24 | + |
| 25 | +Anything that is specific to a JMESPath library does not need a JEP. You |
| 26 | +should defer to the specific library's contributing guide. This can include |
| 27 | +additional language specific APIs, extension points (e.g. adding custom |
| 28 | +functions), configuration options, etc. |
| 29 | + |
| 30 | +## Guidelines for proposing new features |
| 31 | + |
| 32 | +First, make sure that the feature has not been previously proposed. If it has, |
| 33 | +make sure to reference prior proposals and explain why this new proposal should |
| 34 | +be considered despite similar proposals not being accepted. |
| 35 | + |
| 36 | +Writing a JEP can be a lot of work, so it can help to get initial guidance |
| 37 | +before getting too far. You can chat on the JMESPath gitter channel |
| 38 | +(https://gitter.im/jmespath/chat) to get an initial pulse of a new feature. |
| 39 | + |
| 40 | +You can also create an issue in this repo with a rough proposal |
| 41 | +to get initial high level feedback. Keep in mind that creating |
| 42 | +an issue is only for initial feedback. If you'd like to move |
| 43 | +forward with the proposal you will still need to write a JEP |
| 44 | +and send a pull request (PR). |
| 45 | + |
| 46 | +### Tenets of JMESPath |
| 47 | + |
| 48 | +When proposing new features, keep these tenets in mind. Adhering to |
| 49 | +these tenets gives your proposal a higher likelihood of being accepted: |
| 50 | + |
| 51 | +* JMESPath is not specific to a particular programming language. Avoid |
| 52 | + constructs that are difficult to implement in another language. |
| 53 | +* JMESPath strives to have one way to do something. |
| 54 | +* Features are driven from real world use cases. |
0 commit comments