開源軟體?自由軟體?免費軟體?你了解多少?

2021-06-23 09:52:45 字數 4080 閱讀 7431

先交代下寫此文的背景

其一,上次舉辦husa技術交流會時,有高人在台下踩場說我對開源的認識太膚淺了。被鄙視過後,一直想找機會好好學學。 

其二,最近為了「藍雲計畫」,天天奮發學習linux、google的三大**,學習hadoop、hdfs等,接觸多了,自然更想透徹的去了解。

好了,背景交代完畢,閒話少敘,直接進入正題,今天的好漢七問,又有多少好漢能回答出來呢?我們拭目以待。     

ps. 還是老規矩,我是菜鳥,只寫菜鳥總結教程,各位好漢可以直接通過加粗的紅體字找到問題,如果您都能熟練回答,那麼請您跳過本篇菜文,不要浪費您寶貴的時間。

一。好漢一問:什麼是開源軟體?什麼是自由軟體?他們就是免費軟體?

很多人經常把開源軟體和自由軟體混為一談,也常常會有人把開源軟體和免費軟體這兩個概念混淆在一起,其實當我第一此站在husa的講台上的時候,自己對開源的了解,也只是狹隘的定位為:免費的,公開源**的。也難怪會會被下面的高人嘲笑自己對開源的理解太膚淺了。

好啦,下面先一一給出他們的定義然後在定義中找出他們之間的差別吧。

開源軟體是指在軟體發行的時候,附上軟體的源**,並授權允許使用者更改/自由再散布/衍生著作,開源並不抵制商業收費。

免費軟體就是免費提供給使用者使用的軟體,但是其免費的時候,通常都會有其他的限制,比如其原始碼不一定會公開,而且使用者也並沒有使用、複製、研究、修改和再散布的權利.

自由軟體是一項思想運動,強調使用者擁有如何使用軟體的自由。即

(1)可以自由地執行;

(2)可以自由地拷貝;

(3)可以自由地修改;

(4)可以自由地再發行。

這裡指的自由,並不是**免費,這和**無關而是使用軟體對所有的使用者來說是自由的。(英語中free有自由和免費的意思,比如自由的話語權,免費的夜宵)

(開源軟體or自由軟體)vs免費軟體

免費軟體,只是免費提供給使用者使用,並不包含公開其原始碼的內容。提供情況下,免費軟體免費的目的無非出於以下三個:當使用者多了,免費軟體再採取一些其他的增值服務等等手段來收費。

題外話:說道這個,大家想到了什麼?沒錯,3q大戰的兩位大哥都是這種型別。tx要是公開qq的原始碼,我們知道其通訊協議的話,恐怕早已玩完了。

同樣,開源軟體,只是在軟體發行的時候,附上軟體的源**,並且授權允許使用者更改/自由再散布/衍生著作。商業軟體並不抵制商業收費,所以,開源軟體不一定就是免費的(當然,通常都是。)而且,開源的目的,並不是做慈善,而是通過更多人的參與,完善軟體的缺陷。  

自由軟體vs開源軟體

「自由軟體運動」是一項倡導軟體這種知識產品應該免費共享的社會運動,它主要是從社會倫理學,道德的高度,強調我們每個人都有自由使用軟體的權利。這種權利不應該被軟體私有所破壞。

自由軟體運動者還創造出gpl(通用公眾許可協議)這一許可協議來保證和保護同道中人彼此共享軟體產品。gpl的基本原則就是:你可以「自由」地執行、拷貝、修改和再發行使用gpl授權的軟體,但你也必須允許別人也能「自由」地執行、拷貝、修改和再發行該軟體以及你在該軟體的基礎上加以修改而形成的衍生軟體產品。

我們不難發行,自由軟體運動有點太極端、太理想化了,生活在這麼乙個商品化社會,要完全如此的反商業,還是很有難度的。

於是,發展到了後面,一中「自由軟體」和「商業軟體」之間的折中------「開源軟體」就此誕生了,它既繼承了「自由軟體」所提倡的知識共享的理念,同時又允許人們以專利的形式從知識產品中謀取利益,從而保護了人們生產、創造知識產品的積極性。

所以,我們可以認為:自由軟體是開源軟體的乙個子集,自由軟體的定義比開源軟體的更加嚴格,自由軟體是一種道德精神層面的維護使用者使用的自由。

開源軟體和自由軟體一樣,具備一可以免費使用二是公布源**的主要特徵,所以在不刻意追究微小差異的情況下,我們可以認為開源軟體和自由軟體是兩個等價的概念。

那麼,接下來我們主要討論為什麼要開源?這或許才是開源精神的精髓所在。首先,我們來了解不開放源**(軟體私有)都有哪些壞處

二。好漢二問:軟體私有有哪些弊端?

軟體私有一宗罪:浪費社會財富。我們假設乙個軟體已經完整的開發出來了,那麼開發這個軟體的所有投資都已經付出了,從社會的角度來看,任何限制軟體使用的行為都是對其投資的浪費,對社會財富的浪費。

軟體私有二宗罪:不利於軟體的使用。我們假設乙個已有的軟體不能滿足我們的需求,而事實上,我們只需要在原有的**上修改很少的一部分,就能滿足我們的需要。 在這種情況下,我們使用者要麼重新寫乙個軟體,用麼忍受現有軟體的不完善。

軟體私有三宗罪:不利於軟體的開發。第二條是從使用者的角度來看,軟體私有不利於軟體的使用。從軟體本身發展的角度來看,軟體私有,將使軟體的開發集中在少數那麼幾個開發者之間進行,而不能使軟體能夠得到更多使用者和開發者的意見,集百家之長。

知道了軟體私有的這些壞處,那麼開源能幫我們解決什麼呢?

三。好漢三問:開源能解決哪些問題?

使軟體能得到最大範圍的使用。

從使用者的角度,使使用者能根據自己的需要來使用、定製軟體。

從軟體本身的角度,開源,讓更多的人參與,更有助於軟體的完善,開發出更優秀的軟體。

從軟體行業的角度,極大的提高軟體開發的生產力,我們能夠自由的復用別人的開發成果,而避免重複勞動。

通過開發的源**,讓軟體開發者更好的學習。

開源的協議:介紹了這麼多有關開源的概念後,我們很有必要弄明白另外乙個概念-----開源的協議。

接下來,我將為各位看官一一分下幾種常見的開源協議。(至少是我覺得常見)

四。好漢四問:有哪些開源協議,他們有什麼異同?

gpl(general public licence) :

該協議就是gnu運動發布的協議,gpl的出發點是**的開源/免費使用和引用/修改/衍生**的開源/免費使用,但不允許修改後和衍生的代 碼做為閉源的商業軟體發布和銷售。這也是gpl代表的自由軟體和普通開源軟體的最大區別所在。

gpl協議的主要內容是只要在乙個軟體中使用(」使用」指類庫引用,修改後的**或者衍生**)gpl 協議的產品,則該軟體產品必須也採用gpl協議,既必須也是開源和免費。我們熟知的linux就是在gpl下發布的。

bsd協議: 

bsd開源協議是乙個給予使用者自由度很高的協議,在該協議下,使用者可以自由的使用、修改源**,也可以將修改後的源**作為開源軟體或者私有軟體發布。bsd是對商業整合很友好的協議,bsd協議鼓勵**的共享、重用,但是要求尊重作者的著作權。

apache licence 2.0:

apache licence 2.0 是著名的開源組織apache所採用的協議,和bsd很類似,同樣鼓勵**共享和尊重原作者的著作權,同樣允許**修改,再發布(作為開源或商業軟體)。

我們熟知的tomcat、apache、hadoop等等都是在apache協議下發布的。

經過上面幾個問題的折磨,堅持到現在的好漢,我想,回答下面幾個問題,就如同砍瓜切菜一般容易了吧。

五。好漢五問:開源都有那幾種盈利模式?

首先,開源不抵制軟體授權收費。

其次,可以提供開源免費的軟體,但是針對軟體的服務和維護可以進行收費。

再次,諸如ibm,hp這樣的硬體廠商會給開源社群提供資金支援----他們資金則可以賣出更多的基於開源軟體的硬體。

六。好漢六問:開源會暴露軟體的缺陷,帶來安全隱患?

既然開源了,那麼誰都可以看到源**,這樣會不會讓黑客發現其中的漏洞,然後利用它,從而產生安全隱患呢?這是個很自然的問題,我曾經也困擾很久。

但是,事實恰好相反,乙個軟體,即使你不開發源**,乙個黑客想找,也能找到其中的漏洞(想想我們在windows下氾濫的病毒吧)。

但是,工程師們知道了它的漏洞,因為手頭沒有源**,沒有辦法去改進它;駭客知道了它的漏洞,卻可以利用它!

所以,軟體私有是鎖不住安全的,軟體私有只是更不利於安全而已!

真正好的安全,需要完善的演算法,周圍的技術,同樣重要的是完整的制度保障(扯遠了?)

七。好漢七問:軟體私有可以為軟體開發者提供必要的經濟支援,而如果沒有這種經濟支援,那麼將沒有人會去開發軟體?

顯然,這是個概念上的錯誤。具體答案,麻煩您看完上面全文就明白了。

開源軟體,自由軟體,免費軟體三者的區別

一。好漢一問 什麼是開源軟體?什麼是自由軟體?他們就是免費軟體?很多人經常把開源軟體和自由軟體混為一談,也常常會有人把開源軟體和免費軟體這兩個概念混淆在一起,其實當我第一此站在husa的講台上的時候,自己對開源的了解,也只是狹隘的定位為 免費的,公開源 的。也難怪會會被下面的高人嘲笑自己對開源的理解...

開源軟體,自由軟體,免費軟體三者的區別

一。好漢一問 什麼是開源軟體?什麼是自由軟體?他們就是免費軟體?很多人經常把開源軟體和自由軟體混為一談,也常常會有人把開源軟體和免費軟體這兩個概念混淆在一起,其實當我第一此站在husa的講台上的時候,自己對開源的了解,也只是狹隘的定位為 免費的,公開源 的。也難怪會會被下面的高人嘲笑自己對開源的理解...

開源軟體與免費軟體

很多新聞報道居然分不清這兩著的區別,而將其混為一談,真的是無語了。如果您還不清楚,我願意給您做乙個科普輔導。開源的目的不是做慈善事業,而是通過更多人的參與,減少軟體的缺陷,也避免了少數人在軟體裡留一些不正當的後門。另外,開源不表示不要求源 的智財權,開源軟體的lincence裡一般對智財權作了極其嚴...