Contribute » History » Version 42

« Previous - Version 42/46 (diff) - Next » - Current version
Toshi MARUYAMA, 2012-03-16 11:57
add link to new wiki "How to create patch series on Mercurial and Git"


Contribute

Redmine is built and maintained by community volunteers. If you enjoy using Redmine and would like give back to the community, there are several ways to contribute back to the project. Also read the forum thread for some more specific ideas.

Code Related

These require a familiarity with Ruby on Rails development. If you are still new to Rails, Community members can help you if you get stuck with something or have any other questions.

You will need to download a copy of the current development-code. The official code repository is located in Subversion and can be downloaded by following the Download instructions.

A copy of the source is mirrored to Bitbucket (this is maintained by the community) and GitHub (this is maintained by the community), if you would like to use Mercurial and Git for development.

Any questions can be asked in the Forums or to the Development Team on IRC.

Patch checking

Fixing outdated patches so they can apply cleanly to the latest code is very helpful. Many issues will have patches but they will not run on latest version. List of issues with a patch pending

Code documentation

Documenting classes and methods using RDoc will help developers understand how Redmine works better. Once you have a copy of Redmine installed, running rake doc will generate the latest RDoc in doc/app. Patches for methods without documentation or with poor documentation would be helpful and an easy way to contribute. List of documentation issues

Development

Patches to fix bugs or add new features are always appreciated. If you are going to work on a specific issue, make a note in the issue details so the developers will know what you're working on.

Basic process for contributing code:

  1. Make sure you are working on the svn trunk or mercurial default named branch or git master branch.
    Patches are not accepted for stable releases because someone would have to port a patch to trunk first and then port it back to stable (i.e. double the work).
    If you use mercurial, you can use transplant extension or mercurial queues extension .
  2. Redmine has tests (source:trunk/test). Make sure all the existing tests pass. You can check the current build statuses on the Redmine Continuous Integration server. You can run "rake test" for entire tests or "ruby test/unit/issue_test.rb" for an each test. For more details, see source:trunk/doc/RUNNING_TESTS
  3. Add tests to show the new functionality and check for bugs
  4. Post the patch to the issue.
    Do not send a pull request on github.
    If you use Mercurial or Git, you can create patch series.
    See How to create patch series on Mercurial and Git
  5. Ask for feedback from users and developers. Users will want to to apply the patch and try out the new functionality. Developers will want to do a code review and run all of the tests.
  6. Discuss any changes that are proposed and post new patches as needed

Non Code Related

These don't require any software development experience, just time and the desire to help.

User support

Helping out other users in the Forums and the IRC channel (#redmine @ freenode) is always useful. Frequent problems or questions should be brought up so the wiki can be updated to help future users.

Localization support

Translations should be kept up-to-date alongside the development of Redmine. You could provide updates of the translations where necessary or proposed to support Redmines I18n-support. List of Localization and Translation issues

Issue triage

Sometimes issues are reported without all the information needed by a developer. Getting the details of the bug or feature from the reporter and the community will help everyone understand what is needed. If you can also try to reproduce the bug in your own Redmine, adding a note about your Redmine version and the exact steps you took are extremely useful.

Design and User interface

Redmine uses a very basic design and user interface. Any improvements to it including new themes, skinning, or interface adjustments could help every user of Redmine. Get involved with the UI / UX Team. List of User Interface Issues