Error formatting macro: pagetree: java.lang.NullPointerException

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Started documenting contrib setup process


  • please do not push to the release branches (names like 1.2.x). The Clojure/core team uses these to make the official, tested release.
  • do not take non-contributor patches
  • please do not take pull requests from contributors. Patches only. Yes, it is inconvenient. Sorry.

Here's the process outline for what it takes to become a committer:

  • Get your CA on file
  • Join the clojure-dev mailing list
  • Create a JIRA account
  • Create a Confluence account as well if necessary (with the same login details; in theory they are linked and creating one should create the other but it practice it doesn't seem to work all the time)
  • Let Clojure/core know your github username and JIRA username so they can set up the correct permissions
  • Clojure/core need to create your account on as well - see below

Setting up a new contrib repo on github (thanks to Fogus for documenting this; requires Clojure organization admin privileges):

  • Create a new GitHub repo
    • Specify project name (must be approved by Clojure/core)
    • Specify description
    • Team: Contrib Commit
    • Add Post-Receive URL Service Hook: 

CA, clojure-dev ML, JIRA, Confluence,

# How I set up core.cache

* Create a new GitHub Repo

** Project Name: core.cache

** Description: A caching library for Clojure implementing various cache strategies

** Team: Contrib Commit

** Add Post-Receive URL Service Hook: (for autodoc)

** Disable Issues tab

* Create a new Jira Project

** Name: core.cache

** Key: CCACHE

** Project Lead: Fogus

> Normally Stuart Sierra deals with but I notice that the

> contrib group has push permission to that repo. Would it help

> Clojure/core if we (contrib group members) updated ci_data.clj when a

> new contrib library appeared?

Yes, please. Just follow the format in the rest of that file. I've

already done it for core.memoize and core.cache.

There are 3 more step after that, which require an admin account in


1. Create a user account on Hudson if needed

2. Run the Hudson job

3. Force Hudson to reload its configuration files