2013-05-17 55 views
0

假設您有一個大的多服務集成項目。您突然決定將這些服務之一作爲開源代碼。你會怎麼做而不會泄漏其他部分?如何使項目的一部分開放源代碼?

例如,釋放服務的整個存儲庫可能不起作用,因爲其他服務的草圖曾經駐留在此存儲庫中,並在之後分開。

另外,您將如何處理與「完整性」相關的部分。您可能有兩個組件A和B,它們協作,但您只想開源A.您將如何處理與B相關的代碼?

其他人如何達到相同目標的好例子會有很大幫助。

回答

1

將軟件作爲開源軟件發佈時,需要決定許可證。有幾個流行的批准的開源許可證。在OSI批准的許可證,你不應該選擇一個未經批准的許可證,或者如果你想你的工作被別人通過設計自己的許可證: http://opensource.org/licenses/category

當在開源許可證X釋放你的軟件包A,你沒有義務自己遵守許可證的條款。您保留包A的版權,即使其他許可您的軟件的用戶不允許將A的組合版本與非免費包B分發,您仍可以執行此操作。

但是,如果程序包A仍然在使用中,而手頭沒有程序包B,並且/或者如果您希望其他程序爲A做出貢獻,則只有在其他程序對A有貢獻時纔開始共享與他們的部分A版權。實際上,如果他們根據許可證X向您提供回報,您將不會再被允許在未經他們明確同意的情況下分發A和B的組合(有效地授予您個人許可證)。

現在讓我們看看你有什麼選擇:

  • 發佈包A以下的許可許可證Y.的BSD許可證是這樣一個許可證的最突出的例子。此許可證允許每個人將A與任何非免費套餐B相結合。它還允許每個人以非自由條款將A重新許可給其他人。這取決於你是否有問題。使用此許可證發佈的示例軟件:X.org顯示服務器,LLVM編譯器,Mach內核(用於OS X),BSD操作系統。

  • 發佈包A根據嚴格不允許許可證X. GNU GPL v2/v3許可證是最突出的示例。只有在相同或相同的許可下才允許重新分配包裝X.該軟件不能鏈接到非等效許可的軟件並重新分發。 (允許自己鏈接A和B,但不允許分發)。您可以將GPL軟件與BSD軟件鏈接起來,因爲BSD軟件在您的發行版中成爲GPL許可證(因爲BSD許可證允許)。如果仍然從外部人員的貢獻中獲益,請使用版權協議,這些人士可以向您提供其貢獻的完全版權。因此,即使A包含其他代碼,您仍然可以自己分發非GPL許可證下的軟件包A,B.這樣做的示例軟件:MySQL。

  • 發佈軟件包A不太嚴格不允許許可證Z. GNU LGPL v2/v3許可證是最突出的例子。這些許可證的行爲與上述許可證相似,只是允許將程序包A鏈接到任何非LGPL軟件並進行分發。被授權人不得以非LGPL條款重新分配您的作品,但可以將其與非免費軟件相結合,例如通過插件系統。大多數使用此許可證的項目基本上都是庫而不是最終用戶軟件。所以你可以在你的非免費項目中使用這些庫。突出的例子:Qt,Webkit(用於Chrome和Safari)。

選擇解決方案時的問題基本上是:你想給他人使用包A多少自由度?您提供的自由越多,您就越有可能找到收養,並且也將回饋給您的項目。然而,以最寬鬆的形式,你爲那些只從你的A工作中受益的人打開大門,可能會與你競爭,而不是回報給你和/或公衆。

+0

感謝您的回答,但我正在尋找的是技術「如何」。 – SeMeKh

相關問題