This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
コミッタ固有の事項について。開発者全般については Developer How To JA を参照のこと 英語版: Committer How To
2022/09/14: 本稿 Committer How To JA は英語版 Committer How To に比べ内容が古くなっています。 新しい情報は Committer How To の方を参照・更新するようにしてください。
committer になるには
- 標準添付ライブラリやブランチのメンテナを募集しているときに、行動を起こす。
- 便利なライブラリを公開すると、そのライブラリを標準添付に取り込みたいのでcommitterになってメンテナンスしろと言われる(最近はあまりない)
- コンスタントにrubyを改良するパッチを投げ続けていると、そのうちcommitter になれ、と言われる。
- Rubyを抜本的に改善するパッチを投げると、committerになってそれをメンテナンスし続けろ、と言われる。
- 未知のプラットフォームにrubyを移植して大量のパッチを投げると、committer になれ、と言われる。
- Linus Torvalds - Part II : Open Voices: The Linux Foundation Podcastから引用(原文):
- Jim Zemlin: 最後に、Linux の最前線で活動に参加したいと思っている組織や個人に対し何かアドバイスはありますか?
- Linus Torvalds: 「何から始めたらいい?」という質問をしょっちゅう受けるけど、ぼくのアドバイスはそんな質問するなってことだけだね。 むしろ自分が挑戦したいと思うことがわかりきっているぐらいある特定の分野に興味を持っているのでないなら、挑戦しちゃだめだ。 そいつはさっさとあきらめて、もし「ぼくの方がうまくやれる」と言えるものに出会い、口だけのやつから実行するやつになる気が起きたとき、自分自身で答えが見つかるよ。
committer になることになったら
まず、matz の承認をもらう。
もらったら、次の情報を提供する。ruby-dev:23675
- (PGPの公開鍵) optional
- 希望アカウント名
- your-account@ruby-lang.org
config/email.yml
の pre-receive hook のキーとして使われるので、ここに希望のアカウント名でPRする。
- SSH2の公開鍵
- 公開鍵は安全な手段で渡す、HTTPS で取得可能な場所か PGP で暗号化する
- PGP で暗号化した時は 、PGP公開鍵も渡す
- @ruby-lang.org宛のメールを転送するメールアドレス
これらの情報を 指定されたアドレス(作業担当者: svn-admin at ruby-lang.org)に送る。
必要なツール
- そのプラットフォームの開発ツール一式
- ruby (ビルドに ruby が必要)
- subversion
- SSHクライアント
- GnuPG
- MUA
- autoconf (2.60以降)
- bison
- sed
- (gperf)
- (git)
あると便利なツール
- slack クライアント: 開発に関する議論を private な slack チャンネルでやってます。
- merger.rb ブランチメンテナ用
gpg コマンドの使い方
PGP 鍵の生成の仕方
メールの署名の仕方
SSH2公開鍵の作り方
OpenSSHの入っているプラットフォームでは既に~/.ssh/id_rsaがあるかもしれない。その公開鍵id_rsa.pubを使っても良い。
無い場合はssh-keygen(1)で作成する。
$ ssh-keygen -b 2048 -f ruby_key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): <パスフレーズ> 何か打ち込む Enter same passphrase again: <パスフレーズ確認入力> 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
秘密鍵ruby_keyと公開鍵ruby_key.pubが生成される。秘密鍵は絶対に他人に見せないで大切に保管しておく。公開鍵を作業担当者に渡す。
committer になったら
- ソースディレクトリ以外でビルドする
- /path/to/somewhere/src 内にソース、/path/to/somewhere/obj 内でビルドするなら、objの中で../src/configureとか。
- ソースディレクトリでもビルドする ./configure
- ruby-dev, ruby-core, ruby-cvs の購読
- redmine にユーザ登録
- アカウントはChangelogに書き込んだりメーリングリストに投稿したりするのに使っているメールアドレスで登録すべき。
- [project:Ruby]などのプロジェクトの開発者メンバー (Developer) に登録して貰う (コミッタが追加権限を持っている)
さらに余力があれば
- GPG鍵にちゃんとキーサインをもらう
- コミッタ同士でもサインすると良い
- 名刺にfinger printを刷ると良い
- Coverityにアカウントを作る
- アカウントの作り方はちょっと面倒なので、slackなどで他のコミッタに聞く。
- これ持ってる人ほとんどいない気がする
- github にアカウントがあるなら your-svn-account@b2dd03c8-39d4-4d8f-98ff-823fe69b080e を Email Addresses に追加する。 ( https://github.com/ruby/ruby/commits/trunk などでアイコンが出てくるようになる)
- 2016年現在では作れない模様。GitHubにコネがある人は要望を出そう!
- Ruby:を通読していることが期待されていますが、そんなことが不可能なのもみんな知っているので、何か言われたら「それWikiのどこに載ってる?」と言い返しましょう
commit するときには
合意形成
- 仕様変更・機能追加はメーリングリストで合意ができてから or MatzやMaintainersが認めてから
- typoを直したぐらいのものは勝手にコミットする
- コミットしてしまって怒られたら戻せばよいので、加減は怒られながら覚えること。
- minirubyだけでなくruby自体もビルドできることを確認してからコミットする
- make testすると更に良い
- make test-allすると更に良い
- make test-rubyspecもすると更に良い
連絡
- 一部のライブラリは外部でメンテナンスされていて、Rubyのリポジトリにあるのはコピーである。
- これらはコミット後にメールでメンテナに連絡する。
- 時間的余裕があれば、メンテナとメーリングリストにパッチを送ってメンテナにコミットしてもらうと更に良い。
該当するのは
- rubygems
- rdoc
- openssl
- json
- psych
Git
(Caution: still incomplete!)
- 2019年4月23日から Ruby はバージョン管理に主に git を使う。
- trunk は git を使う。
- 古いブランチは引き続き svn を使う。
- データを入手するのは github から次のコマンドで:
git clone https://github.com/ruby/ruby
(要確認: 推薦できる便利なオプションは存在するのか?) - 重要: github に絶対 push しないこと! コミットのためには git@git.ruby-lang.org:ruby.git にプッシュする。 (要確認: 具体的なコマンドや設定など)
subversion
- subversion の設定
- ssh の設定
- pass phrase を commit 毎に入力したくないとき: ssh-agent
- .ssh/config
- branch
- 開発版は幹 (trunk)
- 安定版は枝 (例: ruby_1_8, ruby_1_8_6)
- commit 単位
- changeset ごと
- commit log
- 下記 ChangeLog の記述内容から、変更内容についての部分を抜き出すだけ。(ChangeLogのヘッダは除く、タブインデントも入れない)
以下のような感じ * 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.
- Redmine に対する指示を入れられる
- GitHub に対する指示を入れられる
- Closing issues using keywords
- 上記 Redmine への指示と紛らわしいので、"fix https://github.com/ruby/ruby/pull/123" を使いましょう
- Travis CI に対する指示を入れられる
- How to skip a build 例 [skip ci]
- 下記 ChangeLog の記述内容から、変更内容についての部分を抜き出すだけ。(ChangeLogのヘッダは除く、タブインデントも入れない)
- mail
- redmine:MailingListJa メールの参照
- 最近サーバーが別のサーバーに移設され,サーバーサイドのssh鍵が変わっているためgitがエラーを吐く場合は~/.ssh/known_hostsから一旦レコードを消してみるといいかもしれません.
RDoc
RDocをちゃんと書くと良い。
- RDocのテンプレート by arton
- RDoc Documentation
リファレンスマニュアル
- オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (凍結中)
- Rubyリファレンスマニュアル刷新計画 (開発中)
情報の発信
ruby-lang.orgから情報を発信するには。
Subversion
ci.ruby-lang.orgにコミットするとsvn.ruby-lang.orgにも同期される。
管理作業依頼はcvs-admin AT ruby-lang.orgへメール
FTP
carbonのSSHアカウントをもらってSCPでアップロード
WWW
- redmineから、wwwチームへ依頼する
- なんかあれば webmaster AT ruby-lang.orgへメール
Redmine
- Wikiはアカウントがあれば勝手に編集できる。
- 改善依頼やバグ報告はredmineへ
- なんかあれば its-admin AT ruby-lang.orgへメール
サーバの情報
- lithium, carbon, boron
- 現在の状態
- git.ruby-lang.org:
- git
- ci.ruby-lang.org:
- svn (開発用・非公開)
- svn.ruby-lang.org:
- Anonymous svn: svn.ruby-lang.org
- 問題追跡システム: bugs.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
- メーリングリスト
- boron.rubyist.net:
- WWW: www.rubyist.net
- git.ruby-lang.org:
- 元素のリスト
その他
- コンパイルに必要なツール
- autoconf (2.60以降)
- bison
- (ruby) (1.9 はレポジトリからのビルドに ruby が必要)
- テスト
- テストの追加 (bootstraptest と test)
- テストの実行
- make test
- make test-all
- make check は test と test-all を両方やる
- 旧RubySpecとの連携
- 2017年5月にtrunkに取り込まれて双方向に手動で同期されているはず
- make test-rubyspec (または make test-spec) で検証
- diff の形式
- unified diff 推奨 (-u)
- -p 推奨 (git diff でも)
- メールでの MIME の使い方
- blade でどう表示されるか
- GitHub: https://github.com/ruby/ruby
- cgit: https://git.ruby-lang.org/ruby.git
- ML : ruby-dev, ruby-list, ruby-core, ruby-talk
- commit mail (ruby-cvs)
- version.h
- 日時はJST
- その日最初のコミットの後に自動で更新コミットが入る
- NEWS
- 大きな変更の時に書く
歴史的な情報
- MANIFEST
CVS
昔はCVSでした。
- CVSup http://cvs.ruby-lang.org/cvsup/
- 開発用 CVS と anonymous CVS の同期
Subversion
昔はSVNでした。
- ViewVC http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/?root=ruby
- Git移行ログ https://bugs.ruby-lang.org/issues/14632
version.h 更新機構の履歴
- 更新スクリプト ruby-dev:19173
- 自動更新は停止中 http://jarp.does.notwork.org/diary/200509b.html#200509131
- 再開している http://jarp.does.notwork.org/diary/200606c.html#200606271
- Subversion 化で停止中なので各自で更新すること
- 再開しました ruby-dev:35198
- Git移行しました (2019/4/20) https://github.com/ruby/ruby-commit-hook
サーバーの履歴
- 2004-07-26 http://www.ruby-lang.org/ja/report.txt hydrogen, helium から lithium, beryllium へ
- http://www.j96.org/~yuya/d/?category=%B4%C9%CD%FD
- 2006-09-08 http://shugo.net/jit/20060908.html#p01 carbon.ruby-lang.org が beryllium.ruby-lang.org をリプレース
Policies
Development
For developers
- Developer How To, Developer How To JA
- How To Contribute
- How To Report, How To Report JA
- How To Request Backport
- How To Request Features
- Developers Meeting
For committers
- Committer How To, Committer How To JA
- Git Migration FAQ JA
- How To Backport
- How To Manage Redmine
- How To Release JA
- How To Maintain RubyCI Servers