Committer How to
How to become a committer
- Send good patches to ruby-core list. Send patches, send patches and send patches. Someday the core team will say "OK, commit it by yourself" and you will be granted commit right.
- Port Ruby to a non-POSIX platform. The core team will grant you to the permission so that you can maintain Ruby for that platform.
- Write a great library. If the core team wanted to add the library to Ruby's standard library, you will be granted the right so that you can maintain it.
- This way is very hard because RubyGems made it easy for users to installing a new library.
What to do for registering you as a committer
Send a mail with the following information to <cvs-admin AT ruby-lang.org>. [ruby-dev:23675], [ruby-dev:24652]
- Your PGP public key.
- Account name you want to use. This is for
- Subversion
- your-account@ruby-lang.org
- Your SSH2 public key.
- Where to forward your mail from your-account@ruby-lang.org
You must sign that mail with PGP. [ruby-dev:25599]
What is necessary
- Development environment for your platform
- Another ruby - 1.9 series of ruby needs a ruby binary to bootstrap itself. (BASERUBY)
- BASERUBY can be Ruby 1.8
- subversion
- SSH client
- GnuPG
- MUA
- IRC client
- autoconf (2.60 or later)
- bison
- (gperf)
- (git)
How to use GPG
How to generate your PGP keys
How to sign a mail with PGP
How to generate your SSH keys
You might already have your keys when you have OpenSSH. See (~/.ssh/id_rsa or ~/.ssh/id_dsa. You can use them if you have.
Otherwise generate one with ssh-keygen(1).
$ ssh-keygen -b 2048 -f ruby_key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): <TYPE SOMETHING> Enter same passphrase again: <TYPE SOMETHING> Your identification has been saved in ruby_key. Your public key has been saved in ruby_key.pub. The key fingerprint is: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX your@hostname
Then you will have your private key ruby_key and public key ruby_key.pub. Keep your private key secret. Pass the public key to the cvs-admin.
IRC
IRC clients
- LimeChat - for win, mac
- XChat (X), XChat-gnome (Gnome)
- riece (Emacs)
IRC proxy bot
What to do after you become a committer
- Always build Ruby outside of
$(srcdir)- e.g. Suppose that there are source codes in /path/to/somewhere/src and building at /path/to/somewhere/obj. Then, at obj, do ../src/configure
- Always build Ruby inside of
$(srcdir)too, using ./configure. - Subscribe to ruby-core and ruby-cvs.
- subscribe to ruby-dev if you read Japanese.
- Sign up to the redmine.
- Sign up with your mail address that you use for sending to ruby-core.
- Tell the mail address to another committer and ask him/her to register you as a developer for Ruby.
- Keep contact to #ruby-core@freenode.
- #ruby:*.jp@ircnet too if you read Japanese.
- Sign up to Coverity.
- Ask how to sign up to another committer at an IRC channel.
- Get your GPG key signed.
- Let other committer sign your key.
- Print your GPG fingerprints on your business card.
What to do when you commit
Consensus
- Never add a new feature or change a spec without discussion on the mailing list nor maintainer's permission.
- Especially on interpreter, VM, GC or such core of core, get matz's approval.
- Feel free to commit trivial changes, e.g. typo fix.
- Gradually learn what needs discussion and what you can commit without discussion.
- Never commit without compiling ruby. Compiling miniruby is not sufficient.
- Do make test too. (better than just building)
- Do make test-all too. (better than just test)
- Do make test-rubyspec too. (better than just test-all)
Contact to a maintainer
- Some libraries are maintained on their own repository. On those libs the ones in the ruby's repository are just copy.
- Send a mail to the maintainer after commit.
- Send a patch to ruby-core and the maintainer instead of committing it directly if possible.
- miniunit
- rdoc
- rubygems
- rake
- soap (1.8)
- wsdl (1.8)
Subversion
- Configuration for subversion
- [ruby-dev:30043] (English)
- Configuration for ssh
- Learn how to use ssh-agent. Don't repeat yourself.
- Read ssh_config(5).
- Branching
- /trunk is for development.
- Each branch for stable versions. (e.g. ruby_1_8, ruby_1_8_7)
- Never commit two or more changesets as one commit.
- Commit log
- Write exactly what you have written in ChangeLog
- Fold by 80 columns (copy from ChangeLog without tabs)
- You can command the Redmine in a commit message.
- svn mail
ChangeLog
GNU Coding Standards : Change Logs
Thu Jan 1 00:00:00 2004 Your Name <yourmail@example.com> * filename (function): short description of this commit. [mailinglist:number]
- Timestamps must be in JST (+09:00), in the style as above.
- Two whitespaces between the timestamp and your name. Two whitespaces between your name and your mail address.
- One blank line between the timestamp and the description.
- Indent the description with TAB.
- Write a entry (*) for each change.
- Refer discussion on the mailing list.
- One blank line between entries.
- Do as other committers do.
- What to write and what need not: [ruby-talk:120515]
- No need for an entry on fixing typo.
- Referring a contributor/reporter.
- Respect contributors [ruby-dev:24936]
- Write one when you are not sure if you should write or not.
Template
Thu Jan 1 03:03:03 2004 Your Name <yourmail@example.com> * filename.c (rb_xxx_yyy): short description of this commit. Fixes [ruby-dev:XXXX]. (rb_zzz_aaa): yet another part. * filename.h (MACRO_NAME): value changed. Thu Jan 1 02:02:02 2004 Your Name <yourmail@example.com> * filename.rb (XXXX#yyyy): short description of this commit. Patch by Foo Bar <foo-bar AT example.org>. Thu Jan 1 01:01:01 2004 Your Name <yourmail@example.com> * filename.c (rb_aaa_bbb): short description of this commit. See [ruby-core:XXX]. Reported by Baz Qux <baz-qux AT example.org>.
RDoc
Writing RDocs is preferred
- RDoc template (Japanese) by arton
- RDoc Documentation
Reference manual
- Object oriented scripting language Ruby - Reference manual (Japanese, frozen)
- Ruby reference manual renewal project (Japanese, under development)
svn:ignore
How to announce
How to announce from ruby-lang.org.
Subversion
svn.ruby-lang.org is automatically synchronized with ci.ruby-lang.org.
Send an email to cvs-admin AT ruby-lang.org for administration request.
FTP
Upload to carbon.ruby-lang.org:/home/ftp/pub/ with SCP.
WWW
- Ask the www team on redmine.
- Send an email to <webmaster AT ruby-lang.org> for administration request.
Redmine
- You can edit any wiki page. (login required)
- Feature request or bug report on redmine
- Send an email to <yugui AT yugui.jp> for administration request.
Servers
- lithium, carbon, boron
- Status
- ci.ruby-lang.org:
- svn (for development. members only)
- svn.ruby-lang.org:
- Anonymous svn: svn.ruby-lang.org
- issue tracking system: redmine.ruby-lang.org
- carbon.ruby-lang.org:
- WWW: www.ruby-lang.org, raa.ruby-lang.org
- FTP: ftp.ruby-lang.org
- Anonymous CVS: cvs.ruby-lang.org
- mailing lists
- boron.rubyist.net:
- WWW: www.rubyist.net
- ci.ruby-lang.org:
- list of elements
Misc
- Tools for compilation
- autoconf (2.60 or later)
- bison
- (gperf)
- (ruby) (building the 1.9 needs ruby)
- Test cases
- Adding test cases (bootstraptest / test)
- Testing test cases
- make test
- make test-all
- "make check" executes both test and test-all.
- Integration with RubySpec
- make update-rubyspec for retrieving specs.
- git required
- make test-rubyspec for checking
- make update-rubyspec for retrieving specs.
- diff format
- unified diff (-u)
- -p
- ViewVC
- ML : ruby-dev, ruby-list, ruby-core, ruby-talk
- commit mail (ruby-cvs)
- IRC channel
- IRCnet: #ruby:*.jp (Japanese)
- freenode: #ruby-core (English)
- CIA Open Source Notification System
- .document
- NEWS
- Add an entry when you add a feature or change a spec.