- What problem are you trying to solve? Prior to any patch you should have a problem statement, and it should be included in the description of the patch?.
- Have you vetted your idea with the community? Please discuss on either the dev or clojure-dev list before your write your patch, and include a link to the discussion. (Not necessary for trivial patches like typos.)
- Which patch is which? As tickets grow, make sure you document clearly which patch(es) are active? . Don't do this be deleting old patches, just refer to patches by name in the comments.
- How will you prove to others your patch works? Plan to include tests. Example-based tests are ok, but generative tests are preferred.
- Don't do too much! Submit small patches that address specific problems, don't add anything extra, even (especially!) "cleanup" of nearby code.
- List the tradeoffs. What other approaches did you consider, and why is the approach you selected best?
- Keep the description up-to-date as comments come in. It is very time-consuming to reconstruct the current state of a ticket by reading the comment thread.