您的位置:首頁>正文

開源軟體20周年,可我們卻連它是什麼都沒弄懂

【【【前言:“開源軟體”二十周歲了】】】

無論你是正在辛苦賺錢養家的“碼農”還是對程式設計有點興趣的電腦愛好者, 相必都聽說過“開源軟體”的大名, 見過這個標誌:

沒錯, 這就是大名鼎鼎的開放原始程式碼促進會的標誌。 而它所提倡的“開源軟體”, 即開放原始程式碼軟體理念, 在今天(2018年2月5日), 正好迎來了自己的二十歲生日。

不得不說, 雖然“開源軟體”這個詞彙對於很多電腦愛好者來說都不會太陌生, 但是要說到究竟“開源軟體”的定義具體是怎樣, 在國內其實是存在著長久的錯誤觀念的。 特別是在國人的“正版意識”逐漸覺醒的當下,

對於“開源軟體”進行真正準確的科普就顯得更有必要。

有鑑於此, 筆者僭越, 在“開源軟體”概念二十周歲的這天, 作為一名並非從事程式設計職業的IT編輯, 來給大家做這個科普——希望儘量能夠讓更多人瞭解“開源軟體”的前生今世,

以及我們更加正確地看待它的方法。

【【【首先大家需要知道, 什麼是開源軟體】】】

首先, 必須澄清的一點是, 有著二十年歷史的只不過是“開源軟體(open source software)”這個說法或者說定義, 而不是開放原始程式碼這種做法本身——這就好像在“全面屏”這個詞被發明之前, 業界其實就已經出現了採用窄邊框、大屏占比的手機一樣。 開源軟體從電腦誕生的最初期就已經存在了, 只是當時的人們對這種做法並沒有明確的意識與約束。

而真正促成整個業界去思考, 總結“開源軟體”定義的事件, 則是一篇發佈於1997年的論文《《大教堂與市集》(The Cathedral and the Bazaar)》。 在這篇論文中, 作者埃裡克·斯蒂芬·雷蒙(Eric Steven Raymond)提出了兩種“開放原始程式碼”的軟體發展方法論:一種稱之為“大教堂模式”,

即軟體在發佈之後才公開原始程式碼, 並且由一個團隊管控每個版本的開發;而另一種則稱之為“市集模式”, 即軟體在開發過程中即公開原始程式碼, 允許其他人檢查以及進行修改。

在論文中, 作者盛讚了“市集模式”的軟體發展思路, 這引發了當時主流開發團體對於“何謂真正的開源”的討論。

1998年2月3日, Christine Peterson發表文章, 首次提出“開源軟體”的概念, 這一概念在兩天后的一次軟體發展者大討論中得到多數人承認和支持, 並由此促成了“開放原始程式碼促進會”的成立。

對於何謂“開源”, 目前公認的定義來源於其早期支持者Bruce Perens(Debian的創始人之一), 他將開源總結為以下幾個特徵:

自由再散佈:允許獲得原始程式碼的人可自由再將此原始程式碼散佈。

原始程式碼:程式的可執行檔在散佈時, 必需以隨附完整原始程式碼或是可讓人方便的事後獲取原始程式碼。

派生著作:讓人可依此原始程式碼修改後, 在依照同一授權合約的情形下再散佈。

原創作者程式原始程式碼的完整性:意即修改後的版本,

需以不同的版本號碼以與原始的代碼做分別, 保障原始的代碼完整性。

不得對任何人或團體有差別待遇:開放原始程式碼軟體不得因性別、團體、國家、族群等設置限制, 但若是因為法律規定的情形則為例外

對程式在任何領域內的利用不得有差別待遇:意即不得限制商業使用。

散佈授權合約:若軟體再散佈, 必需以同一條款散佈之。

授權合約不得專屬於特定產品:若多個程式組合成一套軟體, 則當某一開放原始程式碼的程式單獨散佈時, 也必需要匹配開放原始程式碼的條件。

授權合約不得限制其他軟體:當某一開放原始程式碼軟體與其他非開放原始程式碼軟體一起散佈時(例如放在同一光碟), 不得限制其他軟體的授權條件也要遵照開放原始程式碼的授權。

授權合約必須技術中立:意即授權合約不得限制為電子格式才有效,若是紙本的授權合約也應視為有效。

看過定義之後,是不是有點暈?而且如果大家更細心一點的話,或許已經發現,真正的“開源軟體”定義和我們一般以為的常識,其實是存在著相當大的差異的。比如說開源軟體並不限制商業使用,開源軟體在經過他人修改代碼後,必須修改軟體版本號以示和原版本的區別等等。

【【【開源軟體也是有版權的,而且開源並不等於免費】】】

