In this case, I wanted to make some additions to the excellent PDF Presenter Console (made by the talented @jakobwesthoff). All my presentation slides are PDF, and this is a great tool for presenting them as it shows you some timings and the upcoming slide etc. I needed to add support for when you use two screens but they are mirrored (I do this when I'm teaching, so I can easily demo without trying to look over my shoulder when I type!), and also the ability to jump to a specific slide when you start the presentation - my courses can be days long, and it's slow to click through hundreds of slides.
I was very proud when I made my changes, but that's not the moral of the story. I consider myself a good open source citizen so I separated my features into branches and opened pull requests against the upstream project. When I looked closer, there were some excellent features waiting in the pull request queue. One of them, the ability to log what time the slide transitions occurred when you are giving a presentation, I actually grabbed and merged into my own repo (I have no idea what other tools I'd need to reconcile a PDF of slides against an audio recording, answers in the comments please if you know because I'd love to be able to!).
On closer inspection, one of the features I just built was already contributed, just not merged. So the moral of the story? Check the pull request queue and/or anywhere else that people might leave patches before you dive in and patch a tool yourself. And the other moral? Open source software rocks; I love that I can add my own 20% to a great product that already delivers the 80% I needed. Thanks to open source contributors everywhere!