[英]Best Practices for Setup and Management of an Open Source Project
今年晚些時候,我想發布一個我一直在開源的PHP框架。 我確實使用了源代碼控制(SVN),但它的使用非常有限。 我是自學成才,我自己開發,沒有與大型團隊合作的經驗。 關於什么可以幫助項目成功,我有一些想法,但我對一些細節很模糊。 由於它還沒有發布,我想盡我所能從一開始就建立正確的基礎設施。 為了設置和管理成功的項目,我需要知道什么?
我必須使一些想法成功(除了營銷之外):
我的一些問題:
我很樂意從你對這些方面的經驗中學習。 如果您認為我錯過了任何重大內容,請分享。 您可以指向我的任何資源(最好是面向初學者)也會非常感激。
我剛剛開始參與社區項目,但我會就你所知道的事情給你一些建議。
如何設置和自動化一步提交 - 測試 - 提交 - 生成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
一個關於find
的腳本(這是我大部分時間都在做的),或者可能還有其他更好的選擇。
如何處理(技術上)其他用戶提交的內容? 如何確保在整合之前必須批准這些提交?
這主要由錯誤跟蹤器處理,並且在版本控制系統中受限制。 通常,您和您允許的人可以提交VCS。 其他用戶可以提交補丁,但之后您可能會有人查看補丁,測試補丁並提交。 您可以將這些任務拆分為一個團隊,或者為一個人分配補丁並讓他們全部完成。
在項目社區方面可以避免哪些陷阱? 我寧願讓它盡可能友好和樂於助人,沒有太多的戲劇性。
我只想確保項目成員和社區盡可能保持積極態度。 會有一些分歧,它會驅使一些人離開,但只要你有一個穩定的產品,滿足大多數人的需求,我認為這是所有人都可以期待的。
一個小的建議,對我來說很有效:開始使用第一人稱復數代詞,而不是單數代詞。 也就是說,談論“我們”和“我們”而不是“我”和“我”。 它鼓勵其他人在他們感覺自己是團隊的一部分時參與,而不是當他們覺得他們正在貢獻自己的自我強化時。
您必須做的最重要的事情是吸引用戶。 沒有用戶,您將無法獲得任何貢獻,開發人員會幫助您。 因為開發人員是用戶的第一,然后他們決定擴展/修復他們使用的東西,並可能成為貢獻者。
所以為了吸引用戶,你應該考慮
如果你得到了所有這些,並且人們開始提交補丁,你可以使用補丁工具將這些補丁工具應用到你的來源。 根據您的版本控制系統,您可以使用GNU補丁,版本控制附帶的差異/補丁工具,甚至可以使用GUI工具來幫助您完成此操作。 SVN沒有補丁工具(但是),但'svn diff'將創建一個補丁文件,然后您可以使用GNU補丁工具,或者如果您正在使用TortoiseSVN,請將補丁文件右鍵拖動到您的工作副本並讓TortoiseMerge為您應用它。
以及如何最好地與社區打交道:
而且你應該看一下“ 開源項目如何生存有毒人群(你也可以) ” - 這非常好,並且告訴你很多關於如何處理“有毒人”以及如何處理所有涉及的人在你的項目中。
我想補充一點,您應該讓用戶盡可能輕松地完成所有操作並修改代碼 - 這些“高級用戶”可以“轉換”為開發人員或至少發送較小補丁的人。
不要試圖自己完成 - 對於開源項目,有幾個托管服務提供商可以解決大多數問題。 我推薦使用codeplex或谷歌代碼。
設置構建腳本在某種程度上取決於您設置的平台,但一般情況下,一旦開始使用任何類型的構建腳本,就可以輕松地將所需的任何工具添加到腳本中。
如果您確實需要您描述的一步過程,則需要構建服務器。 我使用TeamCity,我已經設置了它來監視svn中的任何更改並在檢查某些內容時觸發構建/測試。構建服務器通常能夠執行您在構建腳本中執行的任何步驟。
閱讀Git作為SVN的替代方案
一致的API
對用戶和開發人員都很有意思
您可以查看Ant或Phing來構建您的項目。 在構建中包含CodeSniffer ,您將節省檢查基本格式錯誤/差異的時間。
這些都是關於柔軟部分的技術提示......尊重他人,非常感興趣,對他們的貢獻過於興奮,讓他們覺得他們不浪費時間。 這對我很有吸引力。
看看Karl Fogel關於制作開源軟件的書。 它可能包含你提出的所有問題。
您還應該計划參與社區活動。 我建議閱讀Jono Bacon的社區藝術[ http://www.artofcommunityonline.org/] 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.