“原始程式碼既然可以隨便用了,那開源軟體還有版權可言麼?” 這是很多普通人會對開源軟體產生的合理疑問。不過,在看了前文的開源軟體定義中對於原始程式碼/原作者的保護條款之後,想必大家心裡都已經有數了:即使是開源軟體,原作者依然擁有代碼的版權,這一點和軟體是否開源、是否收費,其實是沒有必然聯繫的。

更進一步地說,“版權”其實是一種對作者勞動的保護和肯定,它和專利不同,不需要申請或者註冊,而是當某項作品完成時就自然產生了。這點對於開源軟體也是一樣的:很多開源軟體在開放原始程式碼的時候,也同樣會注明原始程式碼作者的名字——如果其他人修改代碼,發佈了他們自己的版本,那就要同時注明原始程式碼作者和修改者的名字,以示對原始程式碼的尊重。

而對於軟體的使用者來說,不管他們是否為某一款軟體付費,使用者所獲得的都只不過是軟體的“使用權”,即便某些開源軟體(比如說下面會談到的“自由軟體”)允許使用者任意修改代碼和增刪功能,那也是因為“作者允許你那樣做”,而並非因為它“開源”。

在這方面,最常見的典型例子,其實就是Android(安卓)系統了——不錯,無論是手機廠商還是個人ROM作者,都可以對安卓進行各種修改、深度定制,甚至是做成各種所謂的“xxUI”、所謂的“xxOS”。但是,安卓本身作為一個開源作業系統,其版權始終屬於原作者穀歌,並不會因為手機廠商對其進行了定制、加上了其他代碼而變更版權所有者。而這也是為什麼所有的安卓手機在開機的時候都必需顯示“Powered by android(基於安卓)”,在系統資訊裡都必須寫明安卓版本號的原因。

此外,“開源軟體就該免費”這也是很多人長期持有的錯誤觀點。但實際上,根據“開源軟體不得限制商業使用”的基本原則,開源軟體其實是完全被允許收費的。這是因為在傳播軟體的同時進行收費是一項最基本的自由,每一個人都有這個自由。之所以我們很少看到付費的開源軟體,並非因為開源軟體不許收費,而是單純因為這樣做的人很少,所以大家“習慣了”免費的開源軟體罷了。

在知名的開源軟體授權合約GNU(通用公共授權)中,明確寫著:“我們鼓勵人們在向他人傳播自由軟體的同時收取費用,他們能收多少錢是他們的自由。如果一個軟體許可不允許使用者複製軟體以向他人銷售,那麼這個許可就不是一個自由的軟體許可。”

【【【“免費軟體”還是“自由軟體”?一起翻譯錯誤引發的誤解?】】】

其實,對於國內許多早期的電腦用戶來說,之所以會把“開源軟體”誤以為就該免費,其背後還有個非常尷尬的原因。在開源軟體誕生的早期年代,它還有另外一種稱謂叫“自由軟體”。而英語中的“自由”與“免費”是同一個單詞(Free)——這就直接導致很多早期的國內科技編輯與軟體網站望文生義地將“自由軟體”譯作了“免費軟體”……

不過,值得注意的是,現在的“自由軟體”已經不完全等於“開源軟體”了,它成為了開源軟體的一個定義更加嚴格的子集。按照自由軟體基金會(FSF)的定義,“自由軟體是在電腦為個人或為公共利益,而非私人公司或政府等企圖限制或監視我們工作時,我們在家、學校、公司使用時,我們具有其控制權的軟體。”

換句話說,自由軟體不僅僅必須開放原始程式碼(也就是說所有自由軟體都必需首先是開源軟體),而且它允許使用者以任何目的對軟體代碼進行學習、研究、改造和再發行,最重要的是,自由軟體強調軟體本身必須要“尊重用戶的自由”,它不得以為了限制使用者的自由為目的——比如說,某個帶有使用者監視或是使用者隱私收集功能的軟體,即使它開放了原始程式碼,則仍然不屬於自由軟體。

但是,即使是當今的自由軟體定義,也並不反對軟體收取費用。自由軟體之父,被譽為“最後的真正駭客”的理查·馬修·斯托曼認為,一個好的軟體應該自由自在地讓人取用,不應該拿來做為相互傾軋、剝削的工具。但是,在“取用”的過程中是否收取費用,這本身也屬於自由軟體的“自由”之一。因此斯托曼又說,不僅是自由軟體的作者可以向使用者收費,用戶在向其他用戶傳播時也可以收費。

由此可見,無論是“開源軟體”還是“自由軟體”,其本質上和“免費”其實都沒有必然的聯繫——開源軟體完全可以是付費獲得的,只要你尊重原作者的版權,你也完全可以將免費的代碼修改之後以自己的名義出售。

