ChiliProject is not maintained anymore. Please be advised that there will be no more updates.

We do not recommend that you setup new ChiliProject instances and we urge all existing users to migrate their data to a maintained system, e.g. Redmine. We will provide a migration script later. In the meantime, you can use the instructions by Christian Daehn.

Contribute Code

Contents

ChiliProject is written in Ruby on Rails, familiarity with Rails, Ruby, HTML or Javascript is required to help with development. If you are new to Rails and its ecosystem, Community members can help you out if you get stuck or have code-related questions. In addition to strictly code-related matters, the SCM adapters also need tending to, you can help with development if you have advanced or deep knowledge of any of the SCMs ChiliProject supports.

ChiliProject uses git for source control, the central repository for ChiliProject is the ChiliProject repository on GitHub. You can learn more about git from the git homepage and working with git and GitHub from the GitHub Help. ChiliProject development makes heavy use of git forking, branching and merging, things will go smoother if you have a basic understanding of those concepts before beginning to work on code.

Keep track

Any development for ChiliProject must be tied to an issue in ChiliProject to improve communication and avoid work duplication. Report and/or confirm any issue before you start working on it and make sure to notify others about your intention to work on that issue by adding a note with your claim to the issue.

Fork

The canonical and authoritative source for code is the ChiliProject repository on GitHub, all work must be based on the current state of the master branch. Development happens in personal repositories and is later merged into the main repository. The first step before you can work on code is to fork the ChiliProject repository, the preferred way is a fork on GitHub, but you can do it locally too.

If you want to fork on GitHub, make sure you are logged in there, go to the ChiliProject repository and click on the "Fork" button at the upper right of the page. Consult the GitHub help on forking for more information. After forking the project, clone the repository to your computer and add the ChiliProject repository as an additional remote, for example:

git clone git@github.com:your_github_username/chiliproject.git
cd chiliproject
git remote add upstream git://github.com/chiliproject/chiliproject.git

This will add the central ChiliProject repository as the remote called upstream. If you don't want to use GitHub, you can also clone the ChiliProject repository directly:

git clone git://github.com/chiliproject/chiliproject.git

You should now have a directory called chiliproject containing the current version of the master branch.

Branch

Before you create a new branch in your local repository, make sure that your master branch is up-to-date. If you have forked on GitHub and added the ChiliProject repository as the upstream remote as describe above, switch to your master branch and run git pull upstream master. If you have cloned the ChiliProject repository directly, switching to your master branch and running git pull should get you up to speed.

All development for ChiliProject should happen in topic-specific branches in your own repository, the core developers will then pull the changes from there. The branch name should be a descriptive name prefixed by the issue ID. When on the master branch, you can create a new branch off of it, for example for issue 123, by running:

git checkout -b 123-change_background_from_black_to_blue

If you want to work on a bigger bugfix, breaking changes or a new feature, please get in touch with the Development Team to coordinate your efforts and discuss the best way to implement it. Contacting the Development Team early on will also enable you to get early feedback to your planned changes or even to work with one or some of the core developers. Some changes might also require you to start off of the unstable branch instead of the master branch, please check with the Development Team if you are not sure how big your change is and where you should rather start from, consult the branch naming convention for more information.

Code

Code at will, keep a few things in mind though:

  • The code must adhere to our Code Standards,
  • Include tests as necessary,
  • Make sure to not break existing tests,
  • The final code should pass a Code Review.

Don't hesitate to commit often, the result is important and extra commits can be combined or skipped as necessary when merging back into the main tree. If you have questions about any part of the process, for example regarding code style or code quality, ask!

Push

When you are done coding, push your branch to your repository on GitHub. Assuming your GitHub repository is origin and you are on the branch you want to push (123-change_background_from_black_to_blue):

git push origin

Once you've done that, you can visit your new branch on GitHub, send a pull request to the ChiliProject repository (see the GitHub help on pulls for more info), and post the link either to your pull request or to your branch/commit in the corresponding issue in ChiliProject.

If you don't have a GitHub account or don't want to use it, you can also make a patch and attach it to the issue. The patch filename should follow the branch naming convention, assuming you're on the branch 123-change_background_from_black_to_blue, the following command will create a patch file for the difference from this branch to master:

git diff master > 123-change_background_from_black_to_blue.patch

Get feedback

Your changes will now be reviewed by at least one member of the Development Team, several if the changes are big. Please watch the issue in case more information or improvements are needed, and don't delete your branch (either locally or on GitHub) until the issue is closed and the code committed to the main ChiliProject repository.