• libexec/fmlwrapper (wrapper)
    Bootstrap() を起動する。
    • /etc/fml/main.cf を読み込む。 読み込むと fml のバージョンが分かる。
    • @ARGV を評価し、 どの config.cf 群をロードすればいいのかを準備する。 default_config.cf はバージョン依存であるので、 ここで評価することに注意。
    • libexec/fml ( バージョン依存 )ファイルを ロードし、
      • ProcessSwitch() を実行して、配送用、コマンドモード用 プログラム/プロセスなどへ制御を移す(分岐する)。
      • $0 から自分の名前を知り、 どのプロセスへ分岐すればいいのかを判断する。
      • (ポリモーフィズム) ダイナミックバインディングし、 プロセスオブジェクトを生成する( fork(2) という意味ではない)。 そして、プロセスをスタートさせる。 具体的には
        		$process = new FML::Process::なにか;
        		$process->run() 
        		
        を実行する。
    fmlwrapper (uses) Standalone.pm
       |
      * 動的にライブラリ(バージョン情報を含む)を選択する
        例: /usr/local/lib/fml/5.000/ほえ/ほえ.pm
       |
      fml
      * 動的にクラスをバインディングしつつ、プロセススタートする。
           実際のコードは $process->run() などとなるが、書き下すと
           このようになるだろう。
    
           FML::Process::Distribute->run() |
           FML::Process::Command->run()    |-(uses)-> FML::Process::Kernel
           FML::Process::Mead->run()       |          |   
                                                      |-  FML::Parse
                                                      |-  FML::Config
                                                      |-  FML::Log
                                                      |-   ... その他 ...