而與此相反,“免費軟體”僅僅是一個經濟上的概念:即使用者獲得軟體時不用付費而已。“免費軟體”完全可以是閉源(即不公開原始程式碼)的,用戶也沒有權利去研究、修改和再發行免費軟體。更不要說免費軟體中有時還會藏有廣告或收集使用者資訊的代碼——此時,它們的發行者其實是可以從中獲利的,因此這類免費軟體甚至都不能算作完全的“免費”了……

【【【在國人正版意識覺醒的現在,我們應當如何看待開源軟體】】】

但是,由於開源軟體(以及自由軟體)大部分都還是以免費的方式發行,再加上它們開放原始程式碼——這就使得開源軟體本身很容易成為盜版甚至惡意程式碼的重災區,其版權也好、對原作者的尊重也好、“社區化”的合作開發模式也好,都變得有些微妙了。

比如說,當某人無視某開源軟體原作者的權利,惡意抹除原作者的相關資訊,略加修改加上自己的版權聲明之後進行“再開源”的時候——按照開源軟體的規則,這就屬於典型的惡意盜版行為了。但是,按照我國相關法律,其人並非出於牟利目的,也沒有得到實際的收益,再加上權利方很可能還位於外國——要進行查處就變得非常困難。

只是,“開源軟體”雖然也許賺錢沒有商務軟體多、宣傳沒有商務軟體頻密,但它在整個開發者圈子裡絕不是什麼小眾非主流——不如說現在甚至已經是推動IT技術進步、促進人類文明發展的一股不可忽視的主流力量。即使是在我國那些最為高精尖的領域如超算、航空航太、軍事科技……無一不是受著開源軟體的恩惠而得以發展。

因此,在“開源軟體”概念提出20周年的這個日子裡,筆者也希望能夠有更多人能夠瞭解“開源”的精神、尊重開源社區的規則,像善待付費商業那樣去善待開源軟體——如果還行有餘力,則可以主動投身開源社區和開源軟體的建設,如此,則無異於給全人類做貢獻,善莫大焉。

【本文圖片來自網路】

不得限制其他軟體的授權條件也要遵照開放原始程式碼的授權。

授權合約必須技術中立:意即授權合約不得限制為電子格式才有效,若是紙本的授權合約也應視為有效。

看過定義之後,是不是有點暈?而且如果大家更細心一點的話,或許已經發現,真正的“開源軟體”定義和我們一般以為的常識,其實是存在著相當大的差異的。比如說開源軟體並不限制商業使用,開源軟體在經過他人修改代碼後,必須修改軟體版本號以示和原版本的區別等等。

【【【開源軟體也是有版權的,而且開源並不等於免費】】】

“原始程式碼既然可以隨便用了,那開源軟體還有版權可言麼?” 這是很多普通人會對開源軟體產生的合理疑問。不過,在看了前文的開源軟體定義中對於原始程式碼/原作者的保護條款之後,想必大家心裡都已經有數了:即使是開源軟體,原作者依然擁有代碼的版權,這一點和軟體是否開源、是否收費,其實是沒有必然聯繫的。

更進一步地說,“版權”其實是一種對作者勞動的保護和肯定,它和專利不同,不需要申請或者註冊,而是當某項作品完成時就自然產生了。這點對於開源軟體也是一樣的:很多開源軟體在開放原始程式碼的時候,也同樣會注明原始程式碼作者的名字——如果其他人修改代碼,發佈了他們自己的版本,那就要同時注明原始程式碼作者和修改者的名字,以示對原始程式碼的尊重。

而對於軟體的使用者來說,不管他們是否為某一款軟體付費,使用者所獲得的都只不過是軟體的“使用權”,即便某些開源軟體(比如說下面會談到的“自由軟體”)允許使用者任意修改代碼和增刪功能,那也是因為“作者允許你那樣做”,而並非因為它“開源”。

在這方面,最常見的典型例子,其實就是Android(安卓)系統了——不錯,無論是手機廠商還是個人ROM作者,都可以對安卓進行各種修改、深度定制,甚至是做成各種所謂的“xxUI”、所謂的“xxOS”。但是,安卓本身作為一個開源作業系統,其版權始終屬於原作者穀歌,並不會因為手機廠商對其進行了定制、加上了其他代碼而變更版權所有者。而這也是為什麼所有的安卓手機在開機的時候都必需顯示“Powered by android(基於安卓)”,在系統資訊裡都必須寫明安卓版本號的原因。

此外,“開源軟體就該免費”這也是很多人長期持有的錯誤觀點。但實際上,根據“開源軟體不得限制商業使用”的基本原則,開源軟體其實是完全被允許收費的。這是因為在傳播軟體的同時進行收費是一項最基本的自由,每一個人都有這個自由。之所以我們很少看到付費的開源軟體,並非因為開源軟體不許收費,而是單純因為這樣做的人很少,所以大家“習慣了”免費的開源軟體罷了。

