開源與閉源

這是原創文章《我的Linux操作系統操作的使用經歷》

這是原創文章《我使用電腦十年的經歷》

開源 VS 閉源

擁抱開源,貢獻世界! 以「開源 VS閉源貢獻的重要與精神」為題,分享自身的奉獻精神與生命故事,共同攜手揭開序幕。分享自己對開源的親身感受與經驗。勉勵所有與會者擁抱開源精神,鼓勵與會者,不要懼怕自身的渺小,只要擁有信念,就可以創造自己的舞台,用自己的方式,讓世界更美好。開源的精神本質,就是「我做了一個東西,大家來用吧」!這樣一種Geek的精神,同時也有讓世界變得更加美好的願望。對於商業軟體公司來說,程序員出賣的是自己的代碼,公司用代碼去賺錢,然後養著程序員;而對於開源軟體來說,程序員並不出賣自己的代碼,雖然主要程序員的收入大都和軟體有關,但無一例外的都是代碼屬於程序員,而不是屬於公司。從這個角度來說,開源軟體的從業人員和傳統商業軟體是不同的,程序員更多的是自由職業者,個人收入與對軟體的貢獻沒有直接關係。

Advertisements

程序員,有一群默默付出,無私分享自己知識的工程師,透過程序代碼分享愛與改變世界的嶄新技術,為科技世界創造更優質的創新應用,為社會解決一些問題,推動一點改變。開源精神,即是指在信息領域中,程序設計師公開分享程序代碼(又稱原始碼、源碼)給他人,創造新軟體或是貢獻於現有軟體,同時透過共同協作,使開源軟體更加堅固。自第一年以來,始終以開源精神為核心理念,聚集了世界各地的優秀開發者,投注熱情,探索發展創新技術的可能性。我們深信,只要擁有一個舞台,可以改變世界。

程序員期望為所有與會者帶來新的開源意象。開源一詞起源於信息產業,但開源精神不止於信息產業。世界各行各業之中,都存在這樣無私奉獻與付出的開源貢獻者。無論身處何處,不論邁向何方,這些無私的奉獻者,用自己的方式與力量,耕耘世界和平社會。

Advertisements

我本人是非常喜歡開源的,你可能覺得不能理解,很多人會說閉源多好,做閉源有錢賺。其實不是這個樣子,開源是一種分享精神。我覺得在我成長的路上,遇到的許多人都給了我巨大幫助,我希望能夠有一種方式回報他們吧,這就是開源,能夠讓他們隨便複製我們的代碼都無所謂。我們希望能夠給大家傳遞一種分享的精神。我現在講我小時候的經歷,講我自己做的Linux系統,我想說什麼?我想說我不是多麼的厲害,我就是我,我站在台上,並沒有什麼特別的。我做出來的Linux系統、開源分支和其他人打著遊戲打到一百關沒有什麼本質區別,都是成就。但是它們帶給人的感受是不一樣的,因為打遊戲的人太多了,做開源分支的人太少了,現在的社會正是需要這種「開源精神」,我希望大家都要有著開源精神。以前有時候我也打過遊戲,但有了Linux系統這些開源后再打遊戲我都會覺得很無聊。在我的世界里,寫一段程序或者同步一段代碼又或者提交某個程序都讓我開心,比遊戲有趣的多。

對於開源的理解,我大概可以分為這樣幾個階段,我想現在也許仍有一些人是這樣誤解的:

  1. 開源是免費軟體,隨便使用,沒有版權。

  2. 開源是開放源代碼,隨便拿來用,想修改就修改。

  3. 開源是個人開發的,沒有公司,也沒有版權,並且免費。

  4. 開源是一群人無償開發的項目,域名大部分是.org的。

  5. 開源是誰都可以參加的項目,它由一個委員會主導。

然而現在,我覺得開源是一種去中心化的創造,讓我們可以自由的發揮來滿足創造欲,我理想的開源項目應該是沒有leader沒有核心的,甚至開源可以不是一個項目,它可以是一團代碼或者一個半成品,就像自助餐桌上的菜品一樣讓人隨時搭配享用或者二次烹飪,有的只是我們需要「吃」的這種需求。

