2010-04-02 75 views
20

今年晚些時候,我想發佈一個我一直在開源的PHP框架。我確實使用源代碼管理(SVN),但它的使用非常有限。我自學成才,自己開發,沒有與大型團隊合作的經驗。我對於什麼可以幫助項目取得成功有一些想法,但我對某些細節很模糊。由於它尚未發佈,我想盡我所能從一開始就設置正確的基礎架構。爲了建立和管理一個成功的項目,我需要了解什麼?設置和管理開源項目的最佳實踐

一些想法,我必須要取得成功(超越營銷呢):

  • 良好的文檔和教程
  • 自動單元測試,並建立以 推進更新到網站
  • 明確的路線圖
  • Bug跟蹤集成 源代碼管理
  • 風格指南保持代碼 c onsistent
  • 爲社區的論壇得到 支持,分享觀點,等等
  • 與 框架
  • 一個博客建立,保持了良好的社會應用實例通知
  • 保持向後兼容性 儘可能

我的一些問題:

  • 如何設置和自動化一個 步驟submit-test-commit-generate API docs-push更新到網站過程? 編輯:螞蟻還是Maven會成爲這個好人選?如果是這樣,你知道使用它們設置PHP項目的任何資源嗎?
  • 我如何處理(技術上) 來自其他用戶的意見?我如何確保 在被整合之前必須獲得批准?
  • 根據 項目社區可以避免的問題 有哪些缺陷?我寧願有 作爲友好和有益的 可能沒有很多戲劇。

我很樂意從您的經驗中學習這些觀點。如果您認爲我錯過了什麼大事,請分享一下。任何資源(最好面向初學者),你可以指向我也將不勝感激。

+0

在這裏,一個問題是一個好主意。 – 2010-04-02 16:53:00

+0

在這一點上,關於設置自動系統的第一個問題可能是我主要關心的問題。 – VirtuosiMedia 2010-04-06 16:06:41

+0

無恥的插件:http://www.openprojectguide.org/我正在撰寫一些關於開源項目的「博客」文章,主要從人們的角度來看 – 2010-04-13 13:23:08

回答

5

我剛剛開始參與社區項目,但我會就我所知道的事情給你一些建議。

如何設置和自動化一個步驟submit-test-commit-generate API docs-push update to website process?

我從來沒有把它作爲一個過程來實現。你可能只有一個清單,甚至可能創建一些腳本來完成某些任務。我從來沒有使用過任何自動上傳的源代碼控件,並且這些都是由腳本完成的。大多數時候,有一些網絡互動需要參與。

您不想在API正式發佈之前推送API更改。

編輯:工作環境

對於PHP,大部分的時間,我要麼編輯直接在服務器上,並沒有測試它,使用beta.example.com,或類似的,推到前example.com。您也可以在家用PC上設置Web環境(使用XAMPP for Windows,或者在Linux上使用標準LAMP安裝)。你可能會在這裏使用你的倉庫鏡像,所以你應該做svn commit,或者選擇適合你選擇的VCS或DVCS的鏡像。

有趣的部分是測試這與不同的PHP版本。我自己並沒有這樣做,但是你可以使用一個.htaccess文件來運行一個不同的PHP二進制文件來測試它。我不確定這是最好的選擇。

我沒有做太多的API,因爲我從來沒有創建過一個庫,但只是做一個快速搜索,我發現http://www.phpdoc.org/。它看起來像一個成熟的項目,所以這可能是一個起點。

就創建發行版而言,我通常會創建一個腳本,其中只包含作爲發行版一部分的文件(它將過濾掉任何VCS文件以及您不想在分發的文件中執行的任何操作)。你可以在linux上編寫一個圍繞find的腳本(這是我大部分時間做的),或者可能還有其他更好的選擇。

如何處理(技術上)來自其他用戶的提交?我如何確保在提交之前必須獲得批准?

這主要是由bug跟蹤器處理的,並且版本控制系統中的訪問受限。通常,您和您允許的人可以委託給VCS。其他用戶可以提交修補程序,但是可能有人會檢查修補程序,測試修補程序並提交。你可以把這些任務分成一個團隊,或者給一個人分配一個補丁,讓他們完成這些任務。

在項目社區方面可以避免的一些缺陷是什麼?我寧願儘可能沒有戲劇性地儘可能友善和樂於助人。

我只是要確保儘可能保持項目成員和社區的積極性。會有一些分歧,它會驅趕幾個人,但只要你有一個穩定的產品來滿足大多數人的需求,我認爲這是任何人都可以期待的。

+0

API文檔的好處。也許想要一步完成所有這些都是不可能的,但是你能否詳細瞭解你如何在多個步驟中完成它?你用什麼工具等等? – VirtuosiMedia 2010-04-02 16:58:52

+0

請參閱上面的「工作環境」部分。 – bradlis7 2010-04-02 20:23:06

2

我想補充一點,您應該儘可能讓用戶儘可能輕鬆地運行整個代碼並修改代碼 - 這些「超級用戶」可以「轉換」爲開發人員或至少是發送較小的補丁。

+0

感謝Felix小費,這是個好主意。 – VirtuosiMedia 2010-04-02 23:49:40

2

不要試圖自己做所有 - 對於開源項目,有幾個託管提供商可以解決大部分問題。我推薦codeplex或谷歌代碼。

