CommitterHowto

Version 9 (shyouhei (Shyouhei Urabe), 03/12/2009 09:46 pm)

1 2 yugui (Yuki Sonoda)
= Committer How to
2 1 yugui (Yuki Sonoda)
3 2 yugui (Yuki Sonoda)
== How to become a committer
4 4 yugui (Yuki Sonoda)
* 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.
5 9 shyouhei (Shyouhei Urabe)
* 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.
6 2 yugui (Yuki Sonoda)
* 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.
7 4 yugui (Yuki Sonoda)
  * This way is very hard because RubyGems made it easy for users to installing a new library.
8 2 yugui (Yuki Sonoda)
9 9 shyouhei (Shyouhei Urabe)
== What to do for registering you as a committer
10 2 yugui (Yuki Sonoda)
Send a mail with the following information to <cvs-admin AT ruby-lang.org>. [[ruby-dev:23675]], [[ruby-dev:24652]]
11 2 yugui (Yuki Sonoda)
* Your GPG public key.
12 2 yugui (Yuki Sonoda)
* Account name you want to use. This is for
13 2 yugui (Yuki Sonoda)
  * Subversion
14 2 yugui (Yuki Sonoda)
  * ((|your-account|))@ruby-lang.org
15 2 yugui (Yuki Sonoda)
* Your SSH2 public key.
16 9 shyouhei (Shyouhei Urabe)
* Where to forward your mail from ((|your-account|))@ruby-lang.org
17 2 yugui (Yuki Sonoda)
18 9 shyouhei (Shyouhei Urabe)
You must sign that mail with GPG. [[ruby-dev:25599]]
19 2 yugui (Yuki Sonoda)
20 9 shyouhei (Shyouhei Urabe)
== What is necessary
21 2 yugui (Yuki Sonoda)
* Development environment for your platform
22 9 shyouhei (Shyouhei Urabe)
* Another ruby - 1.9 series of ruby needs a ruby binary to bootstrap itself. (BASERUBY)
23 2 yugui (Yuki Sonoda)
  * BASERUBY can be Ruby 1.8
