開源是把代碼公開嗎?具體如何?


一提到開源,人們首先想到的是,把代碼公開出去,例如放到 http://Github.com 上。但是開源真的只是這麼簡單嗎?下面咱們詳細來聊聊開源這個概念的內含和外延,通過通俗的語言讓大家很快把握要點,關於開源的最權威解釋可以參考 https://opensource.org ,這個網站是開源思想誕生的地方。

開源的定義

先來給開源一個定義,一個軟體是開源的,最基本的含義是代碼是公開的,任何人都可以去查看,修改以及使用。

首先,開源代碼和閉源代碼非常不同。閉源代碼就是普通的商業版權軟體,代碼是封閉的,只有作者才能看到,出了問題也只有他能修改。而開源代碼,任何人都可以查看和修改。關於開源思想的誕生,有一個很有意思的故事。Richard Stallman 是有史以來最偉大的幾名黑客之一,也是世界上寫代碼最多的人之一,他曾經買過一個商業軟體,結果有一點小問題,於是他去找軟體公司,問他們能不能幫忙修復一下,軟體公司說不行,Richard 於是說,那能不能把代碼給我,我來修復一下,公司也說不行。於是 Richard Stallman 很生氣,創立了自由軟體基金會,發布了大名鼎鼎的 GPL 協議,GPL 至今為止依然是最著名的開源協議。

第二點需要特別注意的是,開源不等於免費。軟體代碼雖然可以免費給別人,但是軟體相關的服務,例如編譯維護升級等,一樣可以賺錢,例如 Redhat 就是家開源軟體公司,不僅僅賺錢,而且很賺錢。同時,很多公司有把越來越多的開發者投入到公司的開源項目中,這些軟體可以有力的支撐起公司的生態,所以如果你是一個開源軟體開發者,也不用擔心找不到工作。

總之,開源意味著代碼可以讓任何人直接獲取到。

開源協議

開源代碼既然源碼都是開放的,所以直接拿來免費使用基本都是沒有問題的,但是這並不意味著使用開源軟體是完全沒限制的。每個開源軟體都對應自己的開源協議,具體的使用限制在開源協議裡面都詳細的規定。開源協議有很多,這裡有一個列表:https://opensource.org/licenses 。

很多開源協議屬於 Copyleft 類型的協議,最著名的例子就是 GPL 。Copyleft 是跟 Copyright 相對的。Copyleft 類型的協議規定,如果基於軟體做過修改,那麼修改後的版本也必須要開源,並且依舊要基於 Copyleft 的協議來發布,也就是說 Copyleft 是帶有傳染性的協議。Copyleft 對商業不太友好,但是充分的保證了開源項目的迅速生長。Linux 內核項目就是基於 GPL 發布的。

還有一類協議屬於 DOWHATTHEFUCKYOUWANTTO 協議,也就是完全無限制協議。 還真有一個協議就要這個名字 https://choosealicense.com/licenses/wtfpl/ ,但是這一類協議中最著名的是 MIT 協議。MIT 的詳細條款可以看這裡,https://opensource.org/licenses/MIT ,內容概括起來就是,協議保護你任意使用這個軟體的權力,你可以修改後閉源,也可以售賣這個軟體,怎麼都可以,但是要是因為使用軟體出現任何損失,作者概不負責。

其他的開源協議還有很多,條款也是千差萬別。

為何要選擇開源軟體

人們越來越喜歡開源軟體了,大致上是出於以下幾個原因。

第一,開源給使用者更多的控制權。由於代碼是開放的,大家可以查看每一行代碼來確保軟體沒有做任何我們不想要讓它做的事情。甚至,我們還可以按照自己的要求修改一下代碼。同時,從協議上來講,開源協議也不像商業軟體協議那麼多限制,基本上我們可以任意的使用我們的軟體。

第二,開源讓學習變得容易。有了源碼,我們就可以很快了解軟體的工作原理了。新手可以通過讀源碼,快速成長為代碼高手。學校裡面可以用某個開源軟體,例如 Linux ,來教學,而學習者多了,企業招聘的時候也就更容易招聘到擅長這個軟體的人才了。企業使用開源軟體也有好處,因為一個企業遇到的問題可以分享出來,這樣其他企業就不必重複犯錯了。

第三,開源才有真正的安全。代碼開放意味著所有人都可以去查看代碼,這樣如果代碼中有任何問題就很容易被人發現並修復了。閉源軟體不同了,有沒有問題,沒有人知道,有沒有後門,沒有人知道,如果使用過程出了問題,必須要等原作者去修改。同時,如果一個商業軟體對我非常的重要,然後開發這個軟體的公司卻突然倒閉了,後果就不堪設想了。而如果是開源軟體,即使官方不維護這個項目了,我也可以自己去修改代碼升級軟體,繼續使用。

總之,開源的好處很多,以至於現在開源軟體在軟體行業的變得越來越主流了。

總結

關於什麼是開源,我們就聊到這裡。總結一下:開源就是源碼開放,但是不意味著使用沒有限制,具體規定要根據軟體的開源協議來決定。開源協議著重保護的是大眾對源碼的閱讀的權力,其中有些對大公司很不友好,例如 GPL ,因為協議要求對軟體如果做了修改,那麼修改後的代碼也必須開源。而有些開源協議就沒有太多限制,例如 MIT 。開源軟體讓用戶擁有更多控制權,更便利的學習機會,更高的安全性,所以目前已經變得越來越主流。

參考:

  • https://opensource.com/resources/what-open-source


不僅僅是公開源代碼,還有相關知識產權方面的開源協議。


推薦閱讀:

電腦系統裝32位還是64位受硬體影響嗎?
為什麼微博可以先發後審,優酷,愛奇藝等視頻網站卻不行?
關閉電器後,依然耗電的原因有哪些?

TAG:開源硬體 | 軟體 | 編程語言 | 開源軟體 | 源代碼 | 科技 |