Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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 build.clojure.org 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 http://clojure.org/contributing for the list) and if they submit a patch. 

...

  • 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 build.clojure.org as well - see below

Setting up a new contrib repo on github (thanks to Fogus for documenting this; 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):
    Create a new GitHub repo
    • Specify project name (must be approved by Clojure/core)
    • Specify description
    • Collaborators - add Team: Contrib Commit
    • Add Post-Receive URL Service Hook: 

CA, clojure-dev ML, JIRA, Confluence, build.clojure.org

# How I set up core.cache

...

    • 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: http://autodoc.infolace.

...

...

    • Disable Issues tab

...

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

Hudson:

1. Create a user account on Hudson if needed

2. Run the build.ci Hudson job

3. Force Hudson to reload its configuration files

    • (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.md - readme
      • /CHANGES.md - changelog
      • /CONTRIBUTING.md - 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 build.ci repo add the new project / update authors (so they can run builds / cut releases)
    • Request on clojure-dev mailing list to run build.ci 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 http://clojure.github.io/
    • Ask Tom Faulhaber to add your new project to the list or it will not appear
  • Performing releases