The main point of open source is that anyone can send patches to improve projects. This, of course, is very damaging to the Super Ego of the head Cowboy Coder in charge. Usually this means that he has to read patch, analyze it, understand it, and then write a meaningful rejection email.
Or you could just use one of the strategies below. They give you tools to reject any patch with ease.
The Critical Resource
Find any increase in resources (no matter how tiny or contrived) and claim that to be a the most scarce thing in the universe. Then reject due to increased usage.
A sample discussion might go something like this:
- Here’s a patch that adds a cache for recent results making the expensive operation 300% faster.
- This causes an increase in memory usage which is unacceptable.
- The current footprint is 50 MB, this cache only adds less than 10k and the common target machine running this app has 2GB of memory.
- You are too stupid to understand memory optimisation. Go away.
The suffering minority
When faced with a patch that makes things better for 99.9% of the cases and slightly worse for the rest, focus only on the 0.01%. Never comment on the majority. Your replies must only ever discuss the one group you (pretend to) care about.
- I have invented this thing called the auto-mobile. This makes it easier for factory workers to come to work every morning.
- But what about those that live right next to the factory? Requiring them to purchase and maintain auto-mobiles is a totally unacceptable burden.
- No-one is forcing anyone. Every employer is free to obtain their own auto-mobiles if they so choose.
- SILENCE! I will not have you repress my workers!
The Not Good Enough
Think up a performance requirement that the new code does not fulfill. Reject. If the submitter makes a new patch which does meet the requirement, just make it stricter until they give up.
- This patch drops the average time from 100 ms to 30 ms.
- We have a hard requirement that the operation must take only 10 ms. This patch is too slow, so rejecting.
- But the current code does not reach that either, and this patch gets us closer to the requirement.
- No! Not fast enough! Not going in.
The Prevents Portability
Find any advanced feature. Reject based this feature not being widely available and thus increases the maintenance burden.
- Here is a patch to fix issue foo.
- This patch uses compiler feature bar, which is not always available.
- It has been available in every single compiler in the world since 1987.
- And what if we need to compile with a compiler from 1986? What then, mr smartypants? Hmmm?
The Does not Cure World Hunger
This approach judges the patch not on what actually is, but rather what it is not. Think of a requirement, no matter how crazy or irrelevant, and reject.
- This patch will speed up email processing by 4%.
- Does it prevent every spammer in the world from sending spam, even from machines not running our software?
- How dare you waste my time with this kind of useless-in-the-grand-scheme-of-things patch!
The absolute silence
This is arguably the easiest. Never, ever reply to any patches you don’t care about. Eventually the submitter gives up and goes away all by himself.