CommitterHowto

Version 29 (naruse (Yui NARUSE), 05/12/2011 01:22 pm)

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