Skip to content
candera edited this page Jan 25, 2012 · 6 revisions

How We Work

This page is an overview of how ClojureScript One itself is developed. It documents how releases are named and performed and how contributions are integrated.

The purpose of ClojureScript One is to be an example of how best to leverage ClojureScript, and a big part of that is the documentation that ClojureScript One provides. Because of this, we have to be careful not to make changes that would cause the code and the documentation to get out of sync. The process described below will help us to accomplish this.

Releases and Milestones

ClojureScript One does not issue releases in the typical manner. That is, there is no "version 1.0.0" which is then followed by a "version 1.1.0", etc. Rather, we simply tag the master branch of the repository occasionally with something like "r166", which consists of a lower-case r followed by a number derived from git describe. The number will always increase with each successive "release", although it may increase by more than one.

Closely related to this are GitHub milestones. These are visible in the GitHub Issue Tracker, and have names like "M002", which is short for "milestone 2". Milestones are groups of related features that the ClojureScript One team is working towards releasing. They often share a common theme, and are generally tied to a date. If you want to know what the ClojureScript One team is planning on releasing next, just look at the next milestone.

Note that features that are assigned to no milestone may never be worked on. We put a lot of things into the issues list merely as a way to keep track of ideas that people have had. The presence of an issue in the list does not indicate our intention to implement. In contrast, assignment of an issue to a milestone indicates that we plan to work on the issue in the near future, and to release it along with the rest of the work in that milestone.

When it's time to release, we follow the procedures outlined in Release Checklist.

Git Branches

The master branch is intended to reflect the current, stable version of ClojureScript One. It should always be safe for people to check out this branch and work with the code in it. Further, it is this branch that the wiki and website describe.

Work against the next milestone takes place in a branch with the same name as the milestone. For example, work against the M002 milestone takes place in the M002 branch. These branches may not be stable, in that they may contain half-completed features, and may not correspond to the documentation in the wiki or on the website.

Similarly to the code, updates to the wiki will be maintained in a fork of the wiki itself. Only when master is updated with the latest release will the wiki be updated with documentation matching the changes in that release.

Contributing

ClojureScript One welcomes contributions from the community. However, because the master branch is intended to reflect the latest stable version of the project, it is not an appropriate target for pull requests. When sending pull requests, please target them at the pull-requests branch of the project. Pull requests will be merged there, and then merged into the appropriate milestone branch, where they will be tested and documented and eventually merged into master and released.

Clone this wiki locally