Everyone that works with Drupal a lot will notice bugs in the system. Since we have the source code, sometimes we know how to fix them. This is the process to contribute our fixes into Drupal's codebase so that everyone benefits from our findings.
1. Find an issue you think you can tackle.
It can be an existing issue (recommended) or you can create a new one (if you do, make sure it hasn't been reported already).
Additional info: Issue finder
2. Clone the appropriate repo.
Make sure you're on the "dev" branch, e.g. "7.x" (the issue might have been fixed already). This may be either Drupal Core or a specific module.
Additional info: Git instructions for Panelizer module
Fix the issue and test locally. Make sure you follow Drupal's coding standards. Run unit tests if the module provides them.
Additional info: Drupal's coding standards
4. Create a patch
Recommended method: use git (e.g. "git diff 7.x-1.x > [project_name]-[short-description]-[issue-number]-[comment-number].patch"). Make sure the filename contains all the parts.
Additional info: https://drupal.org/node/707484
5. Upload your patch
On the issue page, upload your patch file and set the status to "Needs review".
This will trigger automatic tests on Drupal's servers, and you will get a notice after a couple of hours.
Additional info: https://drupal.org/patch/submit
6. Wait for approval
Wait for the community to approve your patch and include it on the next release!