当前位置: 首页 > 科技观察

Beetl的作者说说开源过程中的那些事

时间:2023-03-12 06:37:24 科技观察

我是Beetl的开源作者,我叫李佳芝,网名Xian.Dafu。很多人可能对这个名字比较熟悉。本来希望自己有钱自由,结果适得其反,尤其是Beetl被很多人用了以后,又忙又穷。也许我应该把名字改成Poor.Busy:)无论你做什么,都需要贵人的帮助,开源也是如此。我认识了两个贵人,一个是HP,我在移动总部做几个项目。客户和惠普老板安排的很合理,很细心,让我有很多空闲时间,10点到客户,6点下班回家。期间也玩各种游戏,一点都不忙。但是秋天的一天,我意识到我不能再这样下去了。我必须为自己存点东西。闲下来就想学技术,选了一个看似高尚的技术——开发一门语言,就是现在你们知道的Beetl模板语言。我其实很后悔这个决定。那个时候应该搞过NOSQL,分布式什么的(后来花了一周时间开发了一个分布式协同门面技术,确实带来了一些收益,这是后话),或者开源商城之类的都可以用来卖钱,因为搞语言真的不是很吃香——虽然挺难的。另一个贵人是beetl的初始用户。我做完0.5版本后就一直搁置,没人用。我不想宣传它。有一天,一个哥们给我发了邮件,说beetl很好用,想用一下。一度。我顿时兴奋起来,这激发了我进一步开发和改进的热情。虽然离开了惠普,去了一家有态度的公司技术部门,但还是废寝忘食地改进Beetl。这哥们后来都是用Beetl做项目的。我也很感谢他。如果他不是第一个使用它的人,Beetl将很难开发出一种语言。在中国有相当多的项目在使用。是因为我变得高大威猛了吗?我猜到了开头,但结局不是。不是这样的。因为这需要很多时间。每天需要1、2个小时的技术支持+开发,周末或者小长假还要闭关。这种闭关自古就有讲究,不吃东西,去一个幽静的山洞。现在的甲壳虫撤退也差不多,吃得很少,以免困倦,迫使大脑过度活跃。此外,很难找到干净的地方。好在北京的高校多,就去了北京交通大学研究生教学楼的大教室。那里偶尔有情侣,学习者很少。总之,我在beetl的技术开发上花费了大量业余时间,导致个人技术全面滞后。jdk7、8、9没有跟进,也没有hadoop和spark的概念,手机开发不精通,很吃香。有时候我自己想,如果当初我不写beetl,我现在一定是个高层次人才了。确实如此。以前,一些技术一般的同事研究了这两种非常热门的技术,立马身价翻倍,成为各大公司的人才。他们整天跟我感叹怎么拒绝其他公司的offer。Envy让我谈谈开源领域的竞争。模板语言是一个大众化的技术,算不上高端,所以竞争非常激烈。Freemarker:这是我最好的竞争对手。已开源10余年,在国内外广受欢迎。尤其是在中国,它拥有众多的粉丝,每天都有数百次的下载量。如果你谷歌Freemaker,你可以看到无数的介绍文章。很想换掉,因为零碎的用了好几个项目,总觉得别扭。Beetl的优点是在语法上更容易使用,使用习惯接近程序员。还有一个不算优势的优势就是功能可以赶上Freemaker(对比其他模板引擎,哈哈)。Velocity:apache,国内有很多用户。Beetl的优势在于它是一种脚本语言。因此,可以优雅地处理复杂的渲染逻辑。刚开始用Velocity的时候,记得它有一个特性,如果一个变量属性不存在,就会显示在页面上,而不是报错。当时看到这个的时候,我对速度不感兴趣。试想一下,如果系统重构了,属性名发生变化或者不存在,页面是不会报错的。这是非常不友好的。不知道现在有没有改善。HTTP、JetbrickTemplate、TinyTemplate都是类似Veclotiy的国产模板引擎,改进了很多速度不足的地方。JT之前帮助开发了HTTP,后来基于antlr4开发了一套。TT模仿JT,根据自己的理念做了一些改进。作为国产开源模板引擎,也是后起之秀,Beetl优势不大。唯一的优势就是不断的发展和完善,以及Beetl未来的技术野心,包括IDE集成支持(语法着色、属性提示、前所未有的重构支持和调试支持)等。Webit、BSL。和Beetl一样,类似于JS语法,两位作者在独立开发之前都给了Beetl很多建议。后来对模板引擎的功能和实现有了自己的想法,于是自己开发了一个。本来以为这两个是Beetl以后最好的竞争对手,现在看来不是,因为BSL已经不维护了。我知道它的作者很有能力,兴趣广泛,现在正在研究其他技术。Webit的野心很大,要把Webit做成java版的PHP,所以和Beetl完全不一样,没办法竞争。总的来说,国内模板引擎的竞争氛围很好,有好的想法会互相交流,不会互相拆台。angularjs,一个非常流行的JS框架,以及其他富客户端框架等,与java模板引擎有很多重叠的功能。不过,我并不担心将来会更换模板引擎。主要原因是js语言技术本身存在缺陷,不适合大型程序。其次,js组成的页面不适合SEO。在如火如荼的电商环境下,根本就不适合。还有一个问题就是一个页??面有太多的页面ajax请求,会成倍增加服务器的负载。这是到http2。0在流行之前,其实是一个不合理的设计(当然对于企业应用来说,用户量少,可以做)。Node.JS:一些架构师采用Node.js作为视图技术,是因为他们希望前端工程师专注于前端开发。这和Beetl是一致的,也是JS语法。还要考虑让前端工程师专注于界面,并提供配套的工具和框架来完成这个(参考我的CrossMVC)。我个人认为Node.js并不比Beetl更适合做前端渲染。原因很简单,因为Beetl从DayofBirth开始就是为了这个目的,而Node.js并不是初衷。另外,我对JS说过,JS语言不适合大型程序开发,它的异步编程模型更不适合大型程序开发。Node.JS功能强大且容易被滥用。或许现在,很难判断js前端人员开发模板是使用Beetl+CrossMVC还是Node.JS,但时间会证明采用Beetl是项目的正确选择。让我们来讨论一下如何推广开源。我认识的开源作者做开源不是为了金钱和名誉。目的很纯粹,只是为了兴趣。但是,如果你做的开源没有用户,你可能会让志愿者失望。如何推广开源?你的开源可能比别人先进,但是作为后来者,一时之间很难被别人接受。虽然我们希望最好有BAT这样的龙头企业使用,但在刚开始推广的时候不应该是奢望。***从一些小公司和个人用户开始,慢慢推广到中型配方和大公司。Beetl的初始用户是个人用户。经过3年的发展,现在B、A龙头企业都在使用。第二:要有噱头。想要别人记住你,必须要有噱头。这无异于炒作明星,为了开源。可以使用一些现成的噱头,比如最小的开源模板引擎,我见过一个只有200行的开源模板引擎,虽然不屑一顾,但确实给我留下了深刻的印象。另一个例子是性能最好的模板引擎。这在当今的软件行业似乎是一个更好的噱头。Beetl一开始并不太在意性能,后来发现这个噱头确实是开发者喜欢的一个因素。所以在1.x后期,2.0版本做了很多性能提升,现在EBM测试性能是Freemarker的4倍多。出于这个原因,许多初始开发人员选择试用beetl。第三:要有完善的售后支持。重视任何用户作为客户。如果他们认为文档不够详细,他们应该尝试改进文档,如果他们认为它缺少示例,那么他们应该提供更多示例。如果他们认为Beetl应该拥有Freemaker拥有的东西,那就去做吧。老实说,Beetl最开始的功能都是自己设计的,但后期很多功能都是用户驱动的。他们不仅是Beetl的客户,更是Beetl的实际推广者。第四:有一颗平静的心。在晋升过程中,你会遇到各种质疑、拒绝,甚至打击。我一直在宣布我要取代Freemaker,而且我受到了Freemaker粉丝的强烈抨击。我自己公司的项目,Freemarker已经有了技术生态,我很难说服别人用Beetl。我不得不一边恶心一边继续用Freemarker完成我的工作。***,我想说说开源Beetl这几年的得失。前面说了,开源的Beetl,这是一个公司外部的项目,占用了我很多业余时间,有时候上班的时候还要做一些支持和bug修复。在惠普还是这样,但是到了Attitude公司之后,对我的工作影响很大。我在工作中从一个敏捷的人变成了一个“磨”的程序员。我也很难接受在这样的状态下我很快就要辞职了。后来创业的时候我也受了这个影响,所以从职业的角度来说,做甲壳虫并没有给我带来什么好处。有时我想,如果我能把时间花在其他事情上,也许会比这更值得。Beetl只是我现在必须继续做的事情。我想这也是国内很多开源作者的想法。不过Beetl的开发已经开始实现我的初衷了,取代了难用的Freemaker,同时熟悉了一门自己并不熟悉的技术(语言开发)。另外,通过Beetl开源,认识了很多朋友。每天和这些朋友聊天很有趣,也很有收获。有时候会有人写信给我,说是Beetl帮他顺利完成项目开发,或者帮他找工作。每当想到这些,我就觉得开发Beetl是一个正确的决定,是一件值得坚持的事情。原文链接:http://my.oschina.net/u/567839/blog/306637