Bugfixes, basic features, doc improvements, and any other change to the project that is well-defined, of reasonably small scope, and easily tested can be managed through issues and discussion on them. This is the most common way to make contributions to the project. Just follow the community guidelines in this section and you'll be making changes in no time.
Ideas which require a degree of planning and design work should be discussed with the community and maintainers in discussions. There is an idea category that is already used for this. This is to ensure that everyone is on the same page about how something will work before work starts in earnest. Big ideas are awesome, but the hardest work of landing them successfully is in building consensus for how they should fundamentally work.
If you want to build a prototype of something and then present it to the project, we are always open to that. Sometimes a prototype is really the only way to effectively convey a vision. Still, doing this comes with certain risks. It's possible that your big idea is already in the works or in some form in the project already. If you aren't sure, it's always best to start a big idea conversation or approach us on discord to discuss it.
Issues and Assignment
If you are making contributions, it is important to get aligned with the other contributors before spending significant effort. One of the best ways to do this is to have an issue assigned to yourself. It can be frustrating for other developers to work on an issue that is already being solved.