<!-- -*- mode:text coding:euc-jp -*-
   $FML: chapter.sgml,v 1.5 2008/08/16 00:26:19 fukachan Exp $
-->


<chapter id="changes">
	<title>
	&fml4; と &fml8; の相違
	</title>


<para>
本章では、&fml4; と &fml8; の相違点について解説します。
</para>


<sect1 id="changes.overview">
	<title>
	&fml4; と &fml8; の違い: イメージ
	</title>

<para>
&fml4; vs &fml8; は sendmail vs postfix に相当します。
</para>

<para>
作者の視点から見れば、これがもっとも短い説明と考えています。
</para>

</sect1>


<sect1 id="changes.license">
	<title>
	&fml4; と &fml8; の違い: ライセンス
	</title>

<para>
&fml8; の開発ポリシーは
「利用できるものは、なるたけ外部から輸入する」というものなので、
利用しているライブラリのライセンスは多岐にわたります。
ただし、リポジトリは、ライセンスごとに別のディレクトリが作られています。
そのため、開発をはじめる前の切り分けは容易です。
<!--
おおざっぱに言えば、&fml8; のソースコードは GPL か BSD 準拠、
もしくは Artistic のいづれかになっているはずです。
-->
</para>

<para>
&fml4; は、ほとんどのコード(.plのもの)が独自に書かれています。
これらのライセンスは GNU Public License です。
jcode.pl は例外です、
詳しくは jcode.plの先頭部分のライセンスを参照して下さい。
また、perl module (.pm) も使われており、
それはソースツリーの module/の下に入っています。
この下のライセンスは各モジュール依存です。
そして、ソースツリーの上で、これらのファイル群は奇麗に並んでいません。
</para>

<para>
&fml8; では、
ソースツリーのトップディレクトリで、
プロジェクトもしくはライセンスごとに分類わけされています。
たとえば &fml8; 用に書かれたコードは fml/ 以下にあり、
ライセンスは Perl と同じです。
同様に cpan/ や gnu/ ディレクトリもあります。
その名の通りです。img/ は BSD ライセンス準拠です。
詳しくは、それぞれのライセンスを読んで下さい。
</para>

<para>
ディレクトリごとに分かれているため、
特定のライセンスのコードを排除することも容易です。
</para>

<para>
&fml8; は、インストール時に、これらすべてをインストールするため、
インストールした先ではライセンスが入り乱れますので注意して下さい。
</para>

<para>
ライセンスをクリアにしたい場合は、
ソースコード側の変更が必要です。
必要な代替モジュールを用意し、
インストーラの設定を変えて出荷してください。
</para>

</sect1>


<sect1 id="changes.command.mail">
	<title>
	&fml4; と &fml8; の違い: コマンドメールやエラーメッセージ
	</title>

<para>
コマンドメールやエラーメールといったメールでの返事の際には、
元メールの Accept-Language などを参考に言語の自動選択が行なわれます。
詳しくは
<link linkend="language.preference">
<xref linkend="language.preference">
</link>
を参照して下さい。
</para>

<para>
ファイルやメッセージを送り返す際の基本形式は MIME/Multipart です。
</para>

<para>
&fml4; の設計された時代は Unix が普通でしたが、
その後のインターネットの発展は、さまざまな OS や環境を登場させてきました。
インターネットの転送能力も桁違いに高速・大容量化しました。
4〜5 倍くらい効率が悪いとは思いますが、
標準化されている MIME/Multipart 以外を使うと
「読めない」ユーザが続出するでしょう。
</para>

<para>
ユーザからのクレーム対応のほうが負担といえます。よって
&fml4; にあった tar.gz や zip 形式などを実装する予定はありません。
</para>

</sect1>


<sect1 id="changes.cui">
	<title>
	&fml4; と &fml8; の違い: コマンドラインでの操作 (makefml)
	</title>

<para>
makefml とシンタックスの異なる fml というコマンドがあります。
<screen>
makefml コマンド ＭＬ名 オプション
fml     ＭＬ名 コマンド オプション
</screen>
違いは引数の順番です。
ＭＬ名とコマンドの順番が違うだけで、
実行される内容は、まったく一緒です。
</para>

