The pull request easily the best process to emerge around distributed version control systems, themselves easily the best thing to happen to version control, and one of the better things to happen to software development in general. What makes pull requests so powerful is that they make it stupidly easy for software authors to integrate improvements to their code. Moreover, distributed version control makes it stupidly easy for me to just make their code do what I want instead of cajoling them into doing it.
Instead of begging in email lists, forums and bug trackers, trying to keep repositories synced, and sending diffs around, you just:
If your changes don't suck, and the author isn't a knob, you will get your changes integrated. Bonus: an unwritten rule, baked into the infrastructure of the system, is that you're not on the hook to maintain them. We're talking about a one-time effort to irrevocably shape a tiny corner of the world in your image.
Here is a list of open-source software—so far only Perl modules—that I've augmented this way:
output_method function which was in the C API, so I added it.Often the most compelling argument on how software ought to behave is to Just Fix It™ and ship the code. This isn't to say, however, that we should expect that authors should cooperate just because we wrote a patch. Plus, as an assurance that what you've written isn't garbage, and to further abridge the effort on the part of the original author, it is essential to include unit tests that cover your changes.
The inception of collaborative development sites and the pull request has inspired me to don the hat of the open-source developer more often than I had expected. I am finding myself not only gaining materially from doing so, in the form of abridging my paid work, but also having a direct hand in making things better for everybody, which I appreciate.