Non trivial changes should be discussed with the project maintainers by opening a Feature Request, clearly explaining rationale, background and possible implementation ideas. Feel free to use to provide code in such discussions.
Work should happen in an open pull request with a WIP label which gives visibility to the development process and provides continuous integration feedback.
The pull request description must be well written and provide the necessary context and background for review. If there's a proposal issue, it must be referenced. When ready, remove the WIP label assign the PR a reviewer who will review your PR.