塗抹MySQL--第1章 開源運動與開源軟體MySQL - 1.1開源軟體的故事(2)

dawn009發表於2015-06-26

1.1.1 GNU 說,我代表著一個夢想

GNU的全稱是Gnu's Not UNIX,看名稱就知道與UNIX 脫不開關係,事實也確實如此,GNU 不管是形式上還是實際上都與UNIX 有很大的關聯。

話說甭管什麼樣的裝置,如大型機、中型機或小型機,對於終端使用者來說,要想操作它都離不開作業系統。而且在當時,作業系統並不僅僅是核心,還包括編譯器、電子郵件、各類常用工具等,那會兒UNIX 佔據著主流地位,可是當商業軟體的浪潮襲來,UNIX 開始要收費了(而在之前則是免費釋出甚至開放原始碼的,由此還產生眾多UNIX 發行版,比如著名的BSD 系統)。

原始碼不再開放,大家不能再隨意改寫,使用也要受諸多許可限制。於是Stallman 立下宏願,要推出一套Free 的系統(這裡提到的Free,意義可能跟大家的理解不同,後面會闡述這方面的背景)。

開發一套完整的作業系統是項極其宏大的工作,單單實現它就已經很不容易了,開發出來還要有人願意用,這就更有難度了。君不見微軟那麼大勢力,投入這麼多資源搞了Windows Phone,各大手機廠商還不是該用安卓用安卓,用iOS 的是iPhone。考慮到在當時UNIX 系統佔據的主流地位,為了能夠讓UNIX 使用者使用GNU 時快速上手和平滑過渡,新系統不僅要Free,還得儘可能地相容UNIX。當然這個相容只是兩者看起來像,實質還是有差異的,就如同WPS 為了佔領市場,也相容微軟Office 的檔案格式,但它跟MicrosoftOffice 完全是兩套系統一個道理。

Richard Stallman 是個理想主義者,但他同時也是個實幹派,即使那會兒沒有“總理”對他諄諄教誨,他也知道仰望星空,腳踏實地。為了發展這個類UNIX 的作業系統,RichardStallman 以及由他發起的FSF,開始收集及開發組成系統的各種必備軟體,包括庫、編譯器、除錯工具、編輯器等,準備工作做了很多,輸出的各類軟體也不少,但是系統核心的開發較為緩慢。最初,他們開發出了一套核心,名叫GNU HURD,但是並不太理想,直到一位芬蘭的大學生—Linus Torvalds,開發出Linux(最初名叫Freax),他們才算具備一個基本可用的底層環境,等到1.0 版本的Linux 正式釋出時,時間的指標已經指向了1994年。這期間波折很多,細節這裡不詳細闡述,推薦兩部影片—程式碼和作業系統革命,從中可以看到一些有意思的故事。

那麼Linux 和GNU 有什麼關係呢?簡單來講,Linux 是作業系統核心(並不是一個完整的系統喲),上面執行著眾多GNU 程式(GNU 程式如今不僅執行在Linux 環境上,UNIX/Windows 平臺上也都有),它們共同組合出一套可用的系統,因此FSF(尤其是RichardStallman 本人)將這套組合定義為GNU/Linux。只是這個命名存在爭議,有一部分Linux發行版,比如Debian 採用了“GNU/Linux”的說法,但更多企業以及開發人員還是直接稱其為Linux。

關於名稱,我個人覺著GNU 專案發展到現在,無需再用什麼來為其正名,它的存在本身就已經代表著影響力和成功。提及這段歷史,也是希望大家以後見到或者跟人說起GNU/Linux 或是Linux 時,心中明白它們指的都是同一個東西。

1.1.2 FSF 說,兄弟我頂你

FSF(Free Software Foundation,自由軟體基金會)是個民間的非營利性組織,於1985年由Richard Stallman 發起和建立,致力於推進和推廣自由軟體(Free Software)的發展和傳播。

俗話說,錢不是萬能的,但沒錢是萬萬不能的。儘管高呼著自由的口號,但畢竟不比在中國做慈善專案來錢那麼容易,宣傳需要成本,推廣需要費用,GNU 專案加入者逐漸增多後,專案的正常運作也是需要銀子的,甚至某些GNU 的開發者也需要資助。

為了尋求資金上的支援,成立基金會也就成為必然(總不能以Richard Stallman 的名義直接要求捐款吧,實話實說,Stallman 的主要收入來源還是四處演講的酬勞)。自由軟體基金會接受捐助,不過也有一部分收入是來自銷售與自由軟體相關的物品,比如銷售燒錄有自由軟體(原始碼及二進位制程式)的光碟,提供技術服務的收入等。

1.1.3 兄弟,你是“自由軟體”嗎

注意,這裡說的是“自由”軟體,而非“免費”軟體。有些朋友看到Free Software 就直譯為免費軟體,這是不對的,也與Richard Stallman 所倡導的Free 本質相去甚遠。同一個Free,不一樣的理念,大家要提高思想境界,不能動不動就想money。

免費的軟體不一定是自由的,自由軟體也不一定都免費。這裡所說的自由軟體,必須開放原始碼,可以被自由地使用,不受限制地複製、研究、修改和釋出。之所以做這種設定,需要結合傳統閉源的商業軟體現狀來談起。

提 示:自由軟體是開源軟體(Open Source)嗎?先留個問號,後面再來闡述這個話題。

在20 世紀80 年代初期,就當時的情況來看,微軟軟體帝國的種子才剛發芽(當時仍是UNIX 平臺佔主流,Intel x86 架構的普通PC 尚屬新生事物),但很多軟體都已經是私有的,並不開放原始碼,使用者使用時還有諸多的限制。比如說一份軟體只能在同一臺計算機上使用,如果想在不同的計算機上使用,可能就得額外付費;有些軟體的授權還限制了使用時間,到期後必須另繳費用;甚至有些軟體連升級都是需要收費的;至於商業軟體的原始碼,這可是他們的核心資產,敢打他們的主意(逆向工程)就是犯罪。我所說的這些,大家應該並不陌生,因為這些直到現在我們也仍在親身經歷。

前面提到的幾個問題還好處理,都是花錢就能解決的事。俗話說能用錢解決的都不是問題,如果花錢也解決不了,那才是麻煩大了。比如說,軟體的某個功能與實際需求有異,想進行定製化開發,通用軟體企業哪會管個體的需求,即便運氣好,有大批使用者都有此類需求,那麼商業軟體最快也是在下個版本才會響應,想自己改改連門都沒有啊!再者,商業軟體都是逐利而為,當軟體銷售不暢,或者前景不佳時,開發者有可能放棄維護,甚至企業直接倒閉,屆時軟體的使用者再遇到問題,又能找誰去?

Richard Stallman 所倡導的自由軟體,核心就在於程式必須開放原始碼,同時授予使用者各種權利(與此相反,閉源軟體幾乎不會授予使用者任何權利,僅有的使用權還有限制條件),允許對軟體進行修改和再次釋出。任何人都可以根據實際需要改程式序,並且可以將修改後的程式再發布出來,供其他有需要的人下載和使用。不過在釋出時,除了二進位制程式,還必須提供原始碼,甚至在釋出時只需提供原始碼,二進位制程式都可以不提供(使用者拿到原始碼後自行編譯)。這種設定完全基於Stallman 的理想,就是為了讓使用者在軟體使用過程中完全自由。

可是,要怎麼保證使用者使用、修改和分發自由軟體的自由呢?如何保證修改後的軟體再次釋出時,仍然遵守開放原始碼等各方面的要求?不僅GNU 專案下的自由軟體有這個問題,實際上在20 世紀80 年代初,並非只有Stallman 獨身反抗閉源的商業軟體,還有其他“同路人”在做類似的事情,有些開發者會在開放自己的程式原始碼時,進行相應的說明,以免由此衍生出的程式程式碼被封閉。但對於GNU 專案來說,面臨的不是幾個軟體,如前面介紹GNU 時所說,這是一整套解決方案,包括各種各樣的程式,每個程式各自宣告相應權利,針對性太強,覆蓋範圍有限,具體執行也有問題。針對這些情況,Richard Stallman為GNU 專案撰寫了GPL 授權協議。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1712844/,如需轉載,請註明出處,否則將追究法律責任。

相關文章