這篇文章是在春節(jié)前寫的。
一直癢癢想寫點(diǎn)什么,但又無從下筆。今天,在公眾號(hào)上發(fā)了一篇文章《飲水思源,新年大禮》,得到了不少贊賞,便又覺得或許還是應(yīng)該寫一寫。大家平常喜歡看到的文章都是比較有深度和高度的,我沒有什么輝煌的背景和經(jīng)歷,自然寫不了高大上的東西。不過,從小處寫寫我自身的經(jīng)歷和思考,或許也有意義吧。
我是在高中畢業(yè)那年暑假開始接觸計(jì)算機(jī)的,雖然實(shí)際上只是一個(gè)小霸王的紙質(zhì)鍵盤鍵位圖。上大學(xué)后,我在學(xué)校機(jī)房里用到的第一臺(tái)電腦是286,還買過5寸的軟盤,容量是360KB。雖然我沒能考取心儀的計(jì)算機(jī)系,但也不妨礙我到圖書館借書學(xué)習(xí),其實(shí)也沒學(xué)到什么,最開始就是玩各種DOS命令,PCTOOLS和ARJ。大一暑假我自學(xué)了C語言(確切的說是把書看了好幾遍從來沒有上機(jī)),那時(shí)候還沒接觸互聯(lián)網(wǎng)。
我學(xué)習(xí)Linux是源于1999年的一則《參考消息》,講了一個(gè)芬蘭的小伙子寫了一個(gè)操作系統(tǒng)云云。我便斥巨資70元(至少對(duì)于當(dāng)時(shí)的我來說,其實(shí)70元買本書現(xiàn)在還不算便宜)買了一本《Linux實(shí)用大全》(陳向陽、方漢),從此了解了自由軟件,知道了Rechard Stallman。但那時(shí)虛擬機(jī)還沒這么發(fā)達(dá),我又沒有自己的電腦,經(jīng)常是裝在別人電腦上隔幾天就被刪除的情況下學(xué)習(xí)各種命令,以及X(那時(shí)網(wǎng)卡兼容性很差的,基本只能顯示256色,640x480、800x600或最高1024x768)。
畢業(yè)后,很偶然的機(jī)會(huì)我進(jìn)入了煙臺(tái)電信(在我們畢業(yè)那年之前電信部門基本只招郵電院校的學(xué)生),然后我可以折騰各種各樣的計(jì)算機(jī)。雖然破,便能用128K的ISDN上網(wǎng),感覺已經(jīng)很爽了。那時(shí)候開始用Google,但從那時(shí)起,Google就被封過,原因可能是搜索某關(guān)鍵詞出來的結(jié)果是關(guān)鍵詞是大壞蛋。
后來我也攢了自己的電腦,系統(tǒng)當(dāng)然是Linux。但當(dāng)時(shí),我主要的工作就是在不斷地解決如何在Linux上完美支持中文(實(shí)際上永遠(yuǎn)不可能完美,UTF-8一統(tǒng)天下還是N年后的事情),如何支持QQ、如何BT下載,如果裝Linux不支持的軟件,使用Wine模擬器等,但幾乎從來沒有真正用它來干過正事。
當(dāng)然在單位里我還是干了許多事情的。我主要負(fù)責(zé)程控交換機(jī)維護(hù),寫代碼只是業(yè)余愛好。我寫了好多腳本和程序使命令執(zhí)行和日志分析自動(dòng)化。我還寫了網(wǎng)管值班系統(tǒng),真正做到了值班系統(tǒng)的電子化和自動(dòng)化。由于工作中的絕大部分軟件只能在Windows下執(zhí)行,所以,基本上我是在Windows上Vim SSH到遠(yuǎn)程的Linux上開發(fā)。我的技術(shù)棧是C、PHP、和PostgreSQL。我的程序都能運(yùn)行在Linux以及Tru64 UNIX上。
最值得欣慰的是我基于CakePHP開發(fā)的一款投票系統(tǒng),公司一直使用至今,到今年正好是十年了。PHP不愧是世界上最好的語言,PHP5十年沒有升級(jí),那時(shí)候?qū)懙拇a,到現(xiàn)在看還不算過時(shí)。
然而雖然我使用過很多開源軟件,也編譯過全套LFS,但始終沒看過什么源代碼,除了書上的(《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》,上下兩冊(cè),下冊(cè)整本是代碼 ?? ,操作系統(tǒng)是Minux)。我經(jīng)常上的論壇是ChinaUnix和LinuxEden,但是基本只是潛水。
可是我很熱愛開源軟件,也希望能做點(diǎn)什么。我曾經(jīng)嘗試為LinuxFocus網(wǎng)站翻譯過一些文章,也在自己的博客上翻譯過SQLite的部分文檔。其它也沒有什么了。不過,這些工作對(duì)我還是有些幫助的,我至少能看英文的文檔,中文表達(dá)也有所進(jìn)步。
有一年我在北京小住,投了一些簡歷。當(dāng)時(shí)沒有離職的想法,只是想試試自己能值多少錢。當(dāng)然,我投的心儀的公司如Google、IBM之類的都石沉大海,后來是一家小的創(chuàng)業(yè)公司給了我面試機(jī)會(huì)。老板都是外國人,純英文的面試我竟然都能聽懂(多看原聲大片也是有好處的),雖然口語不怎么樣,但2個(gè)小時(shí)下來,我也沒被難住。后來,就真進(jìn)了這家公司。
當(dāng)年CSDN舉辦了Web 2.0大會(huì)。記得門票好像是1000多塊,好貴,但機(jī)不可失,我毅然自己買票參加了。大開眼界。來自阿里巴巴、騰迅等的技術(shù)大俠們,看樣子比我年輕很多,都站在臺(tái)上滔滔不絕了。我就下定決心,拋棄『鐵飯碗』辭職到了北京。那一年,是北京藍(lán)天最多的一年。
我最開心的事就是上班的第一天我就把我的Windows電腦換成Linux,從此再也沒有換回來過。當(dāng)時(shí)我的職位是系統(tǒng)管理員。我們是一個(gè)Rails團(tuán)隊(duì),那年頭也算是國內(nèi)最早搞Rails的團(tuán)隊(duì)之一了。我雖然出身草莽,但我學(xué)東西快。做運(yùn)維只是我的工作而已,我還是更喜歡開發(fā),后來,整個(gè)團(tuán)隊(duì)里,除了老板以外,就我算是全棧工程師了(當(dāng)年好像還沒聽說過這個(gè)名字)。什么棧呢?Linux、C、Rails、Erlang、Lua、Javascript、Flex、HTML/Javascript,后來公司的第一個(gè)iOS程序也是我寫的(基于Titanium)。
我開始可以名正言順地研究各種開源軟件,當(dāng)然,大多是停留在如何部署和優(yōu)化上。后來,公司一直想招一個(gè)做FreeSWITCH開發(fā)的工程師(VoIP軟交換軟件)但一直招不到(現(xiàn)在也一樣招不到,太少),我就說要不我上唄,然后我就上了,然后,就結(jié)下了我與FreeSWITCH的不解之緣。
FreeSWITCH是開源的,采用MPL1.1許可證。當(dāng)然,這跟Stallman大叔所提倡的自由軟件還有很大不同。Stallman大叔基本上只認(rèn)GPL。說到Stallman,他來清華大學(xué)演講時(shí)我還見過(遺憾沒有拍照)也有親筆簽名的書。他講的東西其實(shí)我都知道,我還提問過HURD,不過,說到這些就有些遠(yuǎn)了?傊,我很佩服他。
FreeSWITCH不像Linux、MySQL那樣成熟,當(dāng)時(shí)的版本還不到1.0,文檔也少。所以,那時(shí)候我基本上是一邊學(xué),一邊練,一邊幫忙寫寫Wiki什么的。我加入了郵件列表,基本上每封郵件我都看。用著用著就發(fā)現(xiàn)了Bug,然后慢慢的學(xué)著報(bào)Bug。很多次,我們報(bào)一Bug,睡一覺,Bug就修好了(主要開發(fā)人員都在美國)。有一次,我連續(xù)報(bào)了幾個(gè)Bug和新特性需求,以至于FreeSWITCH的作者Anthony跟我說,我可以停下來休息一會(huì)了嗎?我看了看我的要求基本上都已實(shí)現(xiàn)了,我就說,可以了。
就這樣,慢慢地,學(xué)會(huì)了跟這些真正的開發(fā)者們交流。交流中還發(fā)生過一次有意思的事情。FreeSWITCH團(tuán)隊(duì)中有一個(gè)人叫Brian,我每次寫郵件都寫『Hi,Brain…』,有一次被我們老板看見了,就問我,這個(gè)人叫『腦子』嗎?我說是啊,你看。他看了半天說,不對(duì),不對(duì),你看,人家明明叫布萊恩……
FreeSWITCH的核心開發(fā)者都是上一代的程序員,是一些真正的黑客。他們都用Emasc寫程序,用郵件列表和IRC交流,技術(shù);旧暇褪荘erl和C,也不想著再學(xué)什么新的語言。但有機(jī)會(huì)跟他們聊天,才感覺真正走近了程序員。
不知從什么時(shí)候起,我想起了其實(shí)我也會(huì)C,就嘗試提一些補(bǔ)丁,自己寫些模塊什么的。有些補(bǔ)丁竟然被官方采納了。從那時(shí)起,我基本上每天都會(huì)看FreeSWITCH的源代碼,嘗試?yán)斫饷恳淮翁峤。一到到現(xiàn)在。
中國人是善于學(xué)習(xí)的。幾乎不管有個(gè)什么網(wǎng)站,必定有個(gè)什么什么中國。FreeSWITCH沒有,因此我就建了一個(gè),所以,我就成了FreeSWITCH中文站的站長。
我使用Google Groups做郵件列表,一個(gè)網(wǎng)友建了QQ群(就是群主大熊),也做了和簡單的中文站靜態(tài)頁面,開始寫些博客。但很不幸,Google Groups很快就不能用了。其實(shí)我感覺我肯定被Curse了。我們公司開始用Google Site、iGoogle、Google Reader、Gmail、后來我們用Twitter、Facebook,后來這些網(wǎng)站就不存在了。這是眾所周知的事情,就不多說了,總之,Google Groups就一直沒有人氣,而在國內(nèi)要做一個(gè)BBS需要至少100萬的注冊(cè)資本,我就一直沒有做。后來的時(shí)候在香港架了一臺(tái),但這個(gè)時(shí)代已經(jīng)不是BBS的時(shí)代了,因而,人氣并不好。
FreeSWITCH有一個(gè)一年一度的開發(fā)者大會(huì)叫ClueCon,每年在芝加哥舉行,我們老板有去講過,有一年,我也申請(qǐng)去,公司也幫忙辦了簽證,但是,公司后來發(fā)生了一些變化,我就自費(fèi)去參加了。話說當(dāng)時(shí)我在FreeSWITCH社區(qū)也算跟他們混得熟了,去了也不能白去,便自己申請(qǐng)了一個(gè)10分鐘的Lighten演講,雖然英語口語不怎么樣,但照著幻燈片基本念下來了。后來,我就每年都去,也每年都有正式的演講了。當(dāng)然,后來才發(fā)現(xiàn),這是一個(gè)國際性會(huì)議,里面很多外國人,英語講得還不如我好。
上面說到公司后來發(fā)生了變化,后面就被離職了。接著就是被創(chuàng)業(yè)。最開始想做呼叫中心,結(jié)果后來誤打誤撞做了指揮調(diào)度方向。但不管做什么,其實(shí)都不好做。做互聯(lián)網(wǎng)久了,回頭再做企業(yè)軟件,不得不適配很低版本的瀏覽器、Windows甚至還用ActiveX這么老套的軟件的時(shí)候,我感覺到很不適應(yīng)。因此,我就一直都沒有做好。而且,在甲方不停地拖欠項(xiàng)目款的時(shí)候,我心情越來越不好。我們?cè)虢柚鷰讉(gè)項(xiàng)目做成一款優(yōu)秀的系統(tǒng),但結(jié)果是我們做了好幾個(gè)系統(tǒng)彼此還不兼容,都差20%沒有完成但完成這20%卻需要花80%的精力。所以,最終,我們幾乎什么都沒做成。
我們開始嘗試做FreeSWITCH培訓(xùn),第一次招生好像只有4個(gè)人報(bào)名,而我們的目標(biāo)是至少8個(gè)人才能Cover住成本,所以取消了,F(xiàn)在看起來非常后悔,因?yàn),那畢竟是一屆培?xùn)班,賠點(diǎn)錢也應(yīng)該是要做的。
我們開始做社區(qū),學(xué)著ClueCon搞了一個(gè)FreeSWITCH技術(shù)開發(fā)者沙龍,結(jié)果每年一屆就做起來了。最初兩年都是車庫咖啡,后來又轉(zhuǎn)到了好一點(diǎn)的酒店。隨著我對(duì)FreeSWITCH的大力宣傳與鼓吹,我們的培訓(xùn)班也慢慢有了人氣,到現(xiàn)在,有十幾個(gè)班次了,每年不定期在北京、上海、深圳、南京等地舉辦。我們儼然成了一個(gè)培訓(xùn)公司 :D。
線下培訓(xùn)的一個(gè)問題就是選址,不管我們?cè)谀膬号嘤?xùn),總有人說希望到他們的城市去。但不管怎么說,我們基本還是集中在北京、上海這樣交通方便的大城市。線上培訓(xùn)現(xiàn)在都這么方便了,為什么還只做線下培訓(xùn)呢?我們的想法是這樣的:其實(shí),三天的培訓(xùn)就是累死我也講不了多少東西,大部分內(nèi)容還是點(diǎn)到為止,授人以漁。給大家一個(gè)線下交流的機(jī)會(huì)。另外,來參加培訓(xùn)的一般都是公司的技術(shù)骨干,如果不是專門拿出時(shí)間來線下培訓(xùn),他們?cè)诠纠锘旧嫌肋h(yuǎn)都有干不完的活,能有多少時(shí)間專注于培訓(xùn)課程?想一想,我三天每天講8小時(shí)的內(nèi)容,如果是線下看視頻的話,需要多長時(shí)間才能看完?
當(dāng)然,2017年我們會(huì)嘗試一些線上的玩法,比如3-5分鐘的短視頻解決一個(gè)很小的問題等。我們的培訓(xùn)采用類似飛機(jī)票的定價(jià)方式,按報(bào)名早晚從7、8、9折一直到全價(jià),早報(bào)名優(yōu)惠幅度大,其實(shí)對(duì)我們來說更重要的是我們?cè)摐?zhǔn)備一個(gè)多大的教室,關(guān)于這一點(diǎn),做過活動(dòng)的人都知道,我們也是一點(diǎn)一點(diǎn)的學(xué)來的。
在中國做社區(qū)很關(guān)鍵的一環(huán)是QQ群。我們很早就有了QQ群。我們管理比較嚴(yán),因此群里基本沒有胡鬧的。多年來我在群里跟大家說的最多的話就是《提問的智慧》。因?yàn)椋蠖鄶?shù)人都沒法問一個(gè)好問題。簡單舉幾個(gè)例子:
Q:有人在嗎?
A:群里有問題直接問。
Q:我裝了FreeSWITCH,打不了電話怎么辦?
A:我也不知道。:( 你到至少把現(xiàn)象說清楚啊。
Q:FreeSWITCH崩潰了,有人遇到嗎?
A:廢話,我的FreeSWITCH幾乎天天崩潰(在這些年里,光測試我不下打了幾萬的電話,崩潰也有幾千次了)。
上面的問題是根本無法回答。當(dāng)然,也有些人提供一些簡單的信息,但是,我需要至少知道以下信息:
你用的什么操作系統(tǒng)?XP?Win7還是Win10?
FreeSWITCH是什么版本?FreeSWITCH都十年了,你讓我猜?
什么現(xiàn)象?至少描述一下吧?
在默認(rèn)的FreeSWITCH配置上,你都做過哪些改動(dòng)?
為了解決這個(gè)問題,你都做過哪些努力?
你有沒有收集相關(guān)的日志?
好多人根本沒有意識(shí)到世界有多大,他以為他用Windows,別人也在用Windows(Windows現(xiàn)在也有N個(gè)版本了),他提一個(gè)問題,回答他問題的人就站在他身后能看到他當(dāng)時(shí)的遇到的一切一切。
當(dāng)然,有人也很努力,寫了很多,但是,通篇沒有一個(gè)問號(hào)!!
說實(shí)話,雖然開源社區(qū)很熱鬧,但做開源是很孤獨(dú)的。我花了大把時(shí)間在社區(qū)里,每一個(gè)問題都想回答,可是,就是插不上嘴。
實(shí)際上,即使是這樣,很多時(shí)候大家提供一點(diǎn)點(diǎn)信息我就知道他是怎么回事,我遇到過的場景實(shí)在是太多了。但是,如果他不能好好描述他們的問題,我一般是不會(huì)回答的。我會(huì)告訴他怎么看新手指南,怎么提一個(gè)好問題,等到他終于把問題問到點(diǎn)子上的時(shí)候,我告訴他今天我屬于他的時(shí)間片用完了,我還有更多其它的事情要做。如果還想知道答案,買商業(yè)支持吧。
是的,很多人一上來就想讓我回答他的問題,一上來就私聊。我問他為什么不在群里問,他說怕打擾別人。我就問他,你不怕打擾我嗎?
開源雖然是個(gè)半公益的事情,但是,我總不能把我的時(shí)間花在一對(duì)一技術(shù)指導(dǎo)上。如果一個(gè)問題,我在群里回答了,那么,群里所有人都能從這個(gè)問題中學(xué)到知識(shí),但是,我沒有義務(wù)只回答其中一個(gè)人。所以我一般告訴他們,私聊是收費(fèi)的。是的,這就是開源社區(qū)的運(yùn)行規(guī)則:如果你能公開的討論問題,那大家都公開,共同學(xué)習(xí)進(jìn)步,活躍社區(qū)。但如果你是為了一己私利想得到保姆式的指導(dǎo),那就交點(diǎn)錢唄。
其實(shí)有時(shí)候心情好的時(shí)候私聊我也是回答的。只是,有些更可恨的情況,有些人一上來就讓你回答問題,一點(diǎn)客氣話都沒有,好像你是欠他的。我們從小學(xué)習(xí)講文明講禮貌,最不計(jì),難道不知道自報(bào)家門嗎,我?guī)土艘仓辽賾?yīng)該知道幫的是誰吧?
還有人跟我說,他參與的別的社區(qū),大家都非常熱情友好,有問必答,怎么我就那么多毛。课抑缓每蜌獾母嬖V他,誰家好你可以去誰家啊,反正我家私聊是收錢的。
其實(shí)收錢不是目的,憑這個(gè)也根本發(fā)不了財(cái),只是,我想培養(yǎng)一種態(tài)度和習(xí)慣。如果一個(gè)人從來在社區(qū)里沒有做對(duì)社區(qū)有意義的事情,就苛求別人免費(fèi)熱心回答你的問題,這是不可取的。那如果我真遇到一個(gè)緊急的問題怎么辦呢?
有錢能使鬼推磨啊。
多年來,我一直堅(jiān)持一種理念——知識(shí)是有價(jià)值的。如果FreeSWITCH對(duì)你有用,那就應(yīng)該加入FreeSWITCH社區(qū),想想自己能幫社區(qū)做點(diǎn)什么。這樣,等你有困難的時(shí)候,自然也會(huì)有人幫你。這些幫助并不一定是錢或代碼,文檔,組織活動(dòng),甚至幫助社區(qū)維護(hù)秩序都需要有人來做,看你喜歡做什么。如果你沒有時(shí)間做這些事情,當(dāng)然也可以花點(diǎn)錢來資助別人來做這件事。如果你確實(shí)是個(gè)新人,卻又遇到緊急的問題,那么多花點(diǎn)錢找有經(jīng)驗(yàn)的人解決問題不是最直接的方式嗎?
其實(shí)我一直想做成一個(gè)FreeSWITCH保險(xiǎn)公司。所有FreeSWITCH用戶,平時(shí)交點(diǎn)保險(xiǎn)費(fèi),那么,我們就可以培養(yǎng)更多的專職FreeSWITCH技術(shù)人員,當(dāng)你有困難的時(shí)候幫助你。當(dāng)然如果你遇到緊急情況又沒有保險(xiǎn),多花點(diǎn)錢我們也會(huì)幫助你。
當(dāng)然,知識(shí)的定價(jià)是很難的。但無論如何,我們還是找到了一個(gè)讓大家容易理解的收費(fèi)方式:掛號(hào)費(fèi)。
所有來咨詢的客戶我們都收一個(gè)類似醫(yī)院的掛號(hào)費(fèi)(最初是1024元,現(xiàn)在漲到了1500)。只有掛號(hào)了我才幫你診斷(需求分析),診斷完成后再?zèng)Q定治療方案,需要理一步檢查或者住院再另外收費(fèi)。
進(jìn)一步檢查按什么標(biāo)準(zhǔn)收費(fèi)呢?其實(shí)沒有標(biāo)準(zhǔn),基本上是按心情,然后再按心情價(jià)格折算成用戶想要的工時(shí)成本(用戶需要一個(gè)價(jià)格體系去向老板匯報(bào)申請(qǐng)預(yù)算……)。為什么說沒有標(biāo)準(zhǔn)呢,因?yàn)椋话阌脩粝M覀儼垂r(shí)報(bào)價(jià),但是,同樣是一小時(shí)的工作,我們?cè)谏鐓^(qū)里服務(wù)是免費(fèi)的,對(duì)一些小的公司也發(fā)揮不了多大作用,對(duì)大公司起和作用就會(huì)很大。比如我們有一個(gè)客戶公司由于采用了FreeSWITCH光維保費(fèi)用比起以前的商業(yè)軟件一年就省下上億的成本。所以,報(bào)價(jià)的標(biāo)準(zhǔn)其實(shí)不是我要花多少時(shí)間,關(guān)鍵是我們是否能幫客戶掙到錢。
我們這種策略實(shí)行了,效果還不錯(cuò)。成功的擋住了 無數(shù)的那些根本不想交錢的人(或者是他的業(yè)務(wù)模式根本沒法掙到錢的人);蛟S也犧牲了好多潛在客戶,但是,我們更愿意集中精力給愿意花錢的人做更好的服務(wù),而不是為了獲取更多的客戶。
當(dāng)然,也有客戶會(huì)問,我們還不知道你是否能給我們提供服務(wù),就收錢?我們就耐心地告訴他們,我們已經(jīng)盡最大努力做了合情合理的解釋,誰去醫(yī)院不是先掛號(hào)?更進(jìn)一步的解釋是:你可以去花一些時(shí)間研究和調(diào)查,我們的背景,以及我們是否能夠幫到你,但是,如果我們能直接收個(gè)掛號(hào)費(fèi)就省去了你去調(diào)查研究的錢,這不也是錢嗎?甚至,如果我們直接告訴你,這事我們不能做,你該去找誰,或者這個(gè)事不適合用FreeSWITCH做,推薦你用其它的解決方案,防止你在FreeSWITCH一條道上走到黑,節(jié)省了時(shí)間和更多潛在的損失,那這掛號(hào)費(fèi)值不值呢?
當(dāng)然,教育客戶也是有成本的。但這是我們的信念。
我們也遇到一些大公司,由于公司的流程不能采用掛號(hào)費(fèi)的規(guī)則,我們也會(huì)變通,但大多數(shù)情況下,我們不相信忽悠,一般從小項(xiàng)目做起。從我們的經(jīng)驗(yàn)看,越是大的項(xiàng)目,賠得越多。既使工程款能全額到賬,也會(huì)拖上兩三年,我們體量小,跟大公司耗不起。
說著社區(qū),就想到扯到商業(yè)支持去了。其實(shí),這兩點(diǎn)也是分不開的,開源也是一種商業(yè)模式。我在演講中曾比喻開源其實(shí)就是博弈論里的智豬博弈。比如對(duì)Linux而言,IBM、Google、甚至微軟都算是大豬,我們就算小豬跟在后面不勞而獲。雖然像FreeSWITCH之類的小眾軟件做開源比較難,但是,至少我們公司到現(xiàn)在是活下來了,我們也不用適配各種潛規(guī)則,而是制定我們想要的規(guī)則。 其實(shí)我很佩服老羅說的那句話:“通過實(shí)現(xiàn)理想讓人相信實(shí)現(xiàn)理想是可能的……即使是在中國”。
做開源是孤獨(dú)的。但是,想到自己的代碼被全世界的人在7x24小時(shí)的使用,也還是很欣慰的。而且,總會(huì)有人欣賞你,告訴你你幫上他了。也有人會(huì)發(fā)紅包,有人會(huì)買一些技術(shù)咨詢服務(wù)。
大約幾年前,由于表現(xiàn)好,我得到了FreeSWITCH核心代碼庫的提交權(quán)限,后來,就把自己幾年的有用代碼都開源了,F(xiàn)reeSWITCH 1.6里面的視頻部分最初基本都是我寫的。那年的ClueCon,我也終于跟所有的FreeSWITCH核心開發(fā)者,站在了同一個(gè)舞臺(tái)上。
寫代碼是很辛苦的,我原先其實(shí)沒什么做視頻開發(fā)的經(jīng)驗(yàn),只是一點(diǎn)點(diǎn)學(xué),一點(diǎn)點(diǎn)試,不停地Crash,不停地重啟……
既然開源也算商業(yè)模式,那么寫代碼就算是投資吧。然而,這個(gè)投資回報(bào)可不怎么高,大多數(shù)時(shí)候大家根本不會(huì)為了開源代碼付費(fèi),而是,會(huì)問你,你們有沒有不開源的部分?賣多少錢?
說到這里我們得說說大家為什么要用開源。開源并不意味著免費(fèi),有時(shí)候,甚至?xí)饶阗I商業(yè)的系統(tǒng)貴。所以,在我所咨詢過的客戶中,我都強(qiáng)調(diào)要爭取更多的開源預(yù)算。因?yàn),不管什么事情,如果沒有足夠的預(yù)算,最后一定會(huì)失敗。好多人都覺得FreeSWITCH是免費(fèi)的,然后搭起來就可以賣錢了,可玩到最后,發(fā)現(xiàn)坑越來越多,最后還是來找到我們支持。我們就會(huì)認(rèn)真地幫他們分析哪些地方走了彎路。當(dāng)然,我們這兒也并不一定不是彎路,但,至少,我比大多數(shù)人更了解FreeSWITCH能做什么,能做到什么程序,至于商業(yè)模式是否成功,那還是得客戶自己掂量。至于那些問我們要不開源的部分代碼的用戶,腦子里的水一定很多。開源有開源的好處,如果我們單獨(dú)給你維護(hù)一個(gè)不開源的分支,或者僅僅是寫一個(gè)不開源的模塊,你就失去了社區(qū)的支持,所有的測試都得自己做、Bug都得自己修。甚至,即使你能做到,你怎么同步上游的代碼嗎?如果你沒有BAT這樣的團(tuán)隊(duì),你準(zhǔn)備好預(yù)算了嗎?
值得一提的是,上面說到的『坑』真不是我們故意挖的。如果你遇到『坑』,那恭喜你,你已經(jīng)是深度用戶了。想一想,你很少遇到Linux、MySQL的『坑』,卻遇到了很多關(guān)于FreeSWITCH的,是FreeSWITCH不如它們穩(wěn)定嗎?誠然,有那么一點(diǎn)點(diǎn),但是,更多的,是你沒有用到MySQL那么深入。不信,你可以問問BAT的工程師,他們有沒有遇到。
我知道BAT中也有些團(tuán)隊(duì)在用FreeSWITCH,他們甚至打了很多補(bǔ)丁,也維護(hù)著自己的版本。但到目前為止,給FreeSWITCH提交補(bǔ)丁的中國人還是寥寥,在核心團(tuán)隊(duì)中擁有核心代碼提交權(quán)限的也只有我一個(gè)中國人。開源,是一個(gè)生態(tài),希望未來有更多的人參與到開源事業(yè)中來。
有一年FreeSWITCH技術(shù)沙龍的時(shí)候,我把我的博客整理了一版,印了一本小冊(cè)子,叫《FreeSWITCH:VoIP實(shí)戰(zhàn)》還賣了不少。后來,這本書就正式出版了,書名改為《FreeSWITCH權(quán)威指南》。有點(diǎn)標(biāo)題黨,不過,書真的很厚。不多說了,寫書比寫代碼難得多。
有了書以后,QQ群里大家常見的問題基本上都可以在書上找到,我也輕松了很多。這時(shí)候,我常回答的一句是:先買本《FreeSWITCH權(quán)威指南》自己看看再問。
后來,隨著使用FreeSWITCH的人越來越多,也為了照顧那些平時(shí)匆忙沒時(shí)間仔細(xì)研究但又想學(xué)又不想花很多錢的人,我們建立了一個(gè)FreeSWITCH精英群QQ。通過收費(fèi)入群,在那里我回答問題會(huì)寬容些。比如我會(huì)直接告訴他命令,以及詳細(xì)的參數(shù),或者書上的哪一頁,甚至專門寫一篇文章解釋一些復(fù)雜的問題,但在免費(fèi)的群里,我一般就是點(diǎn)到為止。
真有人就花錢加入了精英群。不知道是水土問題還是進(jìn)群的人素質(zhì)本來就高,總之,精英群里反而很少有爛問題,提問和回答都很高效。同樣的問題,我在免費(fèi)的群里,基本需要反問10遍才把背景信息和日志套出來,而在精英群里,基本一兩遍就行了。
2015年是社群的元年,我們也算是為這個(gè)元年做了一點(diǎn)點(diǎn)貢獻(xiàn)。
有時(shí)候會(huì)有人心急火燎地提問問題,說老板告訴他們今天必須搞定。對(duì)于這樣的問題我基本能回答也不回答 ,最多告訴他們?cè)撡I個(gè)商業(yè)服務(wù),我們有專門的應(yīng)急通道可以幫助解決這類問題,同時(shí),提醒群里所有潛水員,如果想得到更好的服務(wù),最好未雨綢繆早交保險(xiǎn)費(fèi)。
上面例子當(dāng)然是說給老板們聽的。但同時(shí),做為技術(shù)人員,如果在老板那里申請(qǐng)不下經(jīng)費(fèi),我覺得自己花錢買本書或進(jìn)個(gè)精英群、或是參加個(gè)培訓(xùn)之類也還是花得起得,如果工作做好了得以升職錢不就回來了么。我們?nèi)豪镉泻芏噙@樣的例子。投資自己才是最好的投資。對(duì)我自己而言,雖然沒有升職,但我這么多年每年自費(fèi)往返美國參加ClueCon,回來得以吹吹牛什么的,也算是對(duì)自己的投資吧。
從2013年開始,學(xué)著大輝和池建強(qiáng)做FreeSWITCH-CN微信公眾號(hào)。最初寫東西比較多,最近一年懶了很多,希望來年能抽出時(shí)間多寫點(diǎn)東西。
除了FreeSWITCH之外,我還給Erlang提交過補(bǔ)丁,不過一兩行代碼的事,就不值得一提了。
做了這么多年,雖然我們小步快跑,現(xiàn)金流都是正的,但其實(shí)我們一直沒有找到好的盈利模式,一直都在摸索。而且,做為一個(gè)小公司,隨便來一個(gè)大一點(diǎn)的活都會(huì)把我們的主要力量拽過去。也有不少人找到我們認(rèn)真的討論收購問題,但最后基本是都是沒有下文。一個(gè)主要的沖突就是,他們根本不愛開源。而如果只是拿FreeSWITCH做出一款市面上已經(jīng)存在的產(chǎn)品,同時(shí)又不開源,那又有什么意義呢?我們做開源,其中一點(diǎn)就是可以自由方便地取代那些收費(fèi)高昂又不自由的商業(yè)產(chǎn)品,現(xiàn)在卻要我們做成我們不喜歡的那些產(chǎn)品,意義何在呢?
FreeSWITCH一直沒有一個(gè)好用的圖形用戶界面,我們最近正在做一個(gè),也是開源的。我們不知道未來是什么樣子的,但我們始終相信,開源是一條可以走下去的路,也許沒有捷徑,但我們肯定能找到辦法越走越寬。