The first release of a contributed library with a major version number of "1" requires approval by Clojure/core.
In order to be approved for a 1.0.0 release, a contrib library must satisfy the following criteria (work in progress, original list by Stuart Halloway):
- Stability and production use.
- Some amount of time in #1 to get community feedback. (How long?)
- Time and number of installations both factor in here - wide usage seems important to me (Sean).
- Conformance with Clojure idioms.
- In particular: Library Coding Standards.
- Current discussion on ML about 'foo' function / macro delegating to 'foo*' implementation and whether that is idiomatic.
- Careful review to avoid unnecessary dependencies.
- Consensus from previous discussions seems to be:
- Dependence on core is fine.
- Dependence on new contrib is OK if really necessary.
- Dependence on anything else is subject to intense review and challenge.
- Simplicity / Power / Focus.
- This is a bit wooly and will need refinement to help contrib library developers.
- Composability seems a common theme in discussions:
- Prefer functions over macros.
- Prefer explicit arguments over bindings.
- On macros, the Library Coding Standards says to expose a function first and add a macro only where it provides ease-of-use.
- Avoid AOT requirement if at all possible.
- Motivated maintainer.