The phrase "patches welcome" is often used to mean "put up or shut up" or "if you don't like it fix it". Clearly, however, there are projects, such as perl, that rely heavily on patches from a large number of individuals.
Even smaller module sized projects may welcome patches but that hasn't been my experience. I always get a sinking feeling when I see the word patch in the subject line of an email.
I receive about 700 emails a year in relation to Spreadsheet::WriteExcel. Some of them contain patches.
My main problem with patches is that they come unannounced. The sender almost never starts a dialogue beforehand. If the patch is for a bug-fix then I would prefer to see a bug report first. If the patch is for a new feature then I would prefer a chance to discuss if the feature is worthwhile, or how it should be implemented or what effect it will have on other ongoing development.
However, this doesn't happen and instead I often receive patches for bugs that are already fixed or for features that are already implemented. In one particular case I received a patch for a feature that had been in the CPAN version of the module for over a year.
I can see why this happens. As a programmer our first recourse isn't to report a bug or request a feature but to rip the source code open and start changing things. Without a doubt I have done this myself.
I have other problems with patches as well. One is that while people have no problem dispatching code patches they rarely send documentation or tests or offer help with any of the administrative issues. In other words they do the fun part and blissfully ignore the other not-quite-so-fun parts of the software cycle. Nice work if you can get it.
Another issue is with copyright and attribution but I don't really feel strongly about these, despite the SCO vs. Linux debacle.
Perhaps other people feel like this. Perhaps they don't. All I want is a little dialogue. It would take less time than writing a patch.