There is a middle way: continuous integration quality gates.<p>For projects with a small core team and lots of contributors, you can write tests which analyze the submission for quality. Linting tests, code quality tests, smoke tests, unit tests, functional tests, ChangeLog tests, etc. Each one will halt the PR and inform the user what failed and how to fix it. The user can then gradually improve the quality of their PR until it passes all tests, and <i>then</i> someone will review it.<p>I've used this method on projects before, and both as a contributor and a maintainer, I love it. As a contributor, it is a seamless feedback cycle that tells me how to improve my contribution before I bother anybody. As a maintainer, most contributors just don't put in the effort, so I don't get bothered.<p>You can also put other quality gates in place, like asking someone to sign your contribution agreement, confirming they have read documentation ("what's the secret phrase?") or that their change includes documentation. It takes some work to set up at first, but it really improves productivity and quality.