[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:1996] Would anyone like to release Meadow immediately?



北口です。まだちゃんと頭の中でまとまっていませんので、つらつらと...

圭一> 私としては、いわゆる binary package ではなく、 ports みたいな 
圭一> make の自動化というほうが、うれしいかなと思います。

圭一> Elisp の場合、純粋に *.elc だけを install するって言うのは、個人
圭一> 的には考えられませんし、 GNU Emacs の流儀ではありませんので、
圭一> package のサイズのことも考えると、 make の自動化がうれしいのでは
圭一> ないかと思います。

北口> ports は私も好きなのでそれができるに越したことはないと思うのです
北口> けど、make 時にいろいろなツールを要求されると嬉しくないなと思います。
北口> だから、ports 的動作があってもいいけど配布物としては packages 的に
北口> なっている方が良いかな、と。ただ、

圭一> 私は基本的に...

圭一> Elisp コードは source 配布、 Windows binary は binary 配布という
圭一> 方針にしたいと思っています。

圭一> ;; 前者のコンパイル環境は絶対にあるはずだけれど、後者のものはそ
圭一> ;; うとは限りませんし、いろんなものがありますので。

Meadow のバージョンアップを考慮に入れるなら、.el をコンパイル時に何か
処理を行うもののことを考えてこの方が良さそうですね。

圭一> で、自分で Windows binary を作りたい人以外には、 make.exe 等を要
圭一> 求しないようにする。というのが望ましいと思っています。

圭一> 問題点の洗い出しも含めて、必要なこと、および私の考えをあげてみま
圭一> す。
圭一> ;; (技術的な|コストの)問題はとりあえず置いておきます。

圭一> 1. パッケージ管理パッケージ

圭一> Meadow の core package に含めてしまうという手もありますが、 core
圭一> package を小さくするという意味と、バージョンアップのことを考えて、
圭一> ange-ftp を使った boot strap を Meadow の core package に含めて
圭一> おいて、パッケージを使いたい人は、これをインストールするようにす
圭一> るというのが良いのではないかと思います。

圭一> ;; gzip, tar, patch, wget 辺りを含めることになるのではないでしょ
圭一> ;; うか。

これは確かに必要ですね(もしかすると、make もかも)。

圭一> 2. パッケージ選択

圭一> 特定の URI に対応パッケージ情報のリスト置いておき、それを取得し
圭一> て一覧選択できるような elisp アプリケーションを作る。

圭一> ;; リストファイルの内容は、パッケージ名、バージョン、配布元の 
圭一> ;; URI 位でしょうか。

上記に加えて、パッケージのバージョン、簡単な(一行程度の)説明、あたりが
欲しいかなと思います。

圭一> 3. パッケージ情報取得

圭一> リストで選択したパッケージの URI から、 ports 的なものを取得する。
圭一> パッケージ本体は、別経路での取得、要不要の判断の機会のことを考え
圭一> て、この中には URI を記述するようにする。

圭一> この中には...

圭一> 1) 必要なファイルの URI list
圭一> 2) パッケージ依存情報
圭一> 3) Document (なにをするものか、および、 patch による変更箇所位は
                                              ~~~~~~~~~~~~~~~~~~~~
これ重要ですね。Linux でも FreeBSD でも、「げ、なんでデフォルトと
違うんだ?」と思う時がありますし。

圭一>    書いておく)
圭一> 4) Make / install のための elisp code

5) 作成されるディレクトリ & install されるファイル一覧

が、Uninstall のことを考えると必要だと思います。
たいていはディレクトリまるごと、で大丈夫でしょうけど。

圭一> を含める。

圭一> 1) がの内容が小さいものであれば、本体もこの中に入れてしまって、 
圭一> URI を current direcotry にしておくというのも良いかもしれません。

圭一> 4. Make / install

圭一> 1) 3. 4) の elisp code は、 uninstall 情報を特定のファイルに出力
圭一>    する。

圭一> 5. Uninstall

圭一>    4. 1) の情報と、インストール済みパッケージの依存情報を元に不
圭一>    要なものを削除する。

圭一> 6. その他

圭一>    自分でインストールしたものもパッケージの依存情報として使える
圭一>    ようにする。

これは何か方法を用意したいですよね。自分で入れたがために、依存関係が
ボロボロになるのは避けたいですから...

北口> 個人的には

北口>   Meadow/pkg/lisp/app-name         (本体)
北口>              doc/app-name          (ドキュメント類)
北口>              db/app-name           (uninstall 用情報)

北口> こんなのかなぁ、と思ってます。
北口> もっとも、.exe は Meadow/x.xx/bin に入れるしかないと思いますが。

北口> # pkg/bin を作ってパスを通しておくのもいいかもしれませんね。

北口> ただ、SKK などデフォルトでは Meadow/x.xx/site-lisp に入るものは
北口> どうしたものだろう...

圭一> Compile 時に emacs 環境による最適化を行うものもありますので、
圭一> Meadow/x.xx/pkg/lisp/app-name というのもやはり必要かもしれません。

圭一> あまりディレクトリを増やしたくないというのであれば、subdirs.el 
圭一> が recursive にディレクトリを検索するという特徴を生かして、各 
圭一> site-lisp の下に pkg/app-name というのを作るというのも、良いので
圭一> はないかと思います。

なるほど、その方法が良さそうですね。すると、

  Meadow/x.xx/site-lisp/pkg/app-name
         site-lisp/pkg/app-name
         pkg/doc/app-name
         pkg/db/app-name

こんな感じでしょうか(あと info もあると思うけど)。

次は、生贄^H^H試験用アプリをいくつかピックアップして具体案を
煮詰めながら検討、というところでしょうか。


--
Shuichi Kitaguchi // ki@xxxxxxxxxxxxxx kit@xxxxxxx