Skip to main content.

How can I help out?

協力するにはどうすればよいですか?

本ページは Cygwin 本家サイトの 「How can I help out?」を翻訳したものです。

このプロジェクトに対して割かれた時間の一部は Red Hat の顧客によるものです。残りの幾らかの時間は、これらのツールをより実用的にするために、従業員が自発的に費やした多くの超過時間によるものです。 そして我々はインターネットコミュニティからの意義深い援助もまた受け、我々は確かにより多くの援助に与ることが出来ました!

開発バージョンの Cygwin のビルド

cygwin1.dll に対応するコードは主に winsup ディレクトリにあり、追加のコードが newlib/libc、newlib/libm、libiberty そして include ディレクトリにあります。あなたが加えた全ての変更は、理想的には 現在の開発ソースに対しても行われます。 これによって、一旦完成しテストされたあなたの変更を統合する作業は、ずっと簡単なものになります。 現在の CVS ツリー(そして開発スナップショット)はコンパイルされますが、テストされていない実験的なコードが含まれているため、これらは常に不安定だと考えられているということに気をつけて下さい。

最低限のビルド方法については、FAQ (日本語訳)の「どうすれば私の NT マシンでツールをリビルド出来ますか?」に記述されています。オブジェクトのディレクトリが /c/obj であれば、ビルドする Cygwin DLL は /c/obj/i686-pc-cygwin/winsup/cygwin/new-cygwinxx.dll に作成されます。ここで、xx は現在の API_MAJOR 番号(現在、これは 1 です)を示します。

最小のトップレベルソースツリーは以下のものを含んでいる必要があることに注意して下さい:

Makefile.in、config、config-ml.in、config.guess、config.sub、configure、 configure.in、include、install-sh、libiberty、ltconfig、ltmain.sh、missing、 move-if-change、newlib、symlink-tree、winsup、ylwrap。

始める前に

まず、我々のチームだけが winsup ディレクトリの更新を行えるということに気をつけて下さい(その上、newlib にも変更を加えることが出来ます)。 これは、別のツールに対する Cygwin に関連するパッチは(Cygwin メーリングリスト経由で)気軽に我々に送っていただきたいということを意味します -- 我々が直接変更を行う立場にないとしても、我々は恐らくあなたが何を行うべきかを知っています。

あなたのコード変更が非常に大きなものとなりそうな場合、我々がメインのソースツリーにあなたの変更を取り込む前に、あなたが行うコードの変更に対する著作権保持について、Red Hat 又は FSF(そのソースファイルに依存します)にサインする必要があることを諒承して下さい。 あなたの雇用主もまた、あなたの協力に対する何らの要求も行わないということを明言した権利放棄書を送る必要があります。 これは責任の所在に対して必要です。Cygwin の変更に対する我々の標準指定形式がここにありますので、必要事項に記述してサインし、我々に送付して下さい。 最終的には悩みの種とはならないでしょう。疑問点がありましたら、 Cygwin メーリングリストに対して質問して下さい。

最後に、実際に何かを修正し始める前に、おそらくは cygwin-developers メーリングリストに参加すべきです。 そして、我々があなたの変更を統合出来ないがために時間を無駄にするといったことを避けるためにも、何をどのようにしたいのかについて記述したメールをメーリングリストに送って下さい。 これによって我々は、何が作業中であるかについて常に注意を払えるようになるので、作業が重複しなくなります。

ソースに対して誰が何をしているかということについて絶えず注意を払いつづけたいのであれば、 他の 非 cvs メーリングリスト にある cygwin-cvs と newlib-cvs メーリングリストを、通常の購読方法に従って購読して下さい。

変更が完了したなら

一旦あなたの変更作業とテストが完了したなら、unified 形式の diff を cygwin-patches メーリングリストへと送って下さい。 例えば、winsup/syscalls.cc を修正し、元々のソースファイルを /winsup/syscalls.cc-orig としている場合、bash 上で以下の作業を行います。

cd /c/src/winsup
diff -up syscalls.cc-orig syscalls.cc > syscalls.cc-patch 2>&1

そうしたら、どのような変更を行ったかの説明を付与して、それを cygwin-patches メーリングリストへとメールで送ります。 ChangeLog エントリを必ず含めておいて下さい。 今までに ChangeLog を全く使用したことがなければ、 1) GNU ChangeLog 標準を参照し、 2) ファイル winsup/ChangeLog 中の他のエントリを参考にして下さい。

理想的には、diff は何らかのエンコーディング形式あるいは他の特殊な形式になっていない、プレーンテキストで送付されるべきです。ChangeLogs は「diff 出力」として送るべきではありません。完全な ChangeLog エントリだけを送って下さい。

一般的なパッチ提出に関わる問題として、以下のようなものがあります。

cygwin-developers と cygwin-patches メーリングリストにメールを送るためには、これらのメーリングリストを購読していなければならないということを覚えていて下さい。 Cygwin に対する小さなパッチがあり、現在行われている開発に寄与するつもりがないのであれば、 cygwin-patches メーリングリストにあなたのパッチを送る必要はありません。 代わりに、通常の Cygwin メーリングリストに送ることが出来ます。 Red Hat の信頼出来る当事者は Cygwin メーリングリストを読んでいますので、結局のところはあなたが提案した変更を見ることになります。

これに対する疑問についてはどうぞ気軽に質問してみて下さい。我々はより多くの人々が協力者となることを期待しています -- これはフリーソフトウェアの大きな長所となり得ます。 我々全ては我々自身だけでなく、他の全員による仕事から利益を得ているのです…。

やるべきものは:

To-do リストは ここにあります。

Cygwin メーリングリストのアーカイブを眺めることによって、現在抱えているバグや問題に対する良いアイデアを得ることも出来ます。 加えて、FAQ の API 呼び出しの部分を調べ、実装されていない関数のリファレンスを見て下さい。 あるいは、cygwin-developers メーリングリストに対してメールを送り、他の人々がどのような提案をしているかを見て下さい。

cygwin-developers 及び cygwin-patches メーリングリストは、Cygwin DLL の補強について真剣に考えている人々だけを対象としているということを忘れないで下さい。 これらのメーリングリストは Cygwin に対する一般的な質問に答えたり、ユーティリティの移植に関するアナウンスをしたり、「winsup」ディレクトリにあるファイル以外のものに対するパッチ提供の場としては意図されていません。 重ねて言いますが、メールを送ることが出来るようになる前に、まずはこれらのリストに参加する必要があります。