再論開源
幾年前我寫過一些關於開源的想法,如今再來看開源,我覺得問題已經不在說教上,而是在趨勢上。倒退十年或更久,那時候程式設計師相對還比較稀缺,軟體閉源開發出來之後別人模仿的成本高,而這些年計算機教育的普及讓碼農數量變得越來越多,更多人懂程式設計了,模仿的成本大幅下降。寫軟體作為謀生的目的已經在弱化,更多的是為了自己的實際需求,或社群名聲:你不開源?好,那我操起鍵盤重寫一個好了,你自己覺得涼快就永遠在那裡呆著吧,哥不等你了。
Sublime Text是一款據說有超級牛力的文字編輯器(不開源),可是它幾個月不更新使用者就受不了了,馬上有人操起鍵盤重寫了一個,Github上點讚的一路飆升到5000多。程式設計師就是這樣的動物,控制狂,啥事兒都想控制。如果他沒有辦法影響一款軟體,逼急了他就拿鍵盤投票。這樣會誕生優質開源軟體,當然不可避免也會造成各路兵馬混戰,浪費人力。所以當今的程式主們必須轉向合作的模式,沒有誰能永垂不朽。Github合併請求(Pull requests)給這樣的合作提供了方便的平臺,讓每個有能力、有意願的使用者都能揣著程式碼來投票,而不是傳統的一個或少數幾個開發者和一群使用者在郵件群裡戰鬥。
開源的含義已經不是開放原始碼,而是開放態度。在這方面,有幾位R核心團隊成員的態度糟糕透頂,當年的R & R(Ross/Robert)開源的成功如今變成了另一個姓氏以R開頭的日不落教授的霸權(就不用說是誰了,大家都知道),這讓R陷入一個尷尬的境地。如謝樑大俠所預測的,R的競爭對手已經不是SAS,而是Python,我對此表示完全同意。如果R核心團隊能有更開放的態度,也許還有希望和Python在統計領域一搏,畢竟有強大的先發優勢,但如今我們只能面對Python神教的不斷奚落去曲線救國,R本身我們動不了,只能從R包入手。
什麼是開放態度呢?R核心團隊多年不加新人了,近年加入的是Uwe Ligges,因為他維護CRAN的Windows編譯很多年了,估計深得教授歡心(一樣的倔強脾氣),我不覺得他加入能有多大的實質性貢獻。Radford Neal在百般無奈下自己開發了pqR,因為R核心團隊要麼不搭理他的建議,要麼過很久才有一個人出來說話。像這樣有計算機背景而且做貝葉斯的人(這樣的人更注重計算速度)才是R核心團隊最需要新增的人,而不是整天搗鼓出更多R CMD check
的規則,把R包作者趕得雞飛狗跳。
要論R團隊中最具有開放態度的人,我認為是Douglas Bates,前些日子他無情吐了CRAN一臉,然後華麗轉身投入Julia陣營了。CRAN承認也好,不承認也好,它對使用者的傷害是顯而易見的。公平地講,CRAN這幫人當然也有著不可否認的巨大的的歷史貢獻,所有人都該感激。教授經常抱怨有些使用者不尊重他的勞動,我覺得這有什麼好抱怨的呢,林子大了總是這樣的,有些人確實很無禮,但有些人只是不懂規則而已,並不是有心冒犯,話說回來,誰讓你制定那麼多規矩呢,不是所有人都有閒心去讀懂那長篇大論的CRAN政策的。很多規則本來都可以通過自動化的方式解決而不必寫出來,CRAN非要堅持以古老的郵件加FTP方式維護,管理者和作者都累都煩,卻又都沒錯,都沒錯的時候打仗是最激烈的,這就要了命了。有時候教授也在玻璃房子裡扔石頭,修正R的bug的借用了別人的程式碼不致謝(好吧,有可能是看了別人的補丁然後自己閉眼重寫出來的),還要順便抹黑另一個R包,我不知道他為什麼那麼恨維克漢姆,我不是維大人的粉絲,但我覺得真沒必要這麼深仇大恨。
開放態度也包括使用開放的工具,包括版本控制工具和交流工具,而變化總是讓人感到痛苦。指望R搬到GIT世界可能希望不大,習慣SVN的人似乎總是與GIT勢不兩立(從此可以看出LyX團隊的開放精神),其實GIT要是沒有Github撐腰,可能也火不起來,好東西要火起來除了確實是好東西之外,還需要合適的介質,就如同LyX之於LaTeX,RStudio之於R,Markdown之於可重複研究——儘管後者是實質,前者是表象,使用者天生就是外貌協會的,再好的東西只要不好看就沒戲。再說交流工具,郵件列表是傳統工具,我認為它應該退出歷史舞臺了,弊病太多,作為吐嘈達人,我又忍不住吐了郵件列表一臉。
總而言之,我覺得開源世界的大致勢頭就是:老一輩傾向於系統控制狂,什麼郵件系統版本控制系統bug報告系統,統統自己配置,但現在的系統越來越先進和複雜,想要控制整個系統需要花費越來越多的精力,這些雜碎的事情將耗盡主力隊員的精力,而且越來越落後;新一輩摩拳擦掌,雖然經驗不足,但解決區域性區域的問題還是可以的,而且能有效利用更現代化的工具提高生產力和影響力。未來自由軟體的競爭,將不僅是專業實力的競爭,更是綜合素質的競爭。在你盡情鄙視社交網路和各種酷炫網站並堅守“一切皆純文字檔案”的時候,你也會被時代浪潮淹沒。不公平?確實不公平,但事情就是這樣。
相關文章
- 再談開源ERP
- 開源協議GPL3再引爭論 可能導致社群分裂(轉)協議
- FreeBSD 乃至開源界中的孔乙己 再論苦難哲學之一
- 用DDD開發開源論壇
- Node.js 開源論壇Node.js
- 再論“庫存控制”
- 再論NAT和穿透穿透
- 再談“開源軟體供應鏈安全”
- 社群討論:開源能否拯救.NET?
- 【雲棲大會】再談開源大資料大資料
- Win10UWP再支援ReactNative開源框架Win10React框架
- 再談開源軟體和錢的問題
- 再談方法論和模式模式
- 評論專欄: 為執行建模,再論
- Jax 生態再添新庫:DeepMind 開源 Haiku、RLaxAI
- GoLang之Concurrency再討論Golang
- 常青藤開源科技加入,龍蜥社群再迎 HPC 和開源領域新夥伴
- 個人 Laravel 論壇專案 (程式碼開源)Laravel
- 開源評論系統 Isso 全攻略
- java 開源的論壇系統推薦Java
- 開源Node.js論壇上線了Node.js
- 史丹佛開源學術研究神器STORM再進化,AI智慧體像人一樣進行圓桌討論ORMAI智慧體
- 開源了我獨立開發的評論元件 SaaS ? ?元件
- 鳥瞰前端 , 再論效能優化前端優化
- 再論 golang 環境配置建議Golang
- 再論字符集轉換(二)
- NodeBB – 基於 Node.js 的開源論壇Node.js
- 騰訊再開源三項技術,提升企業開發及運營效率
- 讓論壇迴歸討論!免費開源的輕量級論壇程式推薦
- 不要再爭論程式碼風格了!
- 充血模型與貧血模型的再論模型
- 再見微軟Office, 您好LibreOffice!請支援開源運動 - easydns微軟DNS
- 再見 Xshell !這款開源的終端工具逼格更高!
- LAMP開源高峰論壇10月23日在北京召開(轉)LAMP
- 心寄開源,合規護航|2022開放原子全球開源峰會開源合規分論壇即將開幕
- 再論物件導向的Javascript程式設計物件JavaScript程式設計
- Halo 開源專案學習(五):評論與點贊
- 技術方案(開源方案)選型的考量和方法論