在知名的開源軟體授權合約GNU(通用公共授權)中,明確寫著:“我們鼓勵人們在向他人傳播自由軟體的同時收取費用,他們能收多少錢是他們的自由。如果一個軟體許可不允許使用者複製軟體以向他人銷售,那麼這個許可就不是一個自由的軟體許可。”

【【【“免費軟體”還是“自由軟體”?一起翻譯錯誤引發的誤解?】】】

其實,對於國內許多早期的電腦用戶來說,之所以會把“開源軟體”誤以為就該免費,其背後還有個非常尷尬的原因。在開源軟體誕生的早期年代,它還有另外一種稱謂叫“自由軟體”。而英語中的“自由”與“免費”是同一個單詞(Free)——這就直接導致很多早期的國內科技編輯與軟體網站望文生義地將“自由軟體”譯作了“免費軟體”……

不過,值得注意的是,現在的“自由軟體”已經不完全等於“開源軟體”了,它成為了開源軟體的一個定義更加嚴格的子集。按照自由軟體基金會(FSF)的定義,“自由軟體是在電腦為個人或為公共利益,而非私人公司或政府等企圖限制或監視我們工作時,我們在家、學校、公司使用時,我們具有其控制權的軟體。”

換句話說,自由軟體不僅僅必須開放原始程式碼(也就是說所有自由軟體都必需首先是開源軟體),而且它允許使用者以任何目的對軟體代碼進行學習、研究、改造和再發行,最重要的是,自由軟體強調軟體本身必須要“尊重用戶的自由”,它不得以為了限制使用者的自由為目的——比如說,某個帶有使用者監視或是使用者隱私收集功能的軟體,即使它開放了原始程式碼,則仍然不屬於自由軟體。

但是,即使是當今的自由軟體定義,也並不反對軟體收取費用。自由軟體之父,被譽為“最後的真正駭客”的理查·馬修·斯托曼認為,一個好的軟體應該自由自在地讓人取用,不應該拿來做為相互傾軋、剝削的工具。但是,在“取用”的過程中是否收取費用,這本身也屬於自由軟體的“自由”之一。因此斯托曼又說,不僅是自由軟體的作者可以向使用者收費,用戶在向其他用戶傳播時也可以收費。

由此可見,無論是“開源軟體”還是“自由軟體”,其本質上和“免費”其實都沒有必然的聯繫——開源軟體完全可以是付費獲得的,只要你尊重原作者的版權,你也完全可以將免費的代碼修改之後以自己的名義出售。

而與此相反,“免費軟體”僅僅是一個經濟上的概念:即使用者獲得軟體時不用付費而已。“免費軟體”完全可以是閉源(即不公開原始程式碼)的,用戶也沒有權利去研究、修改和再發行免費軟體。更不要說免費軟體中有時還會藏有廣告或收集使用者資訊的代碼——此時,它們的發行者其實是可以從中獲利的,因此這類免費軟體甚至都不能算作完全的“免費”了……

【【【在國人正版意識覺醒的現在,我們應當如何看待開源軟體】】】

但是,由於開源軟體(以及自由軟體)大部分都還是以免費的方式發行,再加上它們開放原始程式碼——這就使得開源軟體本身很容易成為盜版甚至惡意程式碼的重災區,其版權也好、對原作者的尊重也好、“社區化”的合作開發模式也好,都變得有些微妙了。

比如說,當某人無視某開源軟體原作者的權利,惡意抹除原作者的相關資訊,略加修改加上自己的版權聲明之後進行“再開源”的時候——按照開源軟體的規則,這就屬於典型的惡意盜版行為了。但是,按照我國相關法律,其人並非出於牟利目的,也沒有得到實際的收益,再加上權利方很可能還位於外國——要進行查處就變得非常困難。

只是,“開源軟體”雖然也許賺錢沒有商務軟體多、宣傳沒有商務軟體頻密,但它在整個開發者圈子裡絕不是什麼小眾非主流——不如說現在甚至已經是推動IT技術進步、促進人類文明發展的一股不可忽視的主流力量。即使是在我國那些最為高精尖的領域如超算、航空航太、軍事科技……無一不是受著開源軟體的恩惠而得以發展。

因此,在“開源軟體”概念提出20周年的這個日子裡,筆者也希望能夠有更多人能夠瞭解“開源”的精神、尊重開源社區的規則,像善待付費商業那樣去善待開源軟體——如果還行有餘力,則可以主動投身開源社區和開源軟體的建設,如此,則無異於給全人類做貢獻,善莫大焉。

【本文圖片來自網路】

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示