Skip to end of metadata
Go to start of metadata

Things you should do if you are a Clojure Contrib committer:

  • maintain your library and respond to questions/issues that arise.
  • do your work on the master branch, or (if you are working on a significant chunk you want to keep temporarily separate) on a feature-specific branch that you create yourself.
  • use the Maven Release option on to make releases.
  • coordinate with other committers before making changes to their libraries.
  • accept contributions from others only if they have signed the CA (see for the list) and if they submit a patch. 

Things to avoid:

  • 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.
  • do not change the version number in pom.xml - use the Maven Release process mentioned above.
  • do not make a 1.0.0 release without full review and approval from Clojure/core!

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 project:

  • Email clojure-dev mailing list to get new project approved and admin privileges in GitHub, Jira, and Hudson.
  • Create a new GitHub repo under the clojure organization (requires Clojure organization admin privileges):
    • Specify project name (must be approved by Clojure/core)
    • Specify description
    • Collaborators - add Team: Contrib Commit which includes:
      • clojure-build - for hudson to tag releases
      • tomfaulhaber - for autodoc hook to commit API to gh-pages branch
    • Add Post-Receive URL Service Hook: (for autodoc)
    • Disable Issues tab (we use JIRA instead)
    • Project structure (see existing projects for example)
      • /project.clj - Leiningen build file - useful for devs but NOT used during build/deploy
      • / - readme
      • / - changelog
      • / - example
      • /epl.html - EPL license information
      • /pom.xml - according to the build.pom instructions - used for build/deploy
      • /src/main/clojure - Clojure sources
      • /src/test/clojure - Clojure tests
      • /src/main/cljs - ClojureScript sources
      • /src/test/cljs - ClojureScript tests
      • /src/main/java - Java sources
  • Create a new JIRA project (requires JIRA admin privileges):
    • Specify name (same as GitHub project name)
    • Specify key (approved by Clojure/core, derived from project name)
    • Specify project lead's JIRA account
    • Edit project to add url and description (same as GitHub project)
    • Set notification scheme - usually "Default scheme plus notify project lead"
  • Setting up builds (requires Hudson admin privileges, except step 2):
    • Create Hudson user account for authors
    • Edit ci_data.clj in the repo add the new project / update authors (so they can run builds / cut releases)
    • Request on clojure-dev mailing list to run Hudson job - this will recreate all Hudson job definition files!
    • Force Hudson to reload its configuration files
  • Autodoc
    • Contrib autodoc is generated based on the post-receive hook mentioned above to
    • Ask Tom Faulhaber to add your new project to the list or it will not appear
  • Performing releases