There are plenty of ways GIMP community allows one to help develop their software. Everything from programming a new feature, to adding documentation and writing tutorials. Focusing on programming and modifying the source code, GIMP uses GIT as their source control,with GNOME foundation to host all the code repositories. GIMP community also uses an IRC channel and a developer mailing list. Once your are ready with your changes you announce them in the channel and the mailing list for them to be known to the developer community. To submit your changes, you will have to create a patch file, send the patch file to bug/enhancement request on Bugzilla or the mailing list. Once the changes are approved they are then merge into the code base and you have become a GIMP contributor. I looked at some of the commits made on the git side of GIMP, specifically this commit, from the looks of it the commit is reviewed and using the mailing list and the patch report, and then pushed onto the main branch.
GIMP development overview : https://www.gimp.org/develop/
The second open source project I looked at was swift. Swift community also allows you to contribute to them in many ways. Again looking into the code development side of contribution. Swift uses a developer emailing list for communication, but mostly Github as their main source of code review and approval. Looking at this pull request, the contributor first documents his changes and a group of verified personal go over them, see if there are any merge conflicts and/or bugs. And approve the pull request to be merged into the main branch.
Swift development overview : https://swift.org/contributing/