這是本文件的舊版!
開放源碼使用規範
目的
為確保開放源碼使用之合法性,藉由本使用規範與表格化的示意流程,協助產業公司內部系統的開發,有一套合法遵循的管道。
適用範圍
使用開放源碼軟體進行軟體開發時。
使用準則
- 使用開放源碼需經過合法申請管道,並通過公司內部流程審核。
- 使用經過合法取得之開放源碼,需嚴格遵守並履行開放源碼所要求之義務。
- 使用開放源碼需詳加記錄開放源碼之版本、授權條款及來源等資訊。
- 使用開放源碼需保留開放源碼之原始程式碼。
- 系統上線前需確認開放源碼之合法性。
- 嚴禁採用授權感染性強烈之開放源碼軟體。
- 對外交付採用開放源碼之系統時,需確認是否符合其規定。
- 重要及核心軟體系統不得使用開放源碼
- 建議採用出處明確之開放源碼,降低安全風險。
使用規定
授權條款說明
以下前三類授權條款列表為目前開放源碼廣泛採用之條款清單(註一), 依感染性由弱到強說明如下:
第一類、Permissive Licenses
此類開放源碼不具任何感染性,無論衍生之程式碼如何使用此類開放源碼,皆不影響衍生之程式碼後續授權之選擇,因此不論衍生之程式碼是否對外散布,皆可任意使用此類開放源碼。
- MIT
- BSD-2-Clause
- BSD-3-Clause
- Zlib
- Apache-1.1
- Apache-2.0
- Ms-PL(註二)
第二類、Weakly Copyleft Licenses
此類開放源碼同第一類不具感染性(除LGPL採靜態連結),唯一與第一類不同的是,若修改此類開放源碼之程式碼主體並且對外散布,則修改之部分須採用原開放源碼之授權條款。
- LGPL-2.0(註三)
- LGPL-2.1
- LGPL-3.0(註四)
- MPL-1.1
- CDDL-1.0
- EPL-1.0
第三類、Strongly Copyleft Licenses
此類開放源碼具備強烈之感染性,因此若衍生之程式碼有散布之情況,無論如何使用此類開放源碼,皆需完整提供衍生之程式碼原始碼。
- GPL-2.0
- GPL-3.0(註四)
第四類、Public Domain
選用Public Domain之開放源碼意指不受著作權制度規範,因此衍生之程式碼不論是否散布,皆沒有相對應之權利義務,但使用上仍需遵守本辦法之規範。
開放源碼選擇
- 程式碼僅能使用採上述授權條款之開放源碼,否則應邀集法務等相關單位,請使用單位督導副總經理召開會議討論,並依決議辦理。
- 程式碼建議採用知名組織(如Apache、SourceForge)所提供並維護之開放源碼,降低程式使用開放源碼所可能衍生之問題。
- 衍生之程式碼不論是否散佈,應保留開放源碼在任一文件上標示之著作權聲明與免責聲明,禁止任何修改及移除。
- 衍生之程式碼若未散布,程式碼可任意使用採上述正向表列授權條款之開放源碼。
- 衍生之程式碼若有散布之情況,注意事項如下:
(1) 應慎選採用上述正向表列授權條款之開放源碼,並確實遵守開放源碼授權條款,比較說明如下:
衍生之程式 第一類 Permissive Licenses 第二類 Weakly Copyleft Licenses 第三類 Strongly Copyleft Licenses 第四類 Public Domain 未散布 可任意使用 可任意使用 可任意使用 可任意使用 有散布,但可提供原始碼 可任意使用 可任意使用 可任意使用 可任意使用 有散布,但不提供原始碼 可任意使用 有條件使用 (註三) 不可使用 可任意使用 (2) 提供後手開放源碼資訊清單,詳實紀錄所使用到的開放源碼資訊(註五)。 (3) 提供後手所有開放源碼本身之原始碼及授權條款。 (4) 若修改開放源碼檔案,應於檔案表頭加註說明(如修改人、修改日期、修改內容等資訊)。 (5) 若修改開放源碼檔案,應提供後手修改後之開放源碼原始碼。 (6) 視授權條款組合決定是否需提供衍生之程式碼原始碼(註六)。
註一: 可參閱開放源碼促進會(Open Source Initiative)之介紹說明(http://www.opensource.org/licenses/category)。 註二: Ms-PL的授權性質是一種介於第一類及第二類中間之授權條款,若衍生之程式碼對此類開放源碼僅連結使用,則此授權條款等同第一類之說明;若衍生之程式碼對此類開放源碼進行修改,則此類授權條款等同第二類之說明。 註三: 為了避免受LGPL(LGPL-2.0、LGPL-2.1、LGPL-3.0)類之開放源碼感染,程式碼在使用上僅允許採動態連結(Dynamic Link)之方式,禁止採靜態連結(Static Link)之方式。動態連結意指程式碼將開放源碼視為jar、lib或dll之型態進行運用;靜態連結意指程式碼將開放源碼包裹並編譯為執行檔之型態進行運用。 註四: 近年來授權條款(如LGPL-3.0、GPL-3.0)皆明文規定,只要衍生之程式碼使用採這類授權條款之開放源碼,則需一併將衍生之程式碼所屬之軟體專利一併對外授權;若衍生之程式碼作者對後手進行專利之訴訟,則立即失去使用此開放源碼之權利。為避免公司落入軟體專利授權之爭議,涉及軟體專利之程式碼應禁止使用開放源碼。 註五: 開放源碼資訊清單內容包含開放源碼名稱及版本號、授權條款名稱及版本號、使用用途、使用方式、出處、下載網址及其他額外應用資訊。 註六: 若衍生之程式碼僅使用採上述第一、二類授權條款之開放源碼,無需另行提供衍生之程式碼原始碼;若使用採第三類授權條款之開放源碼,則需提供所有衍生之程式碼原始碼。