<para>
動作時の表示の仕方も異なります。&fml8; のほうが Unix 的です。
&fml4; のコマンドは、可能なかぎり処理の様子を表示し、
最後に処理の変更点を表示するようになっています。
逆に、&fml8; のコマンドは、できるだけ静かに動きます。
<footnote>
<para>
逆に、makefml/fml を他のスクリプトから呼び出す場合には、
コンピュータ処理向きの出力をさせるようにすることが出来ます。
これは、けっこう出力されるものが多く、うるさい感じです。
</para>
</footnote>
これは、そのほうが Unix 風だということと、
必ずしも操作対象がファイルとは限らないため、
差分が表示できるわけではないためです。
</para>

<para>
makefml から実行される各コマンドの相違点は以下の通りです。

  <table>
    <title>
    &fml4; と &fml8; の違い: CUI (makefml もしくは fml コマンド)
    </title>

    <tgroup cols=3>

      <thead>
        <row>
          <entry> 内容	</entry>
          <entry> fml4	</entry>
          <entry> fml8	</entry>
        </row>
      </thead>

      <tbody>
	<!-- テーブル本体スタート -->
	&table.changes.cui;
	<!-- テーブル本体エンド -->
      </tbody>

    </tgroup>
  </table>
</para>

</sect1>


<sect1 id="changes.gui">
	<title>
	&fml4; と &fml8; の違い: GUI (CGI)
	</title>

<para>
&fml4; の場合、インストール後に、
あらためて GUI が使う .cgi スクリプトの生成や
apache のセットアップをする必要があります。
</para>

<para>
&fml8; では、newml 実行時に、GUI のスクリプトも自動的に生成されます。
これは下準備をするだけです。
実際に WWW インターフェイスを使う際には
apache の設定変更が別途必要で、これは &fml4; と一緒です。
知らぬまに、
インターネットから勝手に GUI でいろいろできるようになっていたら、
びっくりするでしょうから、これは良いですよね？
</para>

<para>
インターフェイスの相違は、かなりあります。
&fml4; は、わりと伝統的なベタベタな作りですが、
&fml8; はテーブルベースのものになっています。
大変ておくれな実装です(w)が、
普通は、みなさん自分でウエブインターフェイスは実装すると思います。
あくまでも、こういう風に下請けを呼ぶという見本程度
<footnote>
<para>
見本だと言っているので、
もはや、この課題を実装することはない…気がします。
</para>

<para>
課題としては、
GUI の見栄え(スキン)を選べるようにするなども考えなくてはいけないでしょう。
一応、今、実行ファイル名ごとに異なる複数のスキンがあるのですが、
動的に切替えることが現状出来ません
(出来てないことはないのですが、現状、そのスキン設定を保存してないので、
次回アクセスすると元に戻ってしまいます;-)。
いや、部分的に出来るかな？いずれにせよ、ここは中途半端です。
</para>
</footnote>
に思っていただければと。
</para>

</sect1>


<sect1 id="changes.filename">
	<title>
	ファイル名のルール
	</title>

<para>
ファイル名の命名ルールについては
<link linkend="filename">
<xref linkend="filename">
</link>
を参照して下さい。
</para>

<para>
&fml4; から &fml8; に移行する際には、
自動変換ツールが頑張って、
よろしくファイル名の変更をする手はずになっています。
手作業で変換することは、まずないとおもいますが、
以下に &fml4; と &fml8; のファイル名ルールの差分を述べます。
ＭＬのディレクトリ構成をを見る際に役に立つと思います。
</para>

<para>
受信者とメンバーリストを別々に管理するという方針は変わりませんが、
ファイル名は異なります。
</para>

<para>
ファイル名は基本的に「ベースとなるファイル名-役割」です。
役割がデフォルトの「単なるユーザ」であれば省略可です。
</para>

<para>
actives は recipients となり、ファイルの意味が明瞭になりました。
一方、members はそのままです。
</para>

<para>
members-admin は、そのままです。
仮想的に recipients-admin ファイルもありますが、いまは使われてはいません。
</para>

<para>
etc/passwd は etc/passwd-admin になり、フォーマットも若干変わりました。
</para>

</sect1>


</chapter>
