2011年7月11日 星期一

PHP Pear & Pecl & Perl CPAN

雖然說 PHP 有類似 Perl 的 CPAN 的 Pear 以及 Pecl 套件庫可用。

但不管是 Pear 或是 Pecl 套件數目都不多,有許多套件都是 Alpha 或是 Beta 的狀態,許多套件也未含詳細文件。

Pecl 的套件數: 265
Pear 的套件數: 569

所以我好奇去查了一下 Perl CPAN 的模組數:

69899 Uploads
22954 Distributions
96895 Modules
9060   Uploaders

這個數字比起來實在是相差太多。

我想原因有幾個,大多 PHP Programmer 少有上傳套件的習慣,也沒有這樣的需求。

50% 以上的 PHP Programmer 都是將 PHP 跟 HTML 合併在一起寫死,頂多也只會用到 MySQL ,所以更不可能作成模組上傳,就算整理出來作成套件,更沒有上傳到 Pear 的習慣。

Pear 以及 Pecl 其實並沒有提供一個很好的文件平台,也沒有制式化的文件檢查

Pear 以及 Pecl 的上傳其實沒有 Unit Test 的程序,所有上傳上去的東西,並不會在不同的平台上測試,所以沒有人可以保證你的套件在不同平台上是不是可以運行。  題外話: 其實 PHPUnit 很不錯,文件很完整、詳細,但是不知為何沒有人想要把它整合至 Pear 或是 Pecl 。

此外,Pear, Pecl 的製作門檻,對大多 PHP Programmer 的程度來說也許算高 (?) ,不得而知。

我想 Pear 或是 Pecl 的平台也許是類似 vim.org 遇到的情況 - 急就章的方式,寫了許多相當 unsafe, dirty 的網站程式,也就更不可能整理程式碼開放出來讓大家改進,也因為夠 dirty 夠 unsafe,所以就更不想去動他,所以就造成了僵持不下的狀況 (?) 。 (不得而知)

之前上 Pear 註冊帳號,發現 Pear 對於使用者註冊帳號這檔事情相當嚴格(也許是 PHP Programmer 濫竽充數的關係 ? ),Pear 以及 Pecl 需要經過人工審核,確實你真的有套件要上傳、有 Bug 要 Report,經過 2 分鐘至幾天的審核通過最後才可以上傳套件。

(也就是你如果不是認真的,就別來亂之類的意思 XD )


CPAN

Perl 的 CPAN 文化很不一樣,帳號註冊相對的比較自由,模組上傳也很自由,你要為模組取什麼名字都可以,你要上傳什麼樣無釐頭的模組都可以 (Acme:: 開頭模組 )。

在 CPAN 上頭,每一天都有人發展新的模組,每一天都有好幾百個模組被上傳、更新,舊的模組若不適用,就會被新的模組取而代之。 在 Twitter 上有 cpan_new 帳號,會自動將所有剛上傳的模組發佈出來,各式各樣的 Service 都有可能會寫出模組可呼應  (Net:: 開頭或是 WWW:: 開頭的模組) 。

模組的相關資訊也容易被整合至 CPAN:


在上頭你可以看到每個 Release 的狀況,可回溯到每個版本,或是查看測試報表,版本控制相關資訊 、Rating、 Review 等等資訊。

雖然 CPAN 上有些模組是壞的、沒有維護,但是只要作者有撰寫測試,就可以直接在 cpan.org 上看到測試報告,並且如果模組在平台上測試時如果沒有通過測試,就不會安裝到系統上,可以保證你系統的穩定度。

CPAN 上的 Smoke Test 也會將你的模組於不同平台、不同的 Perl 版本來測試並產生報表,以 Data::Flow 模組來說: 



如果對於該模組的相依模組穩定度感到不安心,你也可以透過 Dependency 頁面去查看所有相依模組的穩定度 ( 譬如像 Ruby 常有相依模組壞掉的狀況 ):



此外 CPAN 也透過 POD 的文件格式來製作模組文件,在文件中各種的 Refer 都可以正確的被導向到正確的頁面,且由於 POD 結構中包含許多格式,也因此文件的架構就會比較清楚、容易閱讀。



除此之外,也有較完整的 Bug Tracker ,是由 Best Practical 所開發的 RT (Request Tracker) 系統 (以 Moose 的 RT 頁面為例):



另外如果你需要在離線時安裝、瀏覽模組,也有 CPANMini 可使用,可製作一份最小的 CPAN Mirror 於你的電腦上安裝使用,連線時,也可再透過 CPANMini 更新。

5 則留言:

  1. What might be interesting is that Drupal, the PHP CMS has 10,701 modules and 1,175 Themes.

    回覆刪除
  2. Wow, that's really awesome,

    but are they reusable when outside of Drupal?

    回覆刪除
  3. 可以看看 http://www.phpclasses.org/ :)

    回覆刪除
  4. phpclasses 雖然有較多的資源

    可惜廣告太多,沒有制式化上傳、更新、搜尋工具可用
    也無相依性檢查、支援與單元測試。

    回覆刪除
  5. Thank you for sharing. There's absolutely a lot to know about this one. Keep posting! interior painting

    回覆刪除