I recently contributed a new Elisp function to the "Files" API of upstream Emacs. Being more than just a typo fix, this threw me into the deepend of their entire dev process. This article explains their mailing-list-based workflow from start to finish in the age of Github and Pull Requests. It was actually pretty smooth!
Keep in mind that if you are just correcting a typo, etc., much of what is written here can be ignored. You could skip right to Sending a Patch Email below.
Until recently, Emacs lacked a function to set or swap the extension of a string that you're handling as a filename. It was important to me that this be done in a sane, checked way that we'd expect from other modern languages, as opposed to just slapping strings together. I initially tried to add this in a PR to Doom Emacs, but it was rejected for a good reason:
I could have patched this, but that would only be useful/discoverable to users of f.el. And so I opted to upstream my code straight to the source: Emacs itself.