2011年11月20日 星期日

PHP 的 PEAR 生態圈問題



PHP 的 PEAR 生態圈有很多很嚴重的問題




1. 預設的 package 都是 alpha version ,沒人敢用,沒人敢用就得自己重寫

2. 就算重寫了,PEAR 套件的規格檔也是相當麻煩攏長的 XML,PEAR 也沒有提供好用的工具讓你建制 XML 規格檔 ,能跨過門檻的人就更少了,於是最後形成一種馬太效應,更沒有人願意釋出套件。

3. 釋出套件得先提 Proposal ,官方人員認可了才可允許套件上傳。

4. 使用 PEAR 下載的套件並不會預設執行測試(可能也沒有測試),所以套件作者可能都不知道有問題。

5. PEAR 回報 Issue 相當麻煩。

6. 無法評估每個套件的狀態,版本相容程度。

雖然寫 PHP 的人很多,但是能夠釋出的共用套件卻相當少,大多都相依於 Framework 或是大型 CMS。而目前能夠釋出 PEAR Package 的大多都是大公司,每個大公司幾乎都是各自為政的狀態,自己建自己的 PEAR Channel ,自己的文件瀏覽服務,每個做的都比 PEAR 官方的好。

但又因為 PHP PEAR 官方並不是很開放,PHP 版本功能差異很多,這讓很多套件無法達到向後相容 (backward-compatible) ,而這些 PHP 公司也無法貢獻回原有的社群,只能另起爐灶。 (如 packagist, pear2, pearfarm .. 等等)

要解決這個問題,得先定義好一個夠彈性、簡易的 Meta File 規格,能夠產生一個向後相容的 PEAR package.xml 規格檔,讓套件包裝簡化(同時也得相容 Pyrus 才行)。

接著建立一個新的服務,使用不同版本的 PHP 建立測試檔,讓每個套件的穩定、相容程度都能輕易辨識,再慢慢的再把舊有的東西 (舊時代 Java 狂的遺毒) 逐漸汰換掉 ....

(這個大概是 Perl 社群幾十年前在做的事情吧? XD

詳見:
http://www.brainbell.com/tutors/Perl/CPAN_History.htm