Skip to end of metadata
Go to start of metadata

Adding a feature to Clojure is not easy, for the following reasons:

  1. A programming language sits at the bottom, and impacts everything else. Rich is extremely conservative in adding new things.
  2. Features need to solve problems. Many things have features, but what problems do they solve? The purpose of this design wiki is to state problems, their possible solutions, and tradeoffs, prior to implementing anything.
  3. The language needs to provide things that can't (or can't easily) be provided elsewhere. Many proposed features are conveniences that should start their lives in libraries, not in the language.
  4. "Good" is not a sufficient reason. What would Clojure look like if every good idea+impl was added as a feature? The community is full of good ideas. Most of them will never be in Clojure.
  5. Vetting, screening, and ok-ing tickets takes a lot of work.  If you spend X hours working on a proposed enhancement, it is reasonable to assume that other contributors will need to spend at least 3X hours reviewing it.

When a suggestion does get included, it may be substantially different from the original proposal.

  1. Sometimes there is a better way to do it, e.g. the problem statement is good but thinking through the design leads to a better approach.
  2. Feature ideas are often complicated, and can be teased apart into simpler components that can be assessed independently.