Sarabande.jp: PukiWiki の開発プロジェクトの再建案」についてのAdv.としての回答

PukiWiki Adv.の最近の開発指針としては、オブジェクト化を第一にしています。Plus!のコードでファイル操作系の処理が処理系ごと書かれていてわかりにくかったので、まずはSplFileInfoクラスを派生させたFileクラスで書き換えることからはじめましたね。次に、Wiki構文をHTMLに変換する処理をRendererクラスに書き直しました。他にも結構いじってますが、クラス名のネーミングセンスの良し悪しはさておき、Plus!や無印版よりも読みやすくなっているはずです。

ただ、知名度が低いのか、需要がないのかよくわかりませんが、現在のところ、フォークして「こうしたらどうだ」と提案する人はあまりいませんね。それ以前にまだ、コードの書き直しも完了してないので、こちらとしても、仕様が安定していないため受け入れ体制もできていません。(コミットごとにファイル構造や関数名が大幅に変わってしまうことがありえるという状態)

古い PHP のバージョンに対応できない状態が続けば、ユーザーがセキュリティメンテナンスされておらず安全ではない古いPHP のバージョンを使うことを強制させることになるし、PHP 5.3 以降を対象とする PukiWiki のプラグインや別の CMS を導入しようとするユーザーの妨げになる。

おっしゃるとおりです。別のCMSに入れるには、グローバル変数が多いためそこを減らしていくことも必要です。

PukiWiki をもとにした派生プロジェクトがいくつか存在するので、方針としては、それらのプロジェクトと協力関係をつくれるようにすることだ。

無印版のリーダーのhenoheno氏の派生版に対する態度から考慮すると難しいと思います。そもそも、そういう態度が取れるならばPlus!の機能の多くが無印版にも取り入れられているでしょう。自分としては、もう諦めちゃってる感がありますね。だからこそ、互換性を考慮せず、エンジンを0から書き直せているわけですし。その辺の考え方が、Plus!との大きな違いです。

開発プロジェクトの改善案としては Github に移行し、派生プロジェクトとパーサーなどの独立した機能のライブラリやデータのために個別のリポジトリを用意し、Composer を使って構成管理できるようにすることである。

composerの仕組みを考えると他のPukiWikiとの連携は難しいと思います。composer自体__autoload関数の性質を応用したものなので、オブジェクト指向なコードでないと呼び出しには使えません。無印版や、Plus!からAdv.のコードをcomposerを通じて参照させることは可能です(グローバル変数が多いので厳密にはそうではない)がその逆はできません。Adv.としても、まだ機能ごとに処理を十分に分割できるレベルではないので厳しいですね。

ソースコードの改善に関しては、ほかのプロジェクトが開発しているフレームワークやライブラリを採用し、標準化をすすめ、新しく参加する開発者の学習コストを下げる。

Adv.では、オブジェクト指向化の他に、phpdoc形式で関数に処理内容を書くようにはしてありますが、十分ではありません。なかなか、そちらの方までリソースが回せません。無印版やPlus!で使われている旧関数との対応状況は、legacy.phpで各自確認してとしか言えない状態です。

ただ、Setter/Getterメソッドでコードを書いているため比較的わかりやすいと思います。


現在のAdv.の要約:協力者は欲しいけど、まだ受け入れられる状態でないところが歯痒い。