Search if a related issue already exists. If it doesn't exist, you can open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
The first thing to do is to fork the repo so that you can make your changes without affecting the original project until you're ready to merge them. Then, you must open a working branch and do the changes. When everything is done, open a pull request (PR) targeting the original repository and add a description that covers all the changes that are being submitted. Don't forget to link the PR with its corresponding issue, if it has one. Enable the checkbox to allow maintainers edits so the branch can be updated for a merge.
You can find new features to be developed in the ROADMAP list. For writing the code and submitting it, you should follow the same procedures described in the previous section (fork the repo, open a PR, etc.).