This document outlines the formal process for proposing and implementing new PPL commands or syntax changes in OpenSearch.
Start by creating a new GitHub issue using the following template:
name: PPL Command request
about: Request a new PPL command Or syntax change
title: '[PPL-Lang]'
labels: 'enhancement, untriaged'
assignees: ''
---
**Is your feature request related to a problem?**
A clear and concise description of what the PPL command/syntax change is about, why is it needed, e.g. _I'm always frustrated when [...]_
**What solution would you like?**
A clear and concise description of what you want to happen.
- Add Example new / updated syntax
- [Optional] Add suggested [ANTLR](https://www.antlr.org/) suggested grammar
**Add Proposal Document**
Under the [docs/planning](../../docs/ppl-lang/planning) folder add a dedicated page for your suggested command or syntax change
See [ppl-fillnull-command.md](../../docs/ppl-lang/planning/ppl-fillnull-command.md) example
**Do you have any additional context?**
Add any other context or screenshots about the feature request here.
Create a Pull Request that adds a new markdown file under the docs/ppl-lang/planning folder
. This document should include:
- Command overview and motivation
- Detailed syntax specification
- Example usage scenarios
- Implementation considerations
- Potential limitations or edge cases
- Community members and maintainers review the proposal
- Feedback is incorporated into the planning document / PR comments
- Proposal is either accepted, rejected, or sent back for revision
Once approved, the command enters the experimental phase:
-
Create implementation PR with:
- Code changes
- Comprehensive test suite
- Documentation updates
-
Code is clearly marked as experimental using appropriate annotations
-
Documentation indicates experimental status
-
Experimental features are disabled by default in production
During the experimental phase:
- Gather user feedback
- Address issues and edge cases
- Refine implementation and documentation
- Regular review of usage and stability
When the command has matured:
- Create PR to remove experimental status
- Update all documentation to reflect stable status
- Ensure backward compatibility
- Merge into main PPL command set
- Follow existing PPL command patterns and conventions
- Ensure comprehensive test coverage
- Provide clear, detailed documentation with examples
- Consider performance implications
- Maintain backward compatibility when possible
- Proposal Review: 1-2 weeks
- Experimental Phase: 1-3 months
- Maturation to Formal Integration: Based on community feedback and stability