新聞中心
我是Beetl的開源作者,叫李家智,網(wǎng)名是閑.大賦??赡芎芏嗳烁煜み@個(gè)名字,我本意是希望自己又有錢,又很閑,結(jié)果事與愿違,尤其是Beetl使用的人多后,又忙又窮了,也許該改名字叫窮.又忙 :)

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)鹿寨免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
做什么事情都需要貴人提攜,開源也一樣,我就碰到了倆個(gè)貴人,一個(gè)是HP公司,在做移動(dòng)總部的好幾個(gè)項(xiàng)目,客戶和HP老板安排事情非常合理謹(jǐn)慎,所以空閑時(shí)間挺多的,10點(diǎn)到客戶那,6點(diǎn)就下班回家,期間還玩玩各種游戲,一點(diǎn)都不忙。但秋季的有一天我覺悟了,不能這么過下去,得給自己留點(diǎn)什么,閑著閑著就琢磨學(xué)習(xí)一下技術(shù),選了一個(gè)看似高大尚的技術(shù)--開發(fā)一門語言,也就是現(xiàn)在你們知道的Beetl模板語言。我其實(shí)挺后悔這個(gè)決定的,當(dāng)時(shí)應(yīng)該搞搞NOSQL,分布式什么的(后來花了一周搞了一個(gè)分布式協(xié)作的facade技術(shù),確實(shí)帶了些好處,這是后話了),或者搞個(gè)開源商城什么的的也好拿來賣錢,因?yàn)楦阏Z言確實(shí)不怎么流行了--盡管難度挺大的。 另外一個(gè)貴人就是beetl初期使用者,當(dāng)我做好0.5版本后,就一直放著,也沒有人使用,我也沒有意愿推廣,有一天,一哥們給我發(fā)郵件,說beetl很不錯(cuò),想用一下。我頓時(shí)興奮了,激起了我再接著開發(fā)完善的熱情,雖然當(dāng)時(shí)從HP出來去了某有態(tài)度公司技術(shù)部,但仍然廢寢忘食的完善Beetl,這哥們后來所有的項(xiàng)目都是用Beetl做的,我也很感謝他,沒有他***個(gè)使用,Beetl很難發(fā)展
搞了一門語言,國內(nèi)用的項(xiàng)目還挺多,是不是我變得高大威猛了,我猜到開頭,但結(jié)局并不是這樣。因?yàn)樾枰ê芏鄷r(shí)間。每天技術(shù)支持+開發(fā) 需要1,2個(gè)小時(shí),周末或者小長假什么的,還得閉關(guān)。這閉關(guān)自古都有講究,不吃飯,去一個(gè)安靜的山洞里?,F(xiàn)在beetl閉關(guān)也類似,吃很少的東西以免犯困, 迫使大腦亢奮。另外清凈地方不好找,還好北京高校多,就去北京交大研究生教學(xué)樓大教室,那里偶爾有些情侶外,少有學(xué)習(xí)者。 總之,技術(shù)開發(fā)beetl,花了很多業(yè)余時(shí)間,導(dǎo)致個(gè)人技術(shù)全面落后,jdk7,8,9 都沒有跟進(jìn),還有hadoop,spark沒有什么概念,很火的手機(jī)移動(dòng)開發(fā)也掌握不精通。有時(shí)候自己想,要是當(dāng)初不寫beetl,現(xiàn)在肯定是高精尖人才了。事實(shí)也確實(shí)這樣,以前一些技術(shù)很普通同事,稍微研究了一下這倆類很火的技術(shù),立刻身價(jià)倍增,成為各大公司槍手的人才,成天給我哀嘆如何拒絕其他公司的offer,好讓人羨慕
再說一下開源中的競(jìng)爭(zhēng)吧,模板語言是個(gè)大眾技術(shù),算不上高大上,所以競(jìng)爭(zhēng)非常激烈。
Freemarker: 這是我的***競(jìng)爭(zhēng)對(duì)手,開源有10多年了,在國內(nèi)外非常流行,尤其是國內(nèi)擁有很多粉絲,每天有數(shù)百個(gè)下載。如果你百度一下Freemaker,能看到數(shù)不清的介紹文章。我很想代替它,因?yàn)榱懔闼樗橛眠^好幾個(gè)項(xiàng)目,總覺得別扭。Beetl的優(yōu)勢(shì)是語法上更容易上手,使用習(xí)俗跟程序員思路接近。還有個(gè)不算優(yōu)勢(shì)的優(yōu)勢(shì)是功能趕得上Freemaker(相對(duì)于其他模板引擎來說 ,哈哈)。
Velocity: apache的,國內(nèi)使用者也很多。Beetl的優(yōu)勢(shì)是屬于腳本語言。因此能優(yōu)雅的處理復(fù)雜的渲染邏輯。最早使用Velocity的時(shí)候,記得它有個(gè)特性就是如果某變量屬性不存在,將在頁面中顯示出來該屬性而不是報(bào)錯(cuò)。當(dāng)時(shí)看到這個(gè)就對(duì)velocity不感冒了,試想一下,如果系統(tǒng)重構(gòu),導(dǎo)致屬性名更改或者不存在,頁面都不會(huì)報(bào)錯(cuò)。這是很不友好的。不知道現(xiàn)在有改進(jìn)沒有
HTTL,JetbrickTemplate,TinyTemplate, 都是國產(chǎn)的類似Veclotiy的模板引擎,改良了很多velocity不足的地方。JT 以前幫助過HTTL開發(fā),后來基于antlr4自己又開發(fā)了一套。TT模仿了JT,也按照自己的理念做了些改進(jìn)。他們作為國內(nèi)的開源模板引擎,同樣是后起之秀,Beetl優(yōu)勢(shì)不大。唯一的優(yōu)勢(shì)就是能持續(xù)開發(fā)和改進(jìn),以及Beetl未來的技術(shù)野心,包括IDE集成支持(語法著色,屬性提示,史無前例的重構(gòu)支持和debug支持)等
Webit,BSL. 同Beetl一樣,類似JS語法,倆位作者都在自己獨(dú)立開發(fā)前給Beetl提了很多建議。后來對(duì)模板引擎的功能和實(shí)現(xiàn)方式有自己的想法,就自己開發(fā)了一個(gè)。我原本認(rèn)為這倆個(gè)都是Beetl未來***的競(jìng)爭(zhēng)對(duì)手,但現(xiàn)在看來不是,因?yàn)锽SL現(xiàn)在不維護(hù)了,我知道其作者能力很強(qiáng),興趣廣泛,現(xiàn)在在做其他的技術(shù)。Webit則是野心很大,想把Webit做成一個(gè)java版本的PHP,因此跟Beetl完全不是一個(gè)東西,也無從競(jìng)爭(zhēng)??偟膩碚f,國內(nèi)模板引擎競(jìng)爭(zhēng)氛圍很好,有好想法會(huì)交流,也不互相拆臺(tái)。
angularjs, 很火的JS框架,還有其他富客戶端框架愛等,他們跟java模板引擎有很多功能重疊。不過我不擔(dān)心未來會(huì)代替模板引擎。主要是因?yàn)閖s語言技術(shù)本身就有缺陷,不適合大規(guī)模程序。其次是用js構(gòu)成的頁面不適合SEO,在如火如荼的電商環(huán)境下,根本不合適,還有一個(gè)問題就是一個(gè)頁面有過多的頁面ajax請(qǐng)求,會(huì)成倍的增加服務(wù)器負(fù)載,這到http2.0流行前,其實(shí)是個(gè)不合理的設(shè)計(jì)(當(dāng)然,對(duì)于企業(yè)應(yīng)用來說,用戶量小,可以這么搞)。
Node.JS:有些架構(gòu)師已經(jīng)把Node.js作為一個(gè)視圖技術(shù),原因是想讓前端工程師專注前端開發(fā),這點(diǎn)與Beetl不某而合,Beetl也是JS語法。也考慮到讓前端工程師專注界面并提供配套的工具和框架來完成這一點(diǎn)(參考我的CrossMVC) .我個(gè)人直覺上認(rèn)為Node.js并不比Beetl更適合做前端渲染,道理很簡單,因?yàn)锽eetl從出生之日就是為了這個(gè)目的,而Node.js不是這樣初衷。另外,還是對(duì)JS說的那句話,JS語言不適合大規(guī)模的程序開發(fā),他的異步編程模型更不適合大規(guī)模程序開發(fā)。Node.JS強(qiáng)大容易導(dǎo)致濫用。也許現(xiàn)在,在讓js前端人員開發(fā)模板到底使用Beetl+CrossMVC,還是采用Node.JS,很難判斷,但時(shí)間會(huì)證明采用Beetl是對(duì)項(xiàng)目一個(gè)正確的選擇。
再討論一下如何推廣開源吧。我認(rèn)識(shí)的開源作者并不是為了錢和名而去做開源。目的很純粹,就是為了興趣。但是如果自己做的開源并沒有使用者,也許就讓開愿者失望了,如何推廣開源呢,我覺得有點(diǎn)心得體會(huì)
***:農(nóng)村包圍城市策略。你的開源也許比別人的先進(jìn),但作為后來者,很難一時(shí)被其他人接受。盡管我們希望有BAT這樣的領(lǐng)頭羊公司使用是***的,但剛開始推廣的時(shí)候不應(yīng)該做次奢望。***從一些小公司,個(gè)人用戶開始做起,然后慢慢推廣到中型公式,大型公司。Beetl最初使用者是個(gè)人用戶,經(jīng)過3年發(fā)展現(xiàn)在已經(jīng)有B,A 領(lǐng)頭羊公司在使用了。
第二:要有噱頭。想讓其他人記住你,必須有噱頭。這點(diǎn)跟炒作明星沒有什么區(qū)別,對(duì)于開源來說。有些現(xiàn)成的噱頭可以使用,比如,體積最小的開源模板引擎,我見過一個(gè)開源模板引擎僅僅200行,盡管我不屑于此,但確實(shí)給我留下了深刻映像。 再比如,性能***的模板引擎,這個(gè)在當(dāng)今軟件行業(yè)似乎是更好的噱頭,Beetl期初并不太在意性能,但后期發(fā)現(xiàn)此噱頭確實(shí)是開發(fā)者喜歡的一個(gè)因素。因此在1.x后期,2.0版本做了很多性能改進(jìn),現(xiàn)在EBM測(cè)試 是Freemarker性能4倍多。很多最初的開發(fā)多是因?yàn)檫@個(gè)原因選擇試用beetl
第三: 要有完善的售后支持。重視任何使用者,視他們?yōu)榭蛻?。如果他們認(rèn)為文檔不夠詳細(xì),應(yīng)該嘗試去完善文檔,如果他們認(rèn)為缺少例子,那就應(yīng)該提供更多的例子。如果他們認(rèn)為Freemaker有的功能,Beetl也應(yīng)該具有,那就去完成。老實(shí)講,Beetl初期功能都是自己設(shè)計(jì)完成的的,但是到了后期,很多特性都是使用者推動(dòng)的,他們不僅僅是Beetl客戶,而且也是Beetl實(shí)際的推動(dòng)者。
第四:擁有一顆淡定的心,在推廣過程中,會(huì)遭遇各種質(zhì)疑和拒絕,甚至是打擊。我一直宣稱要代替Freemaker,從而遭受到很多Freemaker粉絲的打擊。我自己公司的項(xiàng)目,F(xiàn)reemarker已經(jīng)有過技術(shù)生態(tài)圈,我也難以說服其他人使用Beetl,自己不得不一邊惡心,一邊用Freemarker繼續(xù)完成自己的工作。
***,我想說說開源Beetl這幾年得失吧。
如前面說的,開源Beetl,這是公司外的一個(gè)項(xiàng)目,花去了我業(yè)余很多時(shí)間,有時(shí)候上班也不得不去做一些支持,和Bug的修補(bǔ)。這在HP,還說的過去,但去了有態(tài)度公司后,就極大的影響了我工作,我從一個(gè)干事麻利的人,變成工作上一個(gè)“磨嘰”的程序員。我自己也很難接受我這樣狀態(tài)就很快辭職了。后來的創(chuàng)業(yè)我也受到這樣影響,因此,從事業(yè)上來說,做Beetl并沒有得到任何利益。我有時(shí)候想,如果用這些時(shí)間干任何一件其他事情,都或許比這個(gè)更值得。Beetl只是我現(xiàn)在一個(gè)不得不繼續(xù)做的事情。我想,這也是很多同樣中國的開源作者的想法吧
然而,Beetl的開發(fā)開始實(shí)現(xiàn)了我的初衷,代替難用的Freemaker,同時(shí)熟悉一門我不熟悉的技術(shù)(語言開發(fā))。還有就是,通過Beetl開源,認(rèn)識(shí)了很多朋友。每天跟這些朋友聊天,打逗逗,很有意思,又長了見識(shí)。有時(shí)候一些人會(huì)寫信給我,說Beetl幫助他順利完成了項(xiàng)目開發(fā),或者幫助他找到了工作的時(shí)候,每當(dāng)想到這些我認(rèn)為開發(fā)Beetl是一個(gè)正確的決定和一件值得堅(jiān)持的事情。
原文鏈接:http://my.oschina.net/u/567839/blog/306637
本文名稱:Beetl作者談開源過程中那些事
本文網(wǎng)址:http://m.fisionsoft.com.cn/article/dhgsgeg.html


咨詢
建站咨詢
