- 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):
- 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.
- which includes:
- com:8080/github-post (for autodoc)
- 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
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
- 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