首頁>科技>

什麼是開源?

如果企業需要開發一款軟體產品(如App)應該怎麼辦?

是程式設計師們從零開始一行一行的編寫程式碼嗎?這聽起來似乎不現實。

大部分企業在開發軟體時,通常會選擇對他人已經編譯好的程式碼進行修改,最後形成自己的軟體產品。

但是編寫程式碼和寫文章一樣,都是創作的過程,所以程式設計師所編寫的程式碼和文章一樣,都屬於《著作權法》中的作品,享有著作權。

而開源即是作者將程式碼公開,並且通過開源許可協議的形式許可其他人使用、複製、修改程式碼。

因此企業就可以在接受開源許可協議的情況下使用開源的程式碼開發軟體產品。

例如在支付寶中就使用了多達40款不同的開源軟體。同時在下圖的許可證一欄我們也能夠看到,支付寶在開發過程中接受了多種不同的開源許可協議。

每一個開源軟體釋出後,通常都會在readme等檔案中附上開源許可協議。

在企業使用開源軟體進行軟體開發時,附帶在開源軟體中的開源協議即自動生效。

常用的開源許可協議包括:GPL、BSD、MIT、MPL、Apache、LGPL等。

每個開源協議對權利義務的約定各不相同,既有BSD、MIT這種對被許可人限制較少的開源協議,也有GPL這種對被許可人限制較多的開源協議。

開源軟體並不是想用就用,不受任何限制。

在前文提到,每一個開源軟體中都附帶了開源協議,並且在企業使用開源軟體時,即視為已經接受了開源協議。

如果企業的技術人員在使用開源軟體為企業進行軟體開發的過程中,忽視了開源軟體所附帶的開源協議,隨意的使用開原始碼,那麼企業的最終的軟體產品可能會因為違反開源協議而出現智慧財產權侵權問題。

例如GPL協議要求,只要在一個軟體中使用GPL協議的產品,則該軟體產品必須也採用GPL協議,既必須也是開源和免費。

即企業的軟體若使用了帶有GPL協議的開原始碼,但是在軟體開發完成後不對軟體開源,那麼就可能違反GPL協議的要求,導致侵犯著作權人的權益。

例如在開源專案SeaweedFS的作者Chris Lu控訴京東TigLab專案涉嫌抄襲程式碼事件中,Chris Lu發文表示京東的專案使用了他的開原始碼,但是沒有根據Apache-2.0協議的許可條款新增引用說明,侵犯了自身的合法權益。

雖然此後京東也積極的向Chris Lu道歉,但是此類事件對於企業的社會形象來說是一個巨大的打擊。

再以GPL許可協議為例,GPL協議要求“使用者必須以該許可協議的許可條款釋出整個程式的原始碼”,而MPL協議要求修改作品“受到本許可協議的條款管轄”。

可以看出這兩個條款實際上是相互矛盾的,所以企業在使用同時附帶GPL和MPL開源協議的開源軟體時,就可能因為開源協議的衝突,面臨必須會違反其中一個協議的困境。

幸運的是,自由軟體基金會發布了一個與GPL相容或不相容的許可協議列表,大家可以通過下述連結自行查閱。(http://www.gnu.org/licenses/license-list.html)

企業防控開源軟體法律風險的建議

即使企業沒有釋出任何開源專案,也會可能使用到開源軟體。

有意識的且及時處理可以避免很多麻煩,如產品延遲釋出和訴訟等。

但做好開源軟體風險防控不僅是一個部門的事,需要法務部、技術部等多個部門的相互協作。

1.法務部門的職責

(1)準確解讀協議

法務人員應當對目前所有的開源協議進行準確解讀,對於企業使用開源協議的風險作出系統的評估。

(2)及時的對技術人員進行培訓

在企業有使用其他開源軟體進行軟體開發的需求時,法務人員應當及時對技術人員進行開源協議內容培訓,確保技術人員在開發軟體的過程中不隨意使用他人的開原始碼。

(3)根據企業的實際情況制定使用開源軟體的策略

法務部門應當根據企業的實際情況制定使用開源軟體的策略,明確在軟體開發的過程中可以使用哪些開源協議,不能使用哪些開源協議。

避免開源協議衝突以及開源協議對軟體的限制違背企業的商業目的等情況的發生。

例如,由於GPL協議要求使用了GPL類庫的軟體產品必須開源,如果企業需要開發一款閉源軟體或者對程式碼有保密要求,那麼企業在開發軟體的過程中就不適合使用附帶GPL協議的開原始碼。

(4)監測適用於企業的開源協議

開源許可協議並非一成不變。

法務人員應當對企業軟體產品中使用的開源協議進行實時的監測。

在開源協議做出改變時,法務人員應當及時做出應對措施。

例如在2016年7月,Facebook在React.js的開源許可協議中新增的附加專利條款,並在之後發表了一篇關於React.js使用許可協議的官方宣告,稱任何人不能將React.js用於Facebook及其合作公司有直接或間接競爭關係的專案中,否則Facebook公司自動取消其使用許可。

面對如此霸道的開源協議,百度為了防止公司的利益受損,即決定在內部全面禁止使用React/React Native。

2.技術部門的職責

技術人員應當使用來自GitHub等正規開源託管網站的程式碼。

(2)技術部門應當建立開原始碼使用備忘錄

同時也能便於法務部門對軟體中使用的開源許可協議進行實時的監控。

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 在世界排名中,僅460億市值的京東把阿里甩在後面,究竟為何?