設置構建腳本將取決於您設置的平臺的一定數量,但一般情況下,一旦開始使用任何構建腳本,就可以輕鬆地將所需的任何工具添加到腳本中。

如果您確實需要您描述的單步過程,則需要構建服務器。我使用了TeamCity,我已經設置了它來監視svn中的任何更改,並在觸發生成/測試時觸發構建/測試。構建服務器通常可以執行任何步驟,並將其放入構建腳本中。

+0

TeamCity看起來很有趣。你是否將它用於PHP項目?你知道任何類似的東西,我可以比較嗎? – VirtuosiMedia 2010-04-08 16:17:18

+0

我沒有使用它的PHP,但它不是語言特定的。它有一個命令行runner以及msbuild,ant等,只要你有某種構建腳本在服務器上運行,它就可以工作。 CruiseControl也很流行,儘管我自己並沒有使用它。 – 2010-04-09 00:00:21

4

一個小的建議,這對我來說很好:開始使用第一人稱複數代詞,而不是單數的代詞。也就是說,談論「我們」和「我們」而不是「我」和「我」。當他們覺得自己是團隊的一部分時,鼓勵其他人蔘與,而不是當他們感覺自己在爲自己的自我擴張做出貢獻時。

+1

看起來很奇怪,這是我接受的答案。它只回答了一個問題,甚至沒有完全回答。哦,我不會抱怨*(抱怨)* :) – bradlis7 2010-05-05 15:58:23

4

您需要做的最重要的事情就是吸引用戶。沒有用戶,你不會得到任何貢獻,開發人員也可以幫助你。因爲開發者首先是用戶,然後他們決定擴展/修復他們使用的東西,並可能成爲貢獻者。

因此,要獲得用戶,你應該考慮

  • 描述了一兩句話你的框架做什麼,在你的項目頁面
  • 提頂端的框架,如何使用,什麼,什麼它是最有用的
  • 添加了很多關於如何使用它的例子
  • 提到你的框架是否穩定,beta或alpha。這很重要,因爲用戶在開始使用它之前需要知道它是否需要繼續改進並繼續工作 - 大多數用戶不希望使用被遺棄的框架(也請記住,很多用戶檢查你的提交,看看你是否真的在做它 - 如果你最後一次提交到版本庫是幾個月前,那麼你並不真正在做它,所以作弊是不可能的)

如果你得到了所有這些,並且人們開始提交補丁,你可以使用補丁工具將這些補丁應用到源代碼中。根據您的版本控制系統,您可以使用GNU補丁,版本控制附帶的diff/patch工具,或者甚至可以使用GUI工具來幫助您完成此操作。 SVN還沒有補丁工具,但'svn diff'會創建一個補丁文件,然後您可以使用GNU補丁工具,或者如果您使用的是TortoiseSVN,請將補丁文件右鍵拖動到您的工作副本並有TortoiseMerge適用於你。

,並就如何最好地與社會各界打交道:

  • 在時間答題,不要等待超過兩三天來回答問題
  • 嘗試是好的,甚至心煩生氣的人。只有當他們繼續打擾告訴他們(如果可能,仍然以一種很好的方式)去其他地方
  • 始終在郵件列表上討論項目。你不想一遍又一遍的重複同樣的話題 - 如果你有一個郵件列表,只需將用戶指向檔案的討論開始從頭再來

之前,你應該看的談話「How Open Source Projects Survive Poisonous People (And You Can Too)」 - 這非常好,並且告訴你很多關於如何處理'有毒人員'的問題,以及如何處理所有參與項目的人員。

1

Git閱讀了作爲替代SVN

  • 免費的公共資源庫/ bug跟蹤/維基/啓用叉社區Github(它承載symfonyPHPUnit在其他之中)
  • 我如何處理(技術上)來自其他用戶的意見?我如何確保這些意見在被集成之前必須獲得批准?「 - 使用Git,將您/您最接近的團隊發現的最感興趣的東西拉到主分支

一致的API

  • 得到啓發其他公共API:■
  • 只在主要版本
  • 猜測的

有趣的爲用戶&開發商改變

  • 明確的目標(您的路線圖 - 優秀)
  • 有用,禁忌一切可用
  • 好用,但還是不容易的,足以對寫/維持自己動手

您可以查看Ant或Phing來構建您的項目。在構建中包含CodeSniffer,您可以節省檢查基本格式錯誤/差異的時間。

這些都是技術祕訣,關於柔軟的部分...尊重人類,很多興趣和過分興奮他們的貢獻,讓他們覺得他們不是在浪費時間。這會吸引我。

+0

爲什麼downvote? – chelmertz 2010-04-12 18:05:28

0

你有一個偉大的想法開始。你可能不得不從修剪它們開始!問問自己什麼是第一次發佈的必要條件。

  1. 自動化的構建和測試,腳本可以使用Ant,Maven的或phing的PHP項目來完成。

  2. 您可能需要一臺主機才能演示產品。對於很容易找到的PHP。

  3. 您需要一個開源的託管服務提供商 - 尤其是github(也包括谷歌代碼,源代碼等)。Github提供了錯誤跟蹤,默認許可證,博客和用於接受來自社區的更改的強大機制。基於git構建,它很好地促進了分佈式項目。

儘管一步構建並安裝就緒是很好的,但自動化其他變化的集成可能並不重要(或不理想)。

祝你好運!