CommitterHowto

Version 35 (naruse (Yui NARUSE), 02/03/2012 11:11 am)

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 30 yugui (Yuki Sonoda)
* Send  a patch for ((<ruby-committers.yml|URL:http://coderepos.org/share/browser/lang/ruby/ruby-committers/ruby-committers.yml>)) to <yugui AT yugui.jp>. Or you can update the YAML by yourself if you have a ((<CodeRepos|URL:http://coderepos.org/share/>)) account.
93 1 yugui (Yuki Sonoda)
94 5 yugui (Yuki Sonoda)
== What to do when you commit
95 5 yugui (Yuki Sonoda)
=== Consensus
96 9 shyouhei (Shyouhei Urabe)
* Never add a new feature or change a spec without discussion on the mailing list nor [[Maintainers|maintainer]]'s permission.
97 18 naruse (Yui NARUSE)
* Especially on interpreter, VM, GC or such core of core, get matz's approval.
98 9 shyouhei (Shyouhei Urabe)
* Feel free to commit trivial changes, e.g. typo fix.
99 31 yugui (Yuki Sonoda)
* Gradually learn what needs discussion and what you can commit without discussion. You will do a mistake and the maintainer will complain against it, but don't worry too much.
100 9 shyouhei (Shyouhei Urabe)
* Never commit without compiling ruby.  Compiling miniruby is not sufficient.
101 9 shyouhei (Shyouhei Urabe)
  (1) Do ((%make test%)) too. (better than just building)
102 9 shyouhei (Shyouhei Urabe)
  (2) Do ((%make test-all%)) too. (better than just test)
103 9 shyouhei (Shyouhei Urabe)
  (3) Do ((%make test-rubyspec%)) too. (better than just test-all)
104 5 yugui (Yuki Sonoda)
105 9 shyouhei (Shyouhei Urabe)
=== Contact to a maintainer
106 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.
107 5 yugui (Yuki Sonoda)
  * Send a mail to the maintainer after commit.
108 5 yugui (Yuki Sonoda)
  * Send a patch to ruby-core and the maintainer instead of committing it directly if possible.
109 5 yugui (Yuki Sonoda)
110 23 marcandre (Marc-Andre Lafortune)
* minitest
111 5 yugui (Yuki Sonoda)
* rdoc
112 5 yugui (Yuki Sonoda)
* rubygems
113 5 yugui (Yuki Sonoda)
* rake
114 5 yugui (Yuki Sonoda)
* soap (1.8)
115 5 yugui (Yuki Sonoda)
* wsdl (1.8)
116 5 yugui (Yuki Sonoda)
117 9 shyouhei (Shyouhei Urabe)
=== Subversion
118 9 shyouhei (Shyouhei Urabe)
* Configuration for subversion
119 5 yugui (Yuki Sonoda)
  * [[ruby-dev:30043]] (English)
120 9 shyouhei (Shyouhei Urabe)
* Configuration for ssh
121 9 shyouhei (Shyouhei Urabe)
  * Learn how to use ssh-agent.  Don't repeat yourself.
122 9 shyouhei (Shyouhei Urabe)
  * Read ssh_config(5).
123 9 shyouhei (Shyouhei Urabe)
* Branching
124 9 shyouhei (Shyouhei Urabe)
  * /trunk is for development.
125 9 shyouhei (Shyouhei Urabe)
  * Each branch for stable versions. (e.g. ruby_1_8, ruby_1_8_7)
126 9 shyouhei (Shyouhei Urabe)
* Never commit two or more changesets as one commit.
127 9 shyouhei (Shyouhei Urabe)
* Commit log
128 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.
129 29 naruse (Yui NARUSE)
    (Without header, no tabs)
130 29 naruse (Yui NARUSE)
     Example is like following:
131 29 naruse (Yui NARUSE)
     * filename.c (rb_xxx_yyy): short description of this commit.
132 34 marcandre (Marc-Andre Lafortune)
       Fixes [bug:#XXXX] [ruby-core:XXXX].
133 29 naruse (Yui NARUSE)
       (rb_zzz_aaa): yet another part.
134 29 naruse (Yui NARUSE)
     
135 29 naruse (Yui NARUSE)
     * filename.h (MACRO_NAME): value changed.
136 18 naruse (Yui NARUSE)
  * Fold by 80 columns (copy from ((%ChangeLog%)) without tabs)
137 5 yugui (Yuki Sonoda)
  * You can command the Redmine in a commit message.
138 13 yugui (Yuki Sonoda)
    * [[redmine:VersionControlSystem]]
139 33 drbrain (Eric Hodel)
  * `make change` will write change.log which you can fill in and copy to ChangeLog.
140 5 yugui (Yuki Sonoda)
* svn mail
141 5 yugui (Yuki Sonoda)
  * [[redmine:MailingList]]
142 5 yugui (Yuki Sonoda)
143 5 yugui (Yuki Sonoda)
=== ChangeLog
144 5 yugui (Yuki Sonoda)
((<GNU Coding Standards : Change Logs|URL:http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs>))
145 5 yugui (Yuki Sonoda)
146 5 yugui (Yuki Sonoda)
 Thu Jan  1 00:00:00 2004  Your Name  <yourmail@example.com>
147 5 yugui (Yuki Sonoda)
 
148 5 yugui (Yuki Sonoda)
 	* filename (function): short description of this commit.
149 32 naruse (Yui NARUSE)
 	  This should include your intention of this change.
150 34 marcandre (Marc-Andre Lafortune)
 	  [bug:#number] [mailinglist:number]
151 5 yugui (Yuki Sonoda)
152 32 naruse (Yui NARUSE)
 	* filename2 (function2): additional description for this file/function.
153 32 naruse (Yui NARUSE)
154 9 shyouhei (Shyouhei Urabe)
* Timestamps must be in JST (+09:00), in the style as above.
155 5 yugui (Yuki Sonoda)
* Two whitespaces between the timestamp and your name. Two whitespaces between your name and your mail address.
156 1 yugui (Yuki Sonoda)
* One blank line between the timestamp and the description.
157 32 naruse (Yui NARUSE)
* Indent the description with TAB. 2nd line should begin with TAB+2SP.
158 5 yugui (Yuki Sonoda)
* Write a entry (*) for each change.
159 34 marcandre (Marc-Andre Lafortune)
* Refer to redmine issue or discussion on the mailing list.
160 5 yugui (Yuki Sonoda)
* One blank line between entries.
161 5 yugui (Yuki Sonoda)
* Do as other committers do.
162 9 shyouhei (Shyouhei Urabe)
* What to write and what need not: [[ruby-talk:120515]]
163 9 shyouhei (Shyouhei Urabe)
  * No need for an entry on fixing typo.
164 9 shyouhei (Shyouhei Urabe)
  * Referring a contributor/reporter.
165 5 yugui (Yuki Sonoda)
    * Respect contributors [[ruby-dev:24936]]
166 9 shyouhei (Shyouhei Urabe)
  * Write one when you are not sure if you should write or not.
167 5 yugui (Yuki Sonoda)
168 5 yugui (Yuki Sonoda)
==== Template
169 5 yugui (Yuki Sonoda)
 Thu Jan  1 03:03:03 2004  Your Name  <yourmail@example.com>
170 5 yugui (Yuki Sonoda)
 
171 5 yugui (Yuki Sonoda)
 	* filename.c (rb_xxx_yyy): short description of this commit.
172 5 yugui (Yuki Sonoda)
 	  Fixes [ruby-dev:XXXX].
173 5 yugui (Yuki Sonoda)
 	  (rb_zzz_aaa): yet another part.
174 5 yugui (Yuki Sonoda)
  
175 5 yugui (Yuki Sonoda)
 	* filename.h (MACRO_NAME): value changed.
176 5 yugui (Yuki Sonoda)
 
177 5 yugui (Yuki Sonoda)
 Thu Jan  1 02:02:02 2004  Your Name  <yourmail@example.com>
178 5 yugui (Yuki Sonoda)
 
179 5 yugui (Yuki Sonoda)
 	* filename.rb (XXXX#yyyy): short description of this commit.
180 5 yugui (Yuki Sonoda)
 	  Patch by Foo Bar <foo-bar AT example.org>.
181 5 yugui (Yuki Sonoda)
 
182 5 yugui (Yuki Sonoda)
 Thu Jan  1 01:01:01 2004  Your Name  <yourmail@example.com>
183 5 yugui (Yuki Sonoda)
 
184 5 yugui (Yuki Sonoda)
 	* filename.c (rb_aaa_bbb): short description of this commit.
185 5 yugui (Yuki Sonoda)
 	  See [ruby-core:XXX].
186 5 yugui (Yuki Sonoda)
 	  Reported by Baz Qux <baz-qux AT example.org>.
187 5 yugui (Yuki Sonoda)
188 5 yugui (Yuki Sonoda)
=== RDoc
189 9 shyouhei (Shyouhei Urabe)
Writing RDocs is preferred 
190 5 yugui (Yuki Sonoda)
191 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
192 5 yugui (Yuki Sonoda)
* ((<RDoc Documentation|URL:http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/files/rdoc/README.html>))
193 5 yugui (Yuki Sonoda)
194 5 yugui (Yuki Sonoda)
=== Reference manual
195 5 yugui (Yuki Sonoda)
* ((<Object oriented scripting language Ruby - Reference manual|URL:http://www.ruby-lang.org/ja/man/>)) (Japanese, frozen)
196 10 daz (Dave B)
* ((<Ruby reference manual renewal project|URL:http://doc.loveruby.net/refm/api/view/index>)) (Japanese, under development)
197 5 yugui (Yuki Sonoda)
198 5 yugui (Yuki Sonoda)
=== svn:ignore
199 5 yugui (Yuki Sonoda)
200 35 naruse (Yui NARUSE)
== How to backport
201 35 naruse (Yui NARUSE)
202 35 naruse (Yui NARUSE)
* checkout the branch
203 35 naruse (Yui NARUSE)
* use tool/merger.rb.
204 5 yugui (Yuki Sonoda)
205 5 yugui (Yuki Sonoda)
== How to announce
206 5 yugui (Yuki Sonoda)
How to announce from ruby-lang.org.
207 5 yugui (Yuki Sonoda)
208 5 yugui (Yuki Sonoda)
=== Subversion
209 5 yugui (Yuki Sonoda)
svn.ruby-lang.org is automatically synchronized with ci.ruby-lang.org.
210 5 yugui (Yuki Sonoda)
211 16 yugui (Yuki Sonoda)
Send an email to cvs-admin AT ruby-lang.org for administration request.
212 5 yugui (Yuki Sonoda)
213 5 yugui (Yuki Sonoda)
=== FTP
214 5 yugui (Yuki Sonoda)
Upload to carbon.ruby-lang.org:/home/ftp/pub/ with SCP.
215 5 yugui (Yuki Sonoda)
216 5 yugui (Yuki Sonoda)
=== WWW
217 5 yugui (Yuki Sonoda)
* Ask the www team on ((<redmine|URL:http://redmine.ruby-lang.org/projects/show/www>)).
218 14 yugui (Yuki Sonoda)
* Send an email to <webmaster AT ruby-lang.org> for administration request.
219 5 yugui (Yuki Sonoda)
220 5 yugui (Yuki Sonoda)
=== Redmine
221 5 yugui (Yuki Sonoda)
* You can edit any wiki page. (login required)
222 14 yugui (Yuki Sonoda)
* Feature request or bug report on ((<redmine|URL:http://redmine.ruby-lang.org/projects/show/redmine>))
223 26 yugui (Yuki Sonoda)
* Send an email to <its-admin AT ruby-lang.org> for administration request.
224 5 yugui (Yuki Sonoda)
225 5 yugui (Yuki Sonoda)
=== Servers
226 5 yugui (Yuki Sonoda)
* lithium, carbon, boron
227 5 yugui (Yuki Sonoda)
* Status
228 5 yugui (Yuki Sonoda)
  * ci.ruby-lang.org:
229 5 yugui (Yuki Sonoda)
    * svn (for development. members only)
230 5 yugui (Yuki Sonoda)
  * svn.ruby-lang.org:
231 5 yugui (Yuki Sonoda)
    * Anonymous svn: svn.ruby-lang.org
232 5 yugui (Yuki Sonoda)
    * issue tracking system: redmine.ruby-lang.org
233 5 yugui (Yuki Sonoda)
  * carbon.ruby-lang.org:
234 5 yugui (Yuki Sonoda)
    * WWW: www.ruby-lang.org, raa.ruby-lang.org
235 5 yugui (Yuki Sonoda)
    * FTP: ftp.ruby-lang.org
236 5 yugui (Yuki Sonoda)
    * Anonymous CVS: cvs.ruby-lang.org
237 5 yugui (Yuki Sonoda)
    * mailing lists
238 5 yugui (Yuki Sonoda)
  * boron.rubyist.net: 
239 5 yugui (Yuki Sonoda)
    * WWW: www.rubyist.net
240 5 yugui (Yuki Sonoda)
* ((<list of elements|URL:http://en.wikipedia.org/wiki/List_of_elements_by_atomic_number>))
241 5 yugui (Yuki Sonoda)
242 5 yugui (Yuki Sonoda)
== Misc
243 9 shyouhei (Shyouhei Urabe)
* Tools for compilation
244 5 yugui (Yuki Sonoda)
  * autoconf (2.60 or later)
245 5 yugui (Yuki Sonoda)
  * bison
246 5 yugui (Yuki Sonoda)
  * (gperf)
247 5 yugui (Yuki Sonoda)
  * (ruby) (building the 1.9 needs ruby)
248 9 shyouhei (Shyouhei Urabe)
* Test cases
249 9 shyouhei (Shyouhei Urabe)
  * Adding test cases (bootstraptest / test)
250 9 shyouhei (Shyouhei Urabe)
  * Testing test cases
251 5 yugui (Yuki Sonoda)
    * make test
252 5 yugui (Yuki Sonoda)
    * make test-all
253 5 yugui (Yuki Sonoda)
    * "make check" executes both test and test-all.
254 5 yugui (Yuki Sonoda)
* Integration with ((<RubySpec|URL:http://www.rubyspec.org>))
255 5 yugui (Yuki Sonoda)
  * make update-rubyspec for retrieving specs.
256 5 yugui (Yuki Sonoda)
    * git required
257 5 yugui (Yuki Sonoda)
  * make test-rubyspec for checking
258 9 shyouhei (Shyouhei Urabe)
* diff format
259 5 yugui (Yuki Sonoda)
  * unified diff (-u)
260 5 yugui (Yuki Sonoda)
  * -p
261 5 yugui (Yuki Sonoda)
* ((<ViewVC|URL:http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/?root=ruby>))
262 5 yugui (Yuki Sonoda)
* ML : ruby-dev, ruby-list, ruby-core, ruby-talk
263 5 yugui (Yuki Sonoda)
* commit mail (ruby-cvs)
264 5 yugui (Yuki Sonoda)
* IRC channel
265 5 yugui (Yuki Sonoda)
  * IRCnet: #ruby:*.jp  (Japanese)
266 5 yugui (Yuki Sonoda)
  * freenode: #ruby-core (English)
267 5 yugui (Yuki Sonoda)
* ((<CIA Open Source Notification System|URL:http://cia.navi.cx/stats/project/ruby>))
268 5 yugui (Yuki Sonoda)
269 5 yugui (Yuki Sonoda)
* .document
270 5 yugui (Yuki Sonoda)
* NEWS
271 5 yugui (Yuki Sonoda)
  * Add an entry when you add a feature or change a spec.
272 6 yugui (Yuki Sonoda)
273 6 yugui (Yuki Sonoda)
== See also
274 6 yugui (Yuki Sonoda)
* [[DeveloperHowTo]]
275 6 yugui (Yuki Sonoda)
* [[Maintainers]]
276 28 admin (Redmine Admin)
277 28 admin (Redmine Admin)
=end