本文講開源專案的許可證(License)。
現在FOSS(Free Open Souce Software)的專案逐步增多,而且專案引進FOSS專案也越來越多,以提高我們開發的效率,避免重複造輪子。那麼在我們開心享用這些FOSS專案時,感嘆世界真美好,但我們有沒有認真去研讀過它們的許可證呢?
引進FOSS專案需要注意什麼?
那麼在引進FOSS的專案時,我們需要注意什麼呢?對此不同的人有不同的答案。對此,我的看法是:
- 需要了解FOSS專案許可。
- FOSS專案是否符合自己的需求。
- FOSS專案是否有人維護。
- FOSS專案的成熟度,社群的熱度。
- FOSS專案的質量。
- FOSS專案的繼承難度係數,以及是否能提高開發效率。
本文只關注這裡的第一步:FOSS專案許可證。為什麼把許可證放在第一條呢?因為我覺得如果許可證都不合適,下面其他要素不用考慮了。
License的重要性
無論作為個體還是公司,我們引進FOSS專案時,首先必須要考慮License的問題,如果不注意License的問題,自己的專案有可能會侵權,可能會把自己或者公司陷入法律風險的境地,如果真的這種事情發生,解決起來很麻煩。
一般怎麼處理呢?首先如果是個體,我們必須把常見的License型別瞭解清楚,如果是公司,需要有法務部門來稽核,但是一般公司可能沒有法務部門,那需要開發人員自己去把握。我清楚的記得,在前東家裡,我配合公司的法務部門核查每個專案使用FOSS專案的情況,就是為了讓專案和公司不處於被動地位。(其實我也親身碰到過專利侵權問題,不過不在本文之內)。
所以,我們在引進FOSS專案時,一定要仔細專案的許可證,我們自己得有法律意識,這根弦必須得繃住。
License型別
現在開源專案的型別實在太多了,參看這裡http://www.gnu.org/licenses/license-list.html, 估計有百種左右。但是,我們常見的許可證型別有以下幾種
我們常見的軟體是什麼型別呢?我們看看:
- Apache HTTPd ,許可證是Apache
- Apache Tomcat, 也是Apache,似乎Apache Foundation都採用Apache許可。Dubbo也是,可以參看https://github.com/apache/incubator-dubbo/blob/master/LICENSE 。
- Spring Boot,也是Apache,https://github.com/spring-projects/spring-boot/blob/master/LICENSE.txt
- React,用的是MIT,https://github.com/facebook/react/blob/master/LICENSE
- Linux常用命令wget,用的是GPL,https://www.gnu.org/software/wget/
- Linux作業系統, 用的也是GPL,https://www.kernel.org/category/faq.html
- QT,不同用途有不同的許可,包括LGPL,參看http://doc.qt.io/qt-5/licensing.html
- VI,用的就是BSD,https://www.freebsd.org/cgi/man.cgi?query=vi&sektion=1
License介紹
光去閱讀許可證的描述太抽象了,我借用阮一峰老師的文章:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html,以圖勝千言。