而說到開源精神,那也許是一種給於和獲取的平衡,有給於才能有獲取,有獲取才會有給於的動力。無需指責別人只會獲取,我們應該懂得開源是一種創造方式,一個沒有創造欲和創造力的人加入開源也是無用的。

我們中國社會觀念問題,中國許多公司或個人還是處於保守的觀念中,認為自己創造的東西怎麼能白給別人,我甚至見過,有人問如何把前端css和html代碼不讓別人下載到這樣的問題。還缺乏交流,中國程序員普遍工作壓力大,項目管理混亂,沒有空餘的經歷和時間去融入開源,作出貢獻,更不用說與別人的交流了,所以整體展現出了索取大於貢獻的狀況。我見過許多過去或現在的同事只想完成工作,而不去完善代碼,也沒有合適的方式與其他同行溝通交流。還有就是版權問題,書,電影,音樂等傳統版權問題都沒有很好的解決,更不要說開源這種新概念的版權問題了,所以也很少有公司會去嘗試開源,因為版權根本沒有保障。比如前端工程師,會經常使用模板,天天用著,會有不爽,就會想著自己去寫一個模板引擎。直接去寫一個沒什麼不對,但更好的方式是,先去開源社區搜索下同類產品。看自己的想法,是否已經有人實現了,看自己的想法中,哪些是靠譜的,哪些是不太靠譜的。注意不要去做「純調研」,除非你已經是這方面的專家,有過體系化的研究和深入。「純調研」是指,找到類似的產品,淺嘗輒止地跑跑demo,就開始出表格,橫向比較優劣。更笨但更有效地做法是,直接去用,比如我們選擇了 Handlebars,在項目真正使用過程中,才能深觸地感受到 Handlebars 的優點及其缺點。有過這麼一段深入使用經驗后,類似的前端模板引擎,比如Mustache、Hogan等,也有大概清楚個七七八八了。拿來主義不光能省去開發成本,還能讓你擴充見識和想法,而不會成為井底之蛙還茫然自得。拿來主義是開源的第一步,參與則是開源中最漫長的一步。開發自己主導的項目不是必須的,除非你真的有很好的想法,同時剛好有旺盛的精力,否則不要輕易開始,那不代表什麼,往往什麼也不是。比如Sea.js,如果 RequireJS 當初能接受我的建議,或者 FlyScript 的作者不退隱江湖,那麼就不會有Sea.js。讓一些事情自然地發生,讓豆瓣從土壤中發芽。更多地去享受參與,保持簡單與自然。

閉源所有軟體代碼都有著作權,所謂核心演算法和創新點都有專利保護。和開源精神基本上不搭嘎,甚至相悖。在很多熱愛程序的人心底,如此用著開源的IDE(QT creator), 用著開源的的是音頻編解碼軟體(ffmpeg),造出的應用卻關起門來收費是開源世界的 「蛀蟲」!

在IT的世界裡面,開源的精神影響深遠,每一個IT者都從中受益,我們可以使用各種的開源工具,學習開源的技術,有開源的代碼。作為一個IT工作者,我自己有開源的精神嗎?我想我是有一部分開源精神的,我會樂於分享自己在工作中和生活中遇到的一些事情,這點是很不錯的,值得後續保持。但在有些方面,像一些問題的討論,對於自己不明白的地方,沒有主動搞懂。這點是不可取的,開源的精神裡面應該包括一種開放的心態,對於自己不會的東西要主動去追問,主動去請教,把問題搞懂。在IT的世界裡面,開源的精神影響深遠,每一個IT者都從中受益,我們可以使用各種的開源工具,學習開源的技術,有開源的代碼。作為一個IT工作者,我自己有開源的精神嗎?我想我是有一部分開源精神的,我會樂於分享自己在工作中和生活中遇到的一些事情,這點是很不錯的,值得。

