當公司要求您的著作權
開發自由軟體並以 GNU GPL 發布的公司,有時會以其他方式發布某些程式碼副本。如果他們以不同的許可證向付費的特定用戶發布完全相同的程式碼,通常允許將程式碼包含在專有程式中,我們稱之為「銷售例外」。如果他們完全以專有的方式發布某些版本的程式碼,我們稱之為發布純專有版本的程式。
「銷售 GNU GPL 的例外」解釋了為什麼銷售例外是可接受的,儘管只是勉強可以接受。相比之下,發布純專有版本是完全錯誤的,就像任何其他專有軟體一樣。
公司通常使用他們開發的程式碼來做這些事情。由於他們擁有該程式碼的著作權,他們可以合法地以任何方式發布它,甚至是並行地以多種方式發布。但是,當您發布該自由程式的修改版本,而公司希望將您的變更納入其版本時,會發生什麼情況?
由於您是在 GPL 許可下獲得該程式,當您發布修改後的版本時,您必須以 GPL 許可它。如果公司收到副本,它將能夠在 GPL 許可下使用這些變更;它將不被允許將您的變更納入該程式並為其銷售例外。它也將無法發布包含您程式碼的純專有版本。如果這是您想要的結果,您預設就能得到它。但是,如果公司打算銷售例外,它可能會決定不使用您的變更。
假設,您不反對銷售例外,並且您願意讓公司在將您的變更納入程式的同時這樣做。您可以同意這樣做,但您需要小心您簽署的內容,否則您可能會對結果感到驚訝。
公司可能會邀請您通過簽署著作權轉讓合約或貢獻者許可協議,將您的著作權轉讓或授權給公司。這本身並非本質上是壞事;例如,許多 GNU 軟體開發人員已將著作權轉讓給 FSF。但是,FSF 從不出售例外,並且其轉讓合約包括一項承諾,即僅以原始碼發布貢獻者的程式碼,並且僅允許重新發布。
公司提出的合約可能不包含這樣的承諾。相反,它可能會讓公司以任何它喜歡的方式使用您的變更。如果您簽署了該合約,公司可以用您的程式碼做各種事情。它可以繼續為包含您程式碼的程式銷售例外。它可以發布包含您程式碼的純專有修改或擴展版本。它甚至可以僅在專有版本中包含您的程式碼。您的程式碼貢獻最終可能會變成,實際上,是對專有軟體的捐贈。
是否允許這些活動由您決定,但以下是 FSF 的建議。如果您計劃對專案做出重大貢獻,請堅持貢獻協議要求包含您貢獻的軟體版本必須在自由軟體許可證下向公眾提供。這將允許開發人員銷售例外,但阻止其在僅在專有許可證下可用的軟體中使用您的貢獻。
如果您的貢獻較小,您可以接受較弱的條件,即公司在自由軟體版本中以及可能在非自由程式中提供您的貢獻。這將允許公司在僅在專有許可證下可用的修改軟體中使用您的貢獻。發布專有軟體絕不是一件好事,但如果您的變更較小,那麼改進自由版本可能比抵制非自由版本更重要。
您可以通過在合約中堅持適當的條件來控制這些結果。為了允許為包含您程式碼的程式銷售例外,但拒絕讓公司發布包含您程式碼的純專有版本,您可以堅持一個或多或少像這樣的條件
任何基於(如 GNU 通用公共許可證第 3 版所定義)Hacker 的程式碼且由 FOO 發布的程式,都應由 FOO 在以下許可下提供:(a) 「GNU 通用公共許可證 (GPL),第 2 版或更高版本」,或 (b) 上述 (a) 中的許可,但將「2」替換為任何更高的現有 GPL 版本號。如果 FOO 以這種方式免費向公眾提供該程式的原始碼,則它也可以根據允許其將該程式的程式碼與非自由程式碼連結的條款,將相同的程式分發給其某些用戶,並以他們自己選擇的許可證以二進制形式發布組合。
或者,如果您反對的是您的程式碼的某些變體可能僅以專有版本發布,您可以堅持一個或多或少像這樣的條件
任何基於(如 GNU 通用公共許可證第 3 版所定義)Hacker 的程式碼且由 FOO 發布的程式,都應由 FOO 在以下許可下提供:(a) 「GNU 通用公共許可證 (GPL),第 2 版或更高版本」,或 (b) 上述 (a) 中的許可,但將「2」替換為任何更高的現有 GPL 版本號。如果 FOO 以這種方式免費向公眾提供該程式的原始碼,則它也可以根據自己選擇的其他許可證,在其他發布的程式中分發相同版本的 Hacker 程式碼。
如果程式是以 GNU Affero GPL 發布的,則在「General」之前添加「Affero」,將「GPL」更改為「AGPL」,將「2 or」更改為「3 or」,並且將「that FOO distributes」替換為「that FOO distributes, or deploys on a server accessible to users other than FOO」可能是有意義的。
FSF 已讓律師審閱了這些文本,但在使用它們之前,您應該尋求自己的法律建議。
當公司說明它將接受哪些條件時,這將向您展示它計劃在多大程度上背離自由軟體的原則。然後您可以做出回應,以確保您的工作將為自由軟體社群做出貢獻,而不是被轉移到專有軟體中。