2010-01-01 41 views
5

我正在尋找關於如何通常做出發佈第一個開源項目源的技術部分的文檔,特別是在C/C++,Java,Python中的庫密集型的東西。開源項目是如何組織和部署的?

舉個例子,如果我建有像Netbeans和各種庫類似的Xerces-C和升壓IDE中的一個C++項目,我想了解這些問題:

  • 這是在我自己的環境之外組織構建過程的最常見工具,更重要的是,我如何以「通常正在完成」的方式學習它們?我使用了許多開源項目,當然可以讀取構建代碼(makefile和config選項等),但是這並不能告訴我如何實現,什麼是重要細節以及通常期望的內容。

  • 是有特定的語言(如那些提到的)像上部署「的編碼風格的指導?是否有開源項目的指導方針?

  • 部署源代碼(而不是用apt /端口/等,在那裏你可以解決依賴包)時,什麼是部署庫依賴的典型方式是什麼?

我知道我可以讀取所有聯機幫助和所有的文件,但我想閱讀有關「公約」以及如何實施和預期,而不是所有可能的技術選擇。

我發現這是另一個計算器後,很高興,但不是很具體: http://producingoss.com/en/producingoss.html

回答

2

讓我們看看開源的特點之一。如果您想了解如何部署它,請下載幾個類似的開源項目並向他們學習。所以,找出一個像你的做法,並研究其來源。

它爲什麼要幫助?問題是,開源項目能夠建立在用戶的機器容易。否則沒有人能夠爲他們做出貢獻。因此,有關如何部署它們的所有必要信息通常包含在您下載的來源的INSTALLREADME文件中。它們通常由幾個簡單的步驟組成。出於同樣的目的,檢查可用性和先決條件版本是自動執行的(在configure腳本中),有時這些腳本甚至有助於安裝它們。

的普遍預期是什麼樣的東西

# Download sources (this line is read from your website) 
wget http://myapp.org/myapp-source-2.15.tgz 
tar -xzf myapp-source-2.15.tgz 
cd myapp-2.15 
less INSTALL 
# read INSTALL file, where instructions about installing prerequisites are 
./configure --help 
# Read help, learn about possible options 
./configure --prefix=/install/here --without-sound 
make 
make install 

如今,一些應用程序使用cmake代替autotools(與configure腳本stufff)。

我懷疑Linux項目實際上是否需要NetBeans作爲構建系統 - 這可能是一種矯枉過正。但是這個IDE似乎生成了makefile,所以將它們發送出去。爲方便起見,您也可以將特定於IDE的porject文件提交到存儲庫,但它不應該是構建軟件的主要方式。

裏有一些更多的東西用戶希望在你的包找到:

  • 許可信息(通常在LICENSE文件在每個源文件的開頭一樣)
  • 鏈接到項目主頁(其中報告bug)
  • 編碼指導原則(如文本flie)
  • 的維護者信息(如何凹凸版,如何添加模塊等)
+0

你說的對Netbeans來說,我說的是,我希望它能夠獨立於我自己的私人環境。 也許你是對的,只是閱讀大量的資料和文檔會有幫助,但我希望有一些東西像標準的方式來做到這一點,並描述它是如何完成的。configure/make/makeinstall過程當然是這樣的,我想知道是否有人可能在整個包裝過程中向一般公衆寫了一本書或一個站點(因爲'正常'的書是關於運輸產品的)。 – 2010-01-01 13:25:11

+0

對於從NetBeans轉換爲通用makefile,您可能需要編寫一個特殊的「維護者」腳本(也可以發佈它)。關於組織代碼,除了撰寫有關使用特定工具(如autotools或cmake)外,沒有太多可寫的內容。只要檢查任何源代碼應該在那裏(我會編輯我的答案的一些想法)。 – 2010-01-01 13:35:17

2

您可以用http://llvm.org/docs/DeveloperPolicy.htmlhttp://llvm.org/docs/CodingStandards.html開始。 LLVM項目是一個組織良好的開源項目。

+0

謝謝,但這更多的是關於編碼標準,而不是源碼部署/構建標準,我正在尋找關於如何擺脫'......以及它在我的機器上運行......'的文檔。 – 2010-01-01 11:53:28

+0

我不確定這是否有幫助,但這是我的項目:http://ellcc.org/installation.html。說明有點複雜,因爲我使用了各種來源的東西。 – 2010-01-01 12:07:58

2

你似乎在寫Linux應用程序,你可能想看看GNU自動工具如autoconf。實際上有a good book,他們會爲你處理大多數依賴問題。

+0

不錯的鏈接,謝謝。 – 2010-01-01 13:42:16

1

我建議這樣的:http://producingoss.com/

這本書解釋了大部分的常用程序,以及大量的社會事物,F.E.如何應付貢獻者。

0

什麼是你正在尋找的是構建系統++

如果開發POSIX(Linux)的平臺,或者你使用MinGW在Win32下才起作用,我會建議學習如何使用自動工具的工作 - 的autoconf/automake/libtool和朋友。

它給你,源代碼打包,配置,測試,安裝。他們對於分銷商來說非常適合(deb/rpm)。

他們有相當陡峭的學習曲線,但他們是這些任務非常強大的工具。但是,如果你想支持MSVC編譯器,我建議看一看CMake,恕我直言,它不那麼強大,需要更多的寫作,但你會需要這個Windows與所有dllexport /進口問題(或,用不那麼溫柔的話語 - 廢話)。

這就是你要找的。