The first step in the contribution process is to open a ticket. Please do so through JIRA and not through GitHub. This ticket Tickets can be created by anyone with or without a CA, whether or not they have signed a Clojure contributor agreement. It is OK to create a ticket and submit a patch at the same time, but please be aware, if the ticket is later rejected, the time spend spent developing the patch will be lost. Therefore it is recommended that coding on non-trivial patches should be postponed until after the vetting process. One possible advantage to submitting a patch before the ticket is vetted, is that it might be vetted and screened all at once by the screener, if they choose to do that, saving some time.
If you have questions about whether some behavior of Clojure is a bug, or submitting bug reports or enhancement requests, please ask on the clojure Google group.
You need an account on dev.clojure.org in order a Clojure JIRA account to create a ticket. Click on the "Sign upGo to the Clojure JIRA page and click the "Log In" link near the top right of this page to do sothe page, then on the next page click the "sign up" link. If you don't see one, but instead your name instead of a "Log in" link, you 've already got have an account and you are logged signed in.
Qualities of a Great Ticket
- Type: Correct categorization (Defect or Enhancement)
- Summary: concise title
- Exactly one issue (if multiple, split across tickets and link)
- (If Defect) Reproducible demonstration of problem (commands that can be duplicated in a repl are preferred, particularly a plain Clojure repl, not a Leiningen repl), and a description of what you think should happen instead
- (If Enhancement) Statement of the what should be improved
- Links to relevant prior discussion on clojure-dev, IRC, or email thread as appropriate
- Priority: categorize based on impact and whether this is a theoretical issue or one actually encountered in real code
- Labels: (see section below)
Tickets ready for screening should also have:
As work progresses on a ticket, it is common for it to accumulate discussion between submitter, screeners, and patch developers. As this occurs, it is essential to edit the ticket description to stay up to date as a summary of the essential problem, solution approach, and patch. It should not be necessary to read the the full ticket history to evaluate the patch.
The following labels should be used to tag specific categories (sometimes these are useful for searching):
- aot - ahead-of-time compilation bugs
- compiler - Clojure compiler
- checkargs - additional argument checking for functions
- deftype - types
- defrecord - records
- docstring - function docstrings
- documentation - clojure.org docs or other doc-related issues
- edn - EDN
- errormsgs - improving (or sometimes adding) an error message returned by Clojure
- interop - Java interop
- io - clojure.java/io
- math - arithmetic issues - overflow, underflow, etc
- memory - memory issues (GC, head holding, locals clearing, etc)
- performance - make it faster!
- print - print and pprint
- protocols - defprotocol
- reader - reader (either clojure or edn)
- repl - usability on the repl (doc, source, apropos, etc)
- string - clojure.string, subs, etc
- typehints - their definition or application
- walk - clojure.walk
- zip - clojure.zip
DO NOT use these tags:
- bug or enhancement - this is already covered by the issue type
- patch and test - already covered by the patch field