X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=gnus-coding-ja.texi;h=ec49bdb6569152ed0493b5b2d92c45545730be9c;hb=4627bf604612c04ffc7498a20accbe876c815517;hp=387fc6aae0c8b85511ace1ebf047767e71cf0fb3;hpb=26b33e239543cd56aaae7f62199d62adf1dcc1c6;p=elisp%2Fgnus-doc-ja.git diff --git a/gnus-coding-ja.texi b/gnus-coding-ja.texi index 387fc6a..ec49bdb 100644 --- a/gnus-coding-ja.texi +++ b/gnus-coding-ja.texi @@ -5,34 +5,43 @@ @syncodeindex fn cp @syncodeindex vr cp @syncodeindex pg cp +@iftex +@firstparagraphindent insert +@end iftex + +@dircategory Emacs +@direntry +* Gnus Coding-ja: (gnus-coding-ja). + Gnus Coding Style and Maintainance Guide. +@end direntry @copying -Copyright (c) 2004 Free Software Foundation, Inc. +Copyright @copyright{} 2004-2005, 2007-2011 Free Software +Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.2 or +under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled ``GNU Free Documentation -License'' in the Emacs manual. +License'' in the Gnus manual. この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書 -第 1.2 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更す +第 1.3 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更す ることを許可します。変更不可部分は指定しません。「A GNU Manual」は表表紙 テキスト、以下の (a) は裏表紙テキストです。この利用許諾契約書の複写は -「Emacs manual」の「GNU フリー文書利用許諾契約書」という章に含まれていま +「Gnus manual」の「GNU フリー文書利用許諾契約書」という章に含まれていま す。 -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' +(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and +modify this GNU manual. Buying copies from the FSF supports it in +developing GNU and promoting software freedom.'' -(a) FSF の裏表紙テキスト:「あなたにはこの GNU Manual を GNU ソフトウェア -のように複製したり変更する自由があります。複製はフリーソフトウェア財団に -よって出版されました。(フリーソフトウェア財団は) GNU の開発のために必要 -な資金を集めています。」 +(a) FSF の裏表紙テキスト:「あなたにはこの GNU Manual を複製したり変更す +る自由があります。FSF からの複写の購入は GNU の開発とソフトウェアの自由 +の促進を支援します。」 This document is part of a collection distributed under the GNU Free Documentation License. If you want to distribute this document @@ -47,122 +56,369 @@ license to the document, as described in section 6 of the license. @end copying @titlepage -@title Gnus Coding Style and Maintainance Guide +@title Gnus Coding Style and Maintenance Guide -@c @author by +@author by Reiner Steib @insertcopying @end titlepage +@c +@c 明らかにこれは未成熟な草稿に過ぎません。とにかく、それを見とがめた誰 +@c かが直してくれることを期待して、私たちはこれをリポジトリーに置きまし +@c た。;-) 一部を直してくれるだけでもありがたいです。 +@ifnottex @node Top +@top Gnus Coding Style and Maintainance Guide -@section Gnus Coding Style -@subsection Dependencies +このマニュアルは @dots{} を説明します。 -@c message / gnus -@c -@c nn* +@insertcopying +@end ifnottex + +@menu +* Gnus Coding Style:: Gnus でコードを書くときの流儀 +* Gnus Maintainance Guide:: Gnus の維持管理に関する手引 +@end menu @c -@c mm* +@c @ref{Gnus Reference Guide, ,Gnus リファレンスガイド, gnus-ja, The Gnus +@c Newsreader} + +@node Gnus Coding Style +@section Gnus でコードを書くときの流儀 +@subsection 依存関係 + +Gnus の配布は、Gnus のために書かれ Gnus のために集中的に使われるたくさん +のライブラリーを含んでいます。しかし、それらのライブラリーの多くはそれら +単独でも有用です。例えば他の Emacs Lisp パッケージが、@acronym{MIME} ラ +イブラリーを使うかもしれません。@xref{Top, ,Top, emacs-mime-ja, The +Emacs MIME Manual}. + +@subsection 汎用ライブラリー + +@table @file +@item netrc.el +@file{.netrc} を解析する機能を提供します。 +@c 2005-10-21 現在... +このファイルは Gnus に依存しません。 + +@item format-spec.el +任意のフォーマット文字列をフォーマットする関数群を提供します。 +@c 2005-10-21 現在... +このファイルは Gnus に依存しません。 + +@item hex-util.el +16進数の文字列をエンコード/デコードするための関数群です。 +@c 2007-08-25 現在... +このファイルは Gnus に依存しません。 +@end table + +@subsection 暗号化とセキュリティー + +@table @file +@item encrypt.el +ファイルを暗号化するルーチン群を提供します。 +@c 2005-10-25 現在... +このファイルは Gnus に依存しません。 + +@item password.el +利用者のパスワードを読み取り、パスワードキャッシュを使うこともあります。 +@c 2005-10-21 現在... +このファイルは Gnus に依存しません。 + +@item tls.el +GnuTLS で囲むラッパーを介して TLS/SSL をサポートします。 +@c 2005-10-21 現在... +このファイルは Gnus に依存しません。 + +@item pgg*.el +さまざまな PGP の実装のためのインターフェースを提供します。 +@c 2005-10-21 現在... +これらのファイルは Gnus に依存しません。 + +@item sha1.el +SHA1 Secure Hash Algorithm. +@c 2007-08-25 現在... +このファイルは Gnus に依存しません。 +@end table + +@subsection ネットワーキング + +@table @file +@item dig.el +ドメイン名システム dig へのインターフェースです。 +@c 2005-10-21 現在... +このファイルに Gnus への重大な依存はありません。 +@code{gnus-run-mode-hooks} (ラッパー関数) を使います。 + +@item dns.el, dns-mode.el +ドメイン名サービスで調べます。 +@c 2005-10-21 現在... +これらのファイルは Gnus に依存しません。 +@end table + +@subsection RFC に関係するメールとニュースのライブラリー + +@table @file +@item pop3.el +ポストオフィスプロトコル (RFC1460) へのインターフェースです。 +@c 2005-10-21 現在... +このファイルは Gnus に依存しません。 + +@item imap.el +@acronym{IMAP} ライブラリーです。 +@c 2005-10-21 現在... +このファイルは Gnus に依存しません。 + +@item ietf-drums.el +RFC822bis ヘッダーを解析する関数群を提供します。 +@c 2005-10-21 現在... +このファイルは Gnus に依存しません。 + +@item rfc1843.el +HZ (RFC1843) デコードを行ないます。HZ は中国語と @acronym{ASCII} 文字を +任意に混ぜ合わせた文章の、ファイル交換のためのデータです。 +@c 2005-10-21 現在... +@code{rfc1843-gnus-setup} は Gnus でだけ役に立つでしょう。Gnus への依存 +を無くすために、この関数は別の場所に移設すべきかもしれません。これ以外に、 +重大ではないけれども Gnus に依存している関 +数 @code{rfc1843-decode-article-body} については、引数をオプションにする +ことによって、@code{gnus-newsgroup-name} を除外することができるでしょう。 + +@item rfc2045.el +RFC2045 ヘッダーをデコードする関数群を提供します。 +@c 2007-08-25 現在... +このファイルは Gnus に依存しません。 + +@item rfc2047.el +RFC2047 メッセージをエンコードおよびデコードする関数群を提供します。 +@c 2007-08-25 現在... +このファイルは Gnus に依存しません。 @c -@c rfc* +でも、いくつかの Gnus 由来のシンボルをテストします (訳注: それらが無くて +も動作します)。 + +@item rfc2104.el +RFC2104 に基づくメッセージのハッシュによる認証のためのコードを提供します。 +@c 2007-08-25 現在... +このファイルは Gnus に依存しません。 + +@item rfc2231.el +RFC2231 ヘッダーをデコードする関数群を提供します。 +@c 2007-08-25 現在... +このファイルは Gnus に依存しません。 + +@item flow-fill.el +RFC2646 の "flowed" テキストを処理します。 +@c 2005-10-27 現在... +このファイルは Gnus に依存しません。 + +@item uudecode.el +ELisp 版の uudecode です (訳注: でも外部プログラムの uudecode がある場合 +は、ディフォルトでそれを使います)。 +@c 2005-12-06 現在... +このファイルは Gnus に依存しません。 +@c ... でも、カスタムグループは gnus-extract です。 + +@item canlock.el +Cancel-Lock 機能のための関数群を提供します。 +@c draft-ietf-usefor-cancel-lock-01.txt 参照。 +@c この草稿は期限切れ消去されましたが、2007年に大手のニュース・プロバイ +@c ダーたち (例えば news.individual.org) が使い始めて復活しました。 +@c 2007-08-25 現在... +このファイルは Gnus に依存しません。 +@end table + +@subsection message + +Gnus ではすべてのメッセージ (メールとニュースの両方) の作成を Message モー +ドのバッファーで行ないます。Message モードは Emacs のメールモードの置き +換えになることが意図されています。@file{message.el} は Gnus に依存しない +ようにすべきです。しかし、残念ながらそうなっていないのです。依存関係を絶 +ち切るためのパッチや提案を歓迎します。 +@c message.el は nnheader を必要とし、それは gnus-util を必要とします。 + +@subsection Emacs @acronym{MIME} + +@file{mml*.el} および @file{mm-*.el} のファイル群は Emacs のため +の @acronym{MIME} の機能を提供します。 + +@acronym{MML} (@acronym{MIME} Meta Language) は Gnus からは独立したもの +だと考えられていますが、残念ながら現実はそうではありません。その依存関係 +を絶つためのパッチや提案を歓迎します。 + +@subsection Gnus バックエンド + +@file{nn*.el} のファイル群は NNTP (@file{nntp.el}), IMAP +(@file{nnimap.el}) および複数の他のメールバックエンドの機能を提供しま +す (おそらく @file{nnml.el}, @file{nnfolder.el} およ +び @file{nnmaildir.el} が、もっとも広く使われているメールバックエンドで +す)。 @c -@c tla netrc pop3 dig dns ... -@c format-spec.el +@c mm-uu は nnheader を呼び出し、nnheader は gnus-util を呼び出します。 +@c message.el も nnheader を呼び出します。 -@subsection Compatibility +@section 互換性 -@c Compatibility with XEmacs and older Emacs versions in v5-10 and in the -@c trunk. +No Gnus と Gnus 5.10.10 以上は次のもので動作します: -@c @table -@c x -@c @end table +@itemize @bullet +@item +Emacs 21.1 とそれ以上。 -@section Gnus Maintainance Guide +@item +XEmacs 21.4 とそれ以上。 +@end itemize -@subsection Stable and development versions +Gnus 5.10.8 以下は次のもので動作します: -The CVS trunk is developed quite actively. +@itemize @bullet +@item +Emacs 20.7 とそれ以上。 -@c Most of the time Gnus is developed on the trunk. +@item +XEmacs 21.1 とそれ以上。 +@end itemize -@c Exeption: several month of feature freeze after a release, -@c e.g. 5.10.1 +@node Gnus Maintainance Guide +@chapter Gnus の維持管理に関する手引 -@subsection Syncing +@section 安定版と開発版 +Gnus の開発は通常 Git リポジトリーの幹で行なわれています。(2010年4月19日 +現在、リポジトリーは http://git.gnus.org にあります。以前は CVS で行なわ +れていました。) すなわち、開発することと新しい機能をテストするために分 +離された枝はありません。幹ではとても活発に、ほとんど日替りで開発が行なわ +れています。新しいメジャーなリリース (例えば 5.10.1) の後だけは、通常、 +数ヶ月間に渡って新規な機能の開発が凍結されます。Gnus 5.10.6 がリリースさ +れた後で新規な機能の開発が再開しましたが、必要に応じてさらに安定な +版 (5.10.8, @dots{}) をリリースするための安定版の枝 (v5-10) で、5.10 系 +列は存続しています。 +@xref{Gnus Development, ,Gnus の開発, gnus-ja, The Gnus Newsreader}. + +Gnus の安定版のリリースは、最終的には Emacs の一部になります。例え +ば Gnus 5.8 は (Gnus 5.9 に改称して) Emacs 21 の一部になりました。 +5.10 系列は Gnus 5.11 として Emacs 22 の一部になりました。 + +@section 同期 +@c +@c 随所に関連する Message-ID があります。Gmane でそれらのスレッドを参照 +@c するには http://thread.gmane.org/Message-ID を使ってください (そして +@c 表題をクリックしてください)。 +@c +@c Miles Bader さんのいくつかの記事から引用します... +@c @c @c -I do Emacs->Gnus less often (than Gnus->Emacs) because it tends to -require more manual work. +その昔、Emacs に Gnus を編入させるのは、まったくやっかいなことでした。 +Emacs のリポジトリーにある Gnus に対して行なわれた変更が、新しい Gnus の +版にも適用されているかどうかをチェックしなければならなかったのです。そう +しないと、Emacs のリポジトリーで行なわれたバグの修正が失われてしまうかも +しれませんから。 + +Gnus 5.10 を編入するにあたっては、Emacs CVS で行なわれたバグの修正 +が Gnus CVS に伝搬することを確実にするために、Miles Bader が半自動的 +な Emacs-Gnus ゲートウェイを立ち上げました。 + +Emacs が bzr に、そして Gnus が git に移行してからは、Emacs と Gnus の同 +期を維持する面倒を山岡克美が引継ぎました。一つのリポジトリーに対して行な +われた変更は、通常はたいてい 2〜3日以内にもう一方に複写されます。 + +基本的にそのアイデアは、Emacs と Gnus v5-13 におけるすべての共通なファイ +ルを Emacs-Gnus ゲートウェイが同じにすることです。ただし非常に正当な理由 +がある (例えば Emacs では Gnus の版を表す文字列が @samp{5.13} です +が v5-13 枝では @samp{5.13.何がし} のままになっている) 場合を除きます。 +さらに Emacs か v5-13 枝のどちらかで、それらのファイルに対して行なわれた +すべての変更は、Gnus の git の幹にも反映されます。ただし、こちらも正当な +理由がある場合を除きます。 + +@c (これまでの典型的な例外として、効果は同じだけれども違うやり方で行なわれ +@c た変更がすでに幹に存在していたことがありました。) +これによって、次の Gnus のメジャーな版が Emacs に編入されるとき、それは +非常に楽なはずです---Emacs だけで変更されたことが失われてしまうことを心 +配せずに、Gnus の幹をそれらのファイルにどさっと置くだけで良いのです。 + +この結果、ハッカーであるあなたは、通常は一つの場所で変更を行なうだけで済 +むことになります: + +@itemize +@item +Gnus の外にあると見なされるファイル (例えば新しい @file{encrypt.el}) が +対象の場合は、おそらく Emacs で変更を行なうべきです。それは二〜三日後 +に Gnus に現われるでしょう。 + +Emacs の bzr への書き込みが許されていない (またはそれが不便) ならば、 +v5-10 枝でそのようなファイルを変更すれば良いでしょう。それ +は Emacs の bzr に伝搬されるはずです---しかし、それが論争の的になる可能 +性があって、メーリングリストで議論することが必要かどうかを判断するために、 +追加の調査が (Miles さんによって) 行なわれるでしょう。しかし多くの変更は +明らかなバグの修正なので、たいていの場合は問題ありません。 + +@item +Gnus のファイルへの変更で、それが十分に重要な Emacs と v5-10 枝の部分で +あるのならば、変更は v5-10 枝で行なえば良いでしょう。そしてそれ +は Emacs の bzr と Gnus の git の幹に反映されるでしょう (二〜三日後に)。 +そのような変更の最も顕著な例は、ドキュメントの改善を含むバグの修正です。 + +(おそらく、対象になるソースコードが v5-10 枝と Gnus の git の幹で異なる +ために) 衝突を生じることがわかっている場合は、あなたの変更を両方の場所に +インストールしてください。そして、私がそれらを同期させようとすると衝突す +るでしょう---そういうほとんどの場合に @emph{とにかく} 衝突します。でも、 +私が二つの「同一の」変更を調べる場合に、それを解決してかつ実際にコードを +修正しなければならないことに比べれば、適切なものを選ぶだけで済む方が、多 +くの場合、私にはより簡単です。 + +@item +Gnus の開発における雑多な変更については、単に Gnus の Git の幹を変更すれ +ば、それは Emacs に反映されるでしょう。二〜三年後に@dots{} :-) +@end itemize + +もちろんどんな場合でも、私が同期させる作業を待てないのであれば、あなたの +変更を二つ以上の場所にチェックインすることはできるし、恐らく問題にならな +いでしょう。通常、変更は文字どおりにとにかく同一ですから、容易に自動的に +解決することができます (ときどき私はそのように重複して行なわれるチェック +インの中でお間抜けなもの、例えば空白文字の違いに気づいて、それらを統一し +ますけれどね ;-)。 +@c +@c Emacs で行なわれた変更を Gnus に取り込むことを、私は頻繁には行ないませ +@c ん。Gnus で行なわれた変更を Emacs に持ち上げるよりも多くの手作業を必要と +@c する傾向があるからです。 +@c +@c 私はディフォルトで週一回の同期を行なっています。さらに私は Gnus メーリン +@c グリストのあらゆるスレッドを追いかけて、話し合われているどんな変更でも、 +@c それがより最新になるようにしています (そのため、話題になっている変更への +@c 追従は 1〜2日遅れます)。 +@c +@c +@c +@c ついでに、同期に関するより詳しい説明を付記しておきましょう: -By default I sync about once a week. I also try to follow any Gnus -threads on the mailing lists and make sure any changes being discussed -are kept more up-to-date (so say 1-2 days delay for "topical" changes). +@section いろんなこと -@c +@heading @file{GNUS-NEWS} + +@file{texi/gnus-news.texi} を元に @file{GNUS-NEWS} を生成させるのは、No +Gnus から始まりました。@file{GNUS-NEWS} は編集しないでください。 +@file{texi/gnus-news.texi} を編集し、@file{texi} ディレクトリー +で @command{make GNUS-NEWS} をタイプしてから、 +@file{GNUS-NEWS} と @file{texi/gnus-news.texi} をチェックインしてくださ +い。 -BTW, just to add even more verbose explanation about the syncing thing: - -Basically my idea is that the Emacs-Gnus gateway will cause all common -files in Emacs and Gnus v5-10 to be identical except when there's a very -good reason (e.g., the Gnus version string in Emacs says "5.11", but the -v5-10 version string remains "5.10.whatever"). Furthermore, all changes -in these files in either Emacs or the v5-10 branch will be installed -into the Gnus CVS trunk, again except where there's a good reason -(typically so far the only exception has been that the changes already -exist in the trunk in modified form). Because of this, when the next -Emacs Gnus upgrade comes, it should be very easy -- just plonk in the -files from the Gnus trunk without worrying about lost changes from the -Emacs tree. - -The effect of this is that as hacker, you should generally only have to -make changes in one place: - - 1) If it's a file which is thought of as being outside of Gnus (e.g., - the new "encrypt.el"), you should probably make the change in the - Emacs tree, and it will show up in the Gnus tree a few days later. - - If you don't have Emacs CVS access (or it's inconvenient), you can - change such a file in the v5-10 branch, and it should propagate to - Emacs CVS -- however, it will get some extra scrutiny (by me) to see - if the changes are possibly controversial and need discussion on the - mailing list. [Many changes are obvious bug-fixes however, so often - there won't be any problem.] - - 2) If it's to a Gnus file, and it's important enough that it should be - part of Emacs/v5-10, then you can make the change on the v5-10 - branch, and it will go into Emacs CVS and the Gnus CVS trunk (a few - days later). - - If you know that there will be conflicts (perhaps because the - affected source code is different in v5-10 and the Gnus CVS trunk), - then you can install your change in both places, and when I try to - sync them, there will be a conflict -- however, since in most such - cases there would be a conflict _anyway_, it's often easier for me - to resolve it simply if I see two "identical" changes, and can just - choose the proper one, rather than having to actually fix the code. - - 3) For general Gnus development changes, of course you just make the - change on the Gnus CVS trunk and it goes into Emacs a few years - later... :-) - -Of course in any case, if you just can't wait for me to sync your -change, you can commit it in more than one place and probably there will -be no problem; usually the changes are textually identical anyway, so -can be easily resolved automatically (sometimes I notice silly things in -such multiple commits, like whitespace differences, and unify those ;-). - -@subsection Miscellanea - -Starting from No Gnus, the @file{GNUS-NEWS} is created from -@file{texi/gnus-news.texi}. Don't edit @file{GNUS-NEWS}. Edit -@file{texi/gnus-news.texi}, type @command{make GNUS-NEWS} in the -@file{texi} directory and commit @file{GNUS-NEWS} and -@file{texi/gnus-news.texi}. +@heading defcustoms で使う :version 情報の流儀 + +新しいカスタマイズ可能な変数を Oort Gnus (v5-10 枝を含む) に導入するとき +は、コメントを含んだ @code{:version "22.1" ;; Oort Gnus} を使ってくださ +い。あるいは、もしその機能が例えば Emacs 22.2 の Gnus 5.10.10 のために追 +加されたのであれば、@code{:version "22.2" ;; Gnus 5.10.10} を使ってくだ +さい。 +@c +その変数が No Gnus で新規だったら、@code{:version "23.1" ;; No Gnus} を +使ってください。 +カスタマイズ可能な変数のディフォルト値を変更したときも、同じことを行なっ +てください。 +@bye @c Local Variables: @c coding: iso-2022-7bit @c fill-column: 72