24 2 yugui (Yuki Sonoda)
* subversion
25 2 yugui (Yuki Sonoda)
* SSH client
26 2 yugui (Yuki Sonoda)
* GnuPG
27 2 yugui (Yuki Sonoda)
* MUA
28 2 yugui (Yuki Sonoda)
* IRC client
29 2 yugui (Yuki Sonoda)
* autoconf (2.60 or later)
30 2 yugui (Yuki Sonoda)
* bison
31 2 yugui (Yuki Sonoda)
* (gperf)
32 2 yugui (Yuki Sonoda)
* (git)
33 2 yugui (Yuki Sonoda)
34 8 yugui (Yuki Sonoda)
=== How to use GPG
35 2 yugui (Yuki Sonoda)
How to generate your GPG keys
36 7 yugui (Yuki Sonoda)
* ((<URL:http://www.gnupg.org/>))
37 2 yugui (Yuki Sonoda)
38 2 yugui (Yuki Sonoda)
How to sign a mail with GPG
39 9 shyouhei (Shyouhei Urabe)
* ((<EnigMail|URL:https://addons.mozilla.org/en-US/thunderbird/addon/71>)) for Thunderbird
40 2 yugui (Yuki Sonoda)
* ((<GPGMail|URL:http://www.sente.ch/software/GPGMail/English.lproj/GPGMail.html>)) for Apple Mail.app
41 2 yugui (Yuki Sonoda)
42 8 yugui (Yuki Sonoda)
=== How to generate your SSH keys
43 9 shyouhei (Shyouhei Urabe)
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.
44 2 yugui (Yuki Sonoda)
45 9 shyouhei (Shyouhei Urabe)
Otherwise generate one with ssh-keygen(1).
46 2 yugui (Yuki Sonoda)
 $ ssh-keygen -b 2048 -f ruby_key
47 2 yugui (Yuki Sonoda)
 Generating public/private rsa key pair.
48 3 yugui (Yuki Sonoda)
 Enter passphrase (empty for no passphrase): <TYPE SOMETHING>
49 3 yugui (Yuki Sonoda)
 Enter same passphrase again: <TYPE SOMETHING>
50 2 yugui (Yuki Sonoda)
 Your identification has been saved in ruby_key.
51 2 yugui (Yuki Sonoda)
 Your public key has been saved in ruby_key.pub.
52 2 yugui (Yuki Sonoda)
 The key fingerprint is:
53 2 yugui (Yuki Sonoda)
 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX your@hostname
54 2 yugui (Yuki Sonoda)
55 2 yugui (Yuki Sonoda)
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.
56 2 yugui (Yuki Sonoda)
57 8 yugui (Yuki Sonoda)
=== IRC
58 2 yugui (Yuki Sonoda)
IRC clients
59 2 yugui (Yuki Sonoda)
* ((<LimeChat|URL:http://limechat.net/>)) - for win, mac
60 2 yugui (Yuki Sonoda)
* XChat (X), XChat-gnome (Gnome)
61 9 shyouhei (Shyouhei Urabe)
* riece (Emacs)
62 2 yugui (Yuki Sonoda)
63 2 yugui (Yuki Sonoda)
IRC proxy bot
64 2 yugui (Yuki Sonoda)
* ((<Nadoka|URL:http://www.atdot.net/nadoka/nadoka.en.html>))
65 2 yugui (Yuki Sonoda)
* ((<Tiarra|URL:http://www.clovery.jp/tiarra/>))
66 2 yugui (Yuki Sonoda)
67 5 yugui (Yuki Sonoda)
== What to do after you become a committer
68 2 yugui (Yuki Sonoda)
* Always build Ruby outside of (({$(srcdir)}))
69 2 yugui (Yuki Sonoda)
  * 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%))
70 2 yugui (Yuki Sonoda)
* Always build Ruby inside of (({$(srcdir)})) too. It is, do ((%./configure%)).
71 2 yugui (Yuki Sonoda)
* Subscribe ruby-core and ruby-cvs.
72 2 yugui (Yuki Sonoda)
  * subscribe ruby-dev too if you read Japanese.
73 2 yugui (Yuki Sonoda)
* Sign up to the redmine.
74 2 yugui (Yuki Sonoda)
  * Sign up with your mail address which you uses for sending to ruby-core.
75 2 yugui (Yuki Sonoda)
  * Tell the mail address to another committer and ask him/her. Then (s)he will register you as a developer for [[project:Ruby].
76 2 yugui (Yuki Sonoda)
* Keep contact to #ruby-core@freenode.
77 2 yugui (Yuki Sonoda)
  * #ruby@ircnet:*.jp too if you read Japanese.
78 2 yugui (Yuki Sonoda)
* Sign up to ((<Coverity|URL:http://scan.coverity.com/>)).
79 2 yugui (Yuki Sonoda)
  * Ask how to sign up to another committer at an IRC channel.
80 9 shyouhei (Shyouhei Urabe)
* Get your GPG key signed.
81 9 shyouhei (Shyouhei Urabe)
  * Let other committer sign your key.
82 9 shyouhei (Shyouhei Urabe)
  * Print your GPG fingerprints on your business card.
83 1 yugui (Yuki Sonoda)
84 5 yugui (Yuki Sonoda)
== What to do when you commit
85 5 yugui (Yuki Sonoda)
=== Consensus
86 9 shyouhei (Shyouhei Urabe)
* Never add a new feature or change a spec without discussion on the mailing list nor [[Maintainers|maintainer]]'s permission.
87 9 shyouhei (Shyouhei Urabe)
* Feel free to commit trivial changes, e.g. typo fix.
88 9 shyouhei (Shyouhei Urabe)
* Gradually learn what needs discussion and what you can commit without discussion.
89 9 shyouhei (Shyouhei Urabe)
* Never commit without compiling ruby.  Compiling miniruby is not sufficient.
90 9 shyouhei (Shyouhei Urabe)
  (1) Do ((%make test%)) too. (better than just building)
91 9 shyouhei (Shyouhei Urabe)
  (2) Do ((%make test-all%)) too. (better than just test)
92 9 shyouhei (Shyouhei Urabe)
  (3) Do ((%make test-rubyspec%)) too. (better than just test-all)
93 5 yugui (Yuki Sonoda)
94 9 shyouhei (Shyouhei Urabe)
=== Contact to a maintainer
95 9 shyouhei (Shyouhei Urabe)
* Some libraries are maintained on their own repository. On those libs the ones in the ruby's repository are just copy.
96 5 yugui (Yuki Sonoda)
  * Send a mail to the maintainer after commit.
97 5 yugui (Yuki Sonoda)
  * Send a patch to ruby-core and the maintainer instead of committing it directly if possible.
98 5 yugui (Yuki Sonoda)
99 5 yugui (Yuki Sonoda)
* miniunit
100 5 yugui (Yuki Sonoda)
* rdoc
101 5 yugui (Yuki Sonoda)
* rubygems
102 5 yugui (Yuki Sonoda)
* rake
103 5 yugui (Yuki Sonoda)
* soap (1.8)
104 5 yugui (Yuki Sonoda)
* wsdl (1.8)
105 5 yugui (Yuki Sonoda)
106 9 shyouhei (Shyouhei Urabe)
=== Subversion
107 9 shyouhei (Shyouhei Urabe)
* Configuration for subversion
108 5 yugui (Yuki Sonoda)
  * [[ruby-dev:30043]] (English)
109 9 shyouhei (Shyouhei Urabe)
* Configuration for ssh
110 9 shyouhei (Shyouhei Urabe)
  * Learn how to use ssh-agent.  Don't repeat yourself.
111 9 shyouhei (Shyouhei Urabe)
  * Read ssh_config(5).
112 9 shyouhei (Shyouhei Urabe)
* Branching
113 9 shyouhei (Shyouhei Urabe)
  * /trunk is for development.
114 9 shyouhei (Shyouhei Urabe)
  * Each branch for stable versions. (e.g. ruby_1_8, ruby_1_8_7)
115 9 shyouhei (Shyouhei Urabe)
* Never commit two or more changesets as one commit.
116 9 shyouhei (Shyouhei Urabe)
* Commit log
117 9 shyouhei (Shyouhei Urabe)
  * Write exactly what you have written in ((%ChangeLog%))
118 5 yugui (Yuki Sonoda)
  * You can command the Redmine in a commit message.
119 5 yugui (Yuki Sonoda)
    * [[redmine:Wiki]]
120 5 yugui (Yuki Sonoda)
* svn mail
121 5 yugui (Yuki Sonoda)
  * [[redmine:MailingList]]
122 5 yugui (Yuki Sonoda)
123 5 yugui (Yuki Sonoda)
=== ChangeLog
124 5 yugui (Yuki Sonoda)
((<GNU Coding Standards : Change Logs|URL:http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs>))
125 5 yugui (Yuki Sonoda)
126 5 yugui (Yuki Sonoda)
 Thu Jan  1 00:00:00 2004  Your Name  <yourmail@example.com>
127 5 yugui (Yuki Sonoda)
 
128 5 yugui (Yuki Sonoda)
 	* filename (function): short description of this commit.
129 5 yugui (Yuki Sonoda)
 	  [mailinglist:number]
130 5 yugui (Yuki Sonoda)
131 9 shyouhei (Shyouhei Urabe)
* Timestamps must be in JST (+09:00), in the style as above.
132 9 shyouhei (Shyouhei Urabe)
* Two whitespaces between the timestamp and your name. Two whitespaces between your name and your mail address.
133 5 yugui (Yuki Sonoda)
* One blank line between the timestamp and the description.
134 5 yugui (Yuki Sonoda)
* Indent the description with TAB.
135 5 yugui (Yuki Sonoda)
* Write a entry (*) for each change.
136 5 yugui (Yuki Sonoda)
* Refer discussion on the mailing list.
137 5 yugui (Yuki Sonoda)
* One blank line between entries.
138 5 yugui (Yuki Sonoda)
* Do as other committers do.
139 9 shyouhei (Shyouhei Urabe)
* What to write and what need not: [[ruby-talk:120515]]
140 9 shyouhei (Shyouhei Urabe)
  * No need for an entry on fixing typo.
141 9 shyouhei (Shyouhei Urabe)
  * Referring a contributor/reporter.
142 5 yugui (Yuki Sonoda)
    * Respect contributors [[ruby-dev:24936]]
143 9 shyouhei (Shyouhei Urabe)
  * Write one when you are not sure if you should write or not.
144 5 yugui (Yuki Sonoda)
145 5 yugui (Yuki Sonoda)
==== Template
146 5 yugui (Yuki Sonoda)
 Thu Jan  1 03:03:03 2004  Your Name  <yourmail@example.com>
147 5 yugui (Yuki Sonoda)
 
148 5 yugui (Yuki Sonoda)
 	* filename.c (rb_xxx_yyy): short description of this commit.
149 5 yugui (Yuki Sonoda)
 	  Fixes [ruby-dev:XXXX].
150 5 yugui (Yuki Sonoda)
 	  (rb_zzz_aaa): yet another part.
151 5 yugui (Yuki Sonoda)
  
152 5 yugui (Yuki Sonoda)
 	* filename.h (MACRO_NAME): value changed.
153 5 yugui (Yuki Sonoda)
 
154 5 yugui (Yuki Sonoda)
 Thu Jan  1 02:02:02 2004  Your Name  <yourmail@example.com>
155 5 yugui (Yuki Sonoda)
 
156 5 yugui (Yuki Sonoda)
 	* filename.rb (XXXX#yyyy): short description of this commit.
157 5 yugui (Yuki Sonoda)
 	  Patch by Foo Bar <foo-bar AT example.org>.
158 5 yugui (Yuki Sonoda)
 
159 5 yugui (Yuki Sonoda)
 Thu Jan  1 01:01:01 2004  Your Name  <yourmail@example.com>
160 5 yugui (Yuki Sonoda)
 
161 5 yugui (Yuki Sonoda)
 	* filename.c (rb_aaa_bbb): short description of this commit.
162 5 yugui (Yuki Sonoda)
 	  See [ruby-core:XXX].
163 5 yugui (Yuki Sonoda)
 	  Reported by Baz Qux <baz-qux AT example.org>.
164 5 yugui (Yuki Sonoda)
165 5 yugui (Yuki Sonoda)
=== RDoc
166 9 shyouhei (Shyouhei Urabe)
Writing RDocs is preferred 
167 5 yugui (Yuki Sonoda)
168 5 yugui (Yuki Sonoda)
* ((<RDoc template|URL:http://arton.no-ip.info/collabo/backyard/?RDoc%A4%CE%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8>)) (Japanese) by arton
169 5 yugui (Yuki Sonoda)
* ((<RDoc Documentation|URL:http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/files/rdoc/README.html>))
170 5 yugui (Yuki Sonoda)
171 5 yugui (Yuki Sonoda)
=== Reference manual
172 5 yugui (Yuki Sonoda)
* ((<Object oriented scripting language Ruby - Reference manual|URL:http://www.ruby-lang.org/ja/man/>)) (Japanese, frozen)
173 5 yugui (Yuki Sonoda)
* ((<Ruby reference manual renewal project|URL:ttp://doc.loveruby.net/refm/api/view/index>)) (Japanese, under development)
174 5 yugui (Yuki Sonoda)
175 5 yugui (Yuki Sonoda)
=== svn:ignore
176 5 yugui (Yuki Sonoda)
177 5 yugui (Yuki Sonoda)
178 5 yugui (Yuki Sonoda)
== How to announce
179 5 yugui (Yuki Sonoda)
How to announce from ruby-lang.org.
180 5 yugui (Yuki Sonoda)
181 5 yugui (Yuki Sonoda)
=== Subversion
182 5 yugui (Yuki Sonoda)
svn.ruby-lang.org is automatically synchronized with ci.ruby-lang.org.
183 5 yugui (Yuki Sonoda)
184 5 yugui (Yuki Sonoda)
Send an email to svn-admin AT ruby-lang.org for administration request.
185 5 yugui (Yuki Sonoda)
186 5 yugui (Yuki Sonoda)
=== FTP
187 5 yugui (Yuki Sonoda)
Upload to carbon.ruby-lang.org:/home/ftp/pub/ with SCP.
188 5 yugui (Yuki Sonoda)
189 5 yugui (Yuki Sonoda)
=== WWW
190 5 yugui (Yuki Sonoda)
* Ask the www team on ((<redmine|URL:http://redmine.ruby-lang.org/projects/show/www>)).
191 5 yugui (Yuki Sonoda)
* Send an email to webmaster AT ruby-lang.org for administration request.
192 5 yugui (Yuki Sonoda)
193 5 yugui (Yuki Sonoda)
=== Redmine
194 5 yugui (Yuki Sonoda)
* You can edit any wiki page. (login required)
195 9 shyouhei (Shyouhei Urabe)
* Feature request or bug report on ((<redmine|URL:http://redmine.ruby-lang.org/projects/show/redmine>))へ
196 5 yugui (Yuki Sonoda)
* Send an email to yugui AT yugui.jp for administration request.
197 5 yugui (Yuki Sonoda)
198 5 yugui (Yuki Sonoda)
=== Servers
199 5 yugui (Yuki Sonoda)
* lithium, carbon, boron
200 5 yugui (Yuki Sonoda)
* Status
201 5 yugui (Yuki Sonoda)
  * ci.ruby-lang.org:
202 5 yugui (Yuki Sonoda)
    * svn (for development. members only)
203 5 yugui (Yuki Sonoda)
  * svn.ruby-lang.org:
204 5 yugui (Yuki Sonoda)
    * Anonymous svn: svn.ruby-lang.org
205 5 yugui (Yuki Sonoda)
    * issue tracking system: redmine.ruby-lang.org
206 5 yugui (Yuki Sonoda)
  * carbon.ruby-lang.org:
207 5 yugui (Yuki Sonoda)
    * WWW: www.ruby-lang.org, raa.ruby-lang.org
208 5 yugui (Yuki Sonoda)
    * FTP: ftp.ruby-lang.org
209 5 yugui (Yuki Sonoda)
    * Anonymous CVS: cvs.ruby-lang.org
210 5 yugui (Yuki Sonoda)
    * mailing lists
211 5 yugui (Yuki Sonoda)
  * boron.rubyist.net: 
212 5 yugui (Yuki Sonoda)
    * WWW: www.rubyist.net
213 5 yugui (Yuki Sonoda)
* ((<list of elements|URL:http://en.wikipedia.org/wiki/List_of_elements_by_atomic_number>))
214 5 yugui (Yuki Sonoda)
215 5 yugui (Yuki Sonoda)
== Misc
216 9 shyouhei (Shyouhei Urabe)
* Tools for compilation
217 5 yugui (Yuki Sonoda)
  * autoconf (2.60 or later)
218 5 yugui (Yuki Sonoda)
  * bison
219 5 yugui (Yuki Sonoda)
  * (gperf)
220 5 yugui (Yuki Sonoda)
  * (ruby) (building the 1.9 needs ruby)
221 9 shyouhei (Shyouhei Urabe)
* Test cases
222 9 shyouhei (Shyouhei Urabe)
  * Adding test cases (bootstraptest / test)
223 9 shyouhei (Shyouhei Urabe)
  * Testing test cases
224 5 yugui (Yuki Sonoda)
    * make test
225 5 yugui (Yuki Sonoda)
    * make test-all
226 5 yugui (Yuki Sonoda)
    * "make check" executes both test and test-all.
227 5 yugui (Yuki Sonoda)
* Integration with ((<RubySpec|URL:http://www.rubyspec.org>))
228 5 yugui (Yuki Sonoda)
  * make update-rubyspec for retrieving specs.
229 5 yugui (Yuki Sonoda)
    * git required
230 5 yugui (Yuki Sonoda)
  * make test-rubyspec for checking
231 9 shyouhei (Shyouhei Urabe)
* diff format
232 5 yugui (Yuki Sonoda)
  * unified diff (-u)
233 5 yugui (Yuki Sonoda)
  * -p
234 5 yugui (Yuki Sonoda)
* ((<ViewVC|URL:http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/?root=ruby>))
235 5 yugui (Yuki Sonoda)
* ML : ruby-dev, ruby-list, ruby-core, ruby-talk
236 5 yugui (Yuki Sonoda)
* commit mail (ruby-cvs)
237 5 yugui (Yuki Sonoda)
* IRC channel
238 5 yugui (Yuki Sonoda)
  * IRCnet: #ruby:*.jp  (Japanese)
239 5 yugui (Yuki Sonoda)
  * freenode: #ruby-core (English)
240 5 yugui (Yuki Sonoda)
* ((<CIA Open Source Notification System|URL:http://cia.navi.cx/stats/project/ruby>))
241 5 yugui (Yuki Sonoda)
242 5 yugui (Yuki Sonoda)
* .document
243 5 yugui (Yuki Sonoda)
* NEWS
244 5 yugui (Yuki Sonoda)
  * Add an entry when you add a feature or change a spec.
245 6 yugui (Yuki Sonoda)
246 6 yugui (Yuki Sonoda)
== See also
247 6 yugui (Yuki Sonoda)
* [[DeveloperHowTo]]
248 6 yugui (Yuki Sonoda)
* [[Maintainers]]