世界開源精神

開源的歷史,都可以追溯到20世紀60年代了,孰不知至今已經有半個世紀之久了。開源精神之所以能夠延續到現在,在於使用者可以使用、複製、散布、研究和改進軟體。

開源

要說一個軟體是 「自由」 的,這意味著它尊重用戶的基本自由:自由地運行這個軟體,學習和修改它,以及重新發布它的原版或修改版。這是個關於自由權利的問題,而非價格高低。我們討論的自由是如同自由言論般的權利,不是免費贈飲一樣的大派送。

這幾樣自由是至關重要的。之所以說它們重要,不僅僅因為它們可以討好哪個用戶,更是由於它們維繫著整個社會的凝聚力—具體說來,就是分享與協作的精神。隨著我們的生活與文化日漸數字化,這樣的自由精神也隨之越來越可貴。在一個充斥著數字化音像與文字的世界中,自由軟體日益重要,它本身已經成為關乎著我們基本自由的因素之一。

當今世界中,成百上千萬的用戶正在使用著自由軟體;在印度和西班牙某些地區的公立學校里,全體學生都學習如何使用自由的GNU/Linux操作系統。然而,這些用戶之中,大多數人卻並不了解我們為何開發這個自由系統,又為何建立起整個自由軟體社區,以及背後驅動這一切的道義上的邏輯。因為如今這個自由系統,乃至整個社區都被以「開源」 一詞以蔽之。順著這個詞,一切都被引入了一個完全不同的思維之中。在那裡,自由這東西,甚少提及。

從 1983 年起,我們以維護計算機用戶自由之名興起了自由軟體運動。在 1984年,我們發起了開發自由操作系統的計劃,並將此系統命名為GNU。藉此系統,我們就不必倚賴非自由的操作系統,不再坐視它們肆意剝奪用戶的自由。在二十世紀八十年代,我們開發了系統的絕大多數組件。為了保護用戶的自由,我們設計了GNU 通用公共許可證 (GNU GPL),並以該許可證發行大部分組件。

並非全部的自由軟體用戶和開發者都贊同自由軟體運動的目標。1998年,自由軟體陣營中的部分成員分裂出來,並以「開源」為名繼續開展活動。一開始,由於「自由軟體」(freesoftware)一詞可能引起歧義,這才提出開源這個說法。但是很快開源這詞便開始異化,使得其背後的邏輯與自由軟體運動的初衷相去甚遠。

一些開源的支持者會認為,所謂開源,無非是用來「為自由軟體做市場營銷」的。具體說來,就是向那些商界人士展現自由軟體的實際好處。同時避免談及什麼對錯正誤,因為商業大佬們普遍不太喜歡這調調。還有一些開源的支持者乾脆就拋棄自由軟體道義上的價值觀。無論他們持哪種觀點,一旦他們開始為開源營銷的時候,自由軟體運動所珍視的那些價值觀就被拋諸腦後。於是,「開源」一詞很快就單純地和各種實用主義的價值觀聯繫起來。比如說怎麼能創造一個強大,穩定的軟體。很多開源支持者從一開始就把這些價值觀推崇至極,也難怪局外人會有如此聯繫了。

開源軟體和自由軟體這兩個詞在很大程度上描述的是同一類軟體,但是它們所基於的價值觀卻有著本質上的區別。開源是指一套開發方法;而自由軟體則是一場社會運動。對於自由軟體運動而言,自由軟體是一個道德底線,是對用戶自由的基本尊重。開源軟體則與此不同,開源哲學考慮的是怎麼做把軟體做得「更好 」 —僅僅從實用的角度。開源的哲學里,非自由軟體之所以不好,是因為他們採用了一種劣等的開發方式。開源的大多數討論關注的不是是非,而僅僅是是否流行和是否成功;就是一個典型的例子。

然而,對自由軟體運動來說,非自由軟體是一個社會問題,其解決方法是停止使用非自由軟體並開始使用自由軟體。

「自由軟體」,「開源軟體」,既然都指的是同類軟體(或基本是同類軟體),那何必在名字上這麼較真呢?有這個必要的。因為不同的辭彙傳遞著不同的思維。儘管現在看來,用另一個名字稱呼自由軟體可以給你同等的自由,但若要長期維護用戶的自由,則必須讓人們意識到自由的價值。倘若你想幫助人們做到這點,那麼使用「自由軟體」這一稱呼則尤為重要。

作為自由軟體運動的成員,我們並不將開源陣營視為敵人。我們的敵人是專有(非自由)軟體。但我們希望人們至少應該知道,我們所捍衛的是用戶的自由。所以我們不願被開源支持者們貼錯標籤。

在實踐中,開源的要求比自由軟體寬鬆一些。據我們所知,迄今發布的自由軟體源代碼都是開源軟體。儘管大多數開源軟體也同樣是自由軟體,但會有一些例外。首先,有些開源許可證對用戶過於苛刻,它們就沒有被列為自由軟體。比如,「OpenWatcom」 就非自由的,因為其許可證不允許修改該軟體和私自使用該軟體。幸運的是,很少軟體會使用這些許可證。

另外,實際操作時還有更重要的一點。很多產品帶有檢測可執行文件簽名功能的計算機,它會禁止用戶安裝或運行修改後的可執行文件,而只有一家特權公司才能生產可執行文件或完全控制該產品。我們把這種設備稱作「tyrants」,即「專制暴君」;把這種行為稱為「tivoization」,該名稱來自我們首先看到TiVo公司使用該方法發布產品。在這樣的產品上運行的可執行軟體,哪怕是以自由軟體許可證發布了源代碼,但是用戶卻無法運行修改後的可執行文件,所以其可執行文件不是自由軟體。

開源的標準沒有意識到這個問題;它們只關心源代碼的許可證。這樣以來,這些編譯自諸如Linux等開源和自由軟體的可執行文件,原封未動,是開源的,但不是自由的。許多Android產品就包含這樣的非自由Linux可執行文件(tivoization)。

來自自由軟體運動的人和來自開源陣營的人經常一起在同一個項目中一起工作,比如一起開發軟體。這是值得一提的:儘管大家觀點不同,但卻可能在同一個項目中工作。當然,我們和開源陣營各自不同的觀點有些時候也可能會導致不同的行為。

開源的基本思路是:允許用戶修改和再發布軟體,是為了讓軟體更加強大和可靠。可惜這不是個必要條件。很多專有軟體的開發者技術也很強。有些時候,哪怕專有軟體不尊重用戶的自由,依然可以開發出強大而可靠的軟體。對於這個事實,自由軟體支持者和開源陣營的人對此反應就會不同。

對於一個純粹的開源狂熱者來說—假設他沒有被自由軟體的理想所影響—可能會說,「你們(專有軟體開發者)竟然沒用我們的開發模型,還能開發出這麼好的軟體。這太讓我感到意外了。能給我拷一份你們的軟體嗎?」這樣的態度會讓專有軟體的詭計得逞—剝奪我們的自由。

而自由軟體支持者則會說,「您的軟體非常吸引人,不過我更看重我的自由。很遺憾,我不得不放棄使用您的軟體。我會用其他的方法完成我的工作,並支持一個實現類似功能的自由軟體項目。」你若真心珍視你的自由,我們就可以用行動去捍衛它。

開源的支持者們把一個個用戶拉入他們的陣營,而提醒用戶維護自由的任務,則落到了我們自由軟體支持者們的肩膀上。我們要敢於用比以往更大的聲音說「這是自由軟體,它才是真正尊重你的自由的軟體!」—每當你把「開源軟體」一詞替換成「自由軟體」的時候,你就是在支持我們的理念。

開源

你支持開源還是閉源嗎? (單選)
0
0%
開源(源代碼和程序與操作系統)
0
0%
閉源(源代碼和程序與操作系統)

Advertisements

你可能會喜歡