開發(fā)者:如何選擇合適的開源庫?
豐富的開源資源為開發(fā)者提供了便利,但如何在這么多的資源中找到適用自己項目的呢?國外開發(fā)者Daniel Marbach(他的介紹)在其博客中詳細(xì)介紹了相關(guān)技巧。
Daniel Marbach認(rèn)為利用開源庫可以大大提高開發(fā)速度,他經(jīng)常鼓勵自己的團(tuán)隊成員在開發(fā)中選用開源項目。他總結(jié)選用開源庫的技巧如下:
1. 首先根據(jù)自己的項目性質(zhì)選擇合適的開源許可證。
對你所開發(fā)軟件的顧客和應(yīng)用對象來說,許可證是否適用非常重要。例如,在受監(jiān)管的環(huán)境下,通常只有Apache2可用。
2. 定義你要解決的問題類型。
例如需要解決的是軟件的分發(fā)、緩存、持久性還是松散耦合?
3. 提煉出問題的mate標(biāo)簽和描述性短語。
例如,如果你需要解決的問題是關(guān)于在多個機(jī)器中的***路徑,你的標(biāo)簽或短語可能會是遺傳算法、job-Shop Scheduling、規(guī)劃圖、優(yōu)化調(diào)度算法、最短路徑等。
4. 瀏覽codeplex, google code or sourceforge (github.com 也是個很有價值的網(wǎng)站) ,并列出初步篩選到的項目。
例如:在IoC/DI列表里,可以找到ninject, structuremap, autofac, windsor等開源項目。
5. 找到這些項目的主頁,分別查看項目的***進(jìn)展,標(biāo)出那些很久沒有更新或者已經(jīng)停止開發(fā)的項目。
注意主頁上的新聞、發(fā)布通告、提交記錄、網(wǎng)站更新等。我一般會從列表中刪除掉那些超過6個月沒有做更新的項目。
6. 到代碼庫頁找到相關(guān)測試組件。
建議你將沒有單元測試組件的項目從列表中刪去,也許你覺得這個要求過于苛刻了,但如果沒有單元測試,如何能保證這個項目的質(zhì)量呢?
7. 在項目主頁中確認(rèn)有相關(guān)文檔。
從選好的項目列表中刪去那些沒有文檔、代碼示例或適用指南的項目。畢竟學(xué)習(xí)一個全新的工具或框架我們需要付出一定的精力,一個全面細(xì)致的文檔是非常必要的。
8. 檢查項目源代碼是否指定了版本控制系統(tǒng),并查看是否有擴(kuò)展點(extension points)。
理想的開源軟件庫或框架并不限制你使用特定的日志框架或依賴注入容器(DI container)。而多種擴(kuò)展點可以為你提供定制化日志系統(tǒng)、容器等的可能性。
還有其他一些篩選原則,你可以根據(jù)所作項目的需求進(jìn)行考查:
1. 是否附有構(gòu)建腳本(build script)
2. 該開源項目小組是否持續(xù)使用同一集成開發(fā)環(huán)境。
3. 該開源項目是否有清晰的road map。
4. 該項目是否設(shè)有問題跟蹤器(issue tracker)?
5. 是否很快就有社區(qū)補丁推出?
6. 在社區(qū)中,關(guān)于該項目的問題反饋是否迅速?
7. 其他的開發(fā)者是否樂于使用該開源項目,在社區(qū)中關(guān)于該項目的知識技巧是否很快傳播。
8. 有多少活躍的項目貢獻(xiàn)者?
9. 版本號管理是否清晰?
10. 對于來自社區(qū)的具體需求,該項目的改進(jìn)和集成情況?
外文出處:http://www.planetgeek.ch/2010/06/20/how-to-select-open-source-libraries/
【編輯推薦】