Viktor Fonic edited this page Dec 21, 2017 · 9 revisions

Non-committer’s HOWTO to join our development

If you don’t have direct access to Ruby’s canonical repository, you can still collaborate with us by cloning this repository.

First, clone this repository:

% git clone git://

Next, we recommend that you create your own branch:

% git checkout -b mybranch origin/trunk

A tip here is that Ruby’s canonical repository is maintained using Subversion. origin/trunk is the “edge” branch.

You can edit the checked-out Ruby source code as you like. We prefer small, focused commits. This makes it easier for the Ruby maintainers to understand your contribution and determine where it will fit best into the source. Also take a look at the Redmine wiki, where some rules and manners for the project are pointed out. You might also find Matz’s guide to patch writers to be valuable. Patches that conform to these expectations are those most likely to be merged.

Commit your changes with:

% git commit -a -m 'write a detailed commit log'

Once you think it is OK to merge your branch into upstream/trunk, fork the project. Go to the github project page and click the fork button. Once you have forked, you should have your clone URL like${yournick}/ruby.git. Add that to your repository’s remote:

% git remote add github${yournick}/ruby.git

and push your local branch to your newly-forked respository:

% git push github mybranch

Then send me, shyouhei, a pull request. While I cannot promise that I can accept all pull requests, that depends on your branch’s content of course, if appropriate, I may merge your branch to mine.

Feature requests vs. Bug fixes

Sometimes I might reply to you requesting that you to “send us a feature request”. Some requests are far-reaching and will impact many maintainers’ tasks and goals. In this case the change should be peer-reviewed by the core team. It is simple to do so. Visit and submit a “Tracker: Feature” issue. I can merge your changes once you have persuaded them.

If you are unsure as to which medium is appropriate, don’t hesitate to contact me first. When needed I will redirect you to the Redmine site.

Thank you for wanting to make this language we both love better!

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.