1. 程式人生 > >自由軟體、開源軟體、免費軟體之間的區別

自由軟體、開源軟體、免費軟體之間的區別

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

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

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

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

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

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

(1)可以自由地執行;

(2)可以自由地拷貝;

(3)可以自由地修改;

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

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

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

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

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

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

自由軟體VS開源軟體

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

      反對軟體私有,首先反對的就是軟體的智慧財產權、版權,所以自由軟體運動明確反對以申請專利的形式將軟體產品據為私有。為了表達對Copyright(智慧財產權)的憎惡,斯托爾曼甚至生造了一個單詞Copyleft。

      自由軟體運動者還創造出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下氾濫的病毒吧)。

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

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

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

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

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