zTree 作者张其纲访谈实录
【软件简介】
是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件
【访谈实录】
1. 能否先介绍一下你自己,包括学习经历和工作经历?
我大学是自动化专业的,我们专业当时教了一些的计算机相关的课程。我比较喜欢编程,所以毕业以后就开始从事 IT 开发的工作。以前都是在小公司,现在在一家外企已经呆了四年了。
2. 你现在的工作是 JS 相关的吗?
我一开始是做的 ASP,后来转到 Java。基本上前后台都做。我所在的公司开发的都是 Web 项目,所以我 Java 和 JS 都做。
3. 是什么原因促使你开发zTree这样一个jQuery插件呢?
算一个偶然的机会吧,当时公司没有什么项目,组织团队自己学技术。我正好也想做点事,但是没想好要做什么,这一次正好学了jQuery,我觉得它非常好用,很灵活,而且能很好的解决浏览器的兼容性问题。当时是为了练习jQuery,就选择制作了一棵树。以前用过一个叫做 DHTML 的库来生成树,但是我觉得不是很方便,于是就想自己做一个。做完以后觉得,既然jQuery是开源的,那么我也就借这个机会做一个开源的项目吧。于是尝试性的发布出去,后来发现真的会有人用这个东西,慢慢的就有一些反馈意见,我也希望并且也相信能把它做好,就这样坚持下来了。
4. 你是什么时候开始做这个项目的?
2010年4月份,两年多了,主要是利用业余时间一边制作一边学习,一点点积累下来的。
5. 为什么要取名zTree呢?
因为我姓张,也希望产品的名字尽可能简单,便于记忆。
6. jQuery现在很流行,市面上也有很多类似的项目,那么你认为zTree的优势和特点是什么呢?
我觉得到目前为止zTree受欢迎,或者传播快的原因是zTree是一个完全中文版的插件,所有的帮助,所有的页面全部都是中文版的。zTree面向的群体大部分还是中级或者初级的编程人员。他们整体上英文不是很好,所以有一个中文版说明的控件他们用起来就很顺手,这是一个很重要的原因。还有可能就是我利用空余时间尽量保证及时对用户的问题进行解答。我一直在用心的做这个项目,尽最大努力把细节做好,例如:性能优化,功能灵活扩展,易操作性等等,坚持不断完善。这也在一定程度上给大家看到了希望,知道zTree是在不断更新的,这样就会对这个软件有信心,也就愿意一直用下去。
7. 那你认为这个项目中有没有一些特殊的或者创新的技术?
从创新的角度讲,zTree并不能说有什么真正创新的东西。更多的是我自身在做zTree的过程中,对 JS 的掌握更为深入,对我自己的提高会比较高一些。zTree真正的开始被传播也是从2.6开始,我也是在从那个版本对性能进行了优化,利用一些现在流行的技术,例如延迟加载,CSS Sprite等等。以前很多 JS 的 tree 在加载大数据量节点的时候,性能会比较差。zTree在这方面有很大的提升。从zTree的程序结构上来说,zTree的特点就是我在做这个项目的时候,并没有受到目前流行的小的jQuery插件编程方式的影响——现在很多简单的插件都是把事件直接绑定到 DOM 或者jQuery对象上,所有的方法或接口都是直接针对这些DOM 或jQuery对象的。zTree主要是以节点的数据为中心,整体思想是任何的回调或者操作的方法都是以节点数据为中心。这样你只要找到了数据,就找到了节点的全部内容。
8. zTree目前是怎么推广的?
我个人感觉在没有钱投广告,项目又没有知名度的情况下,只能去论坛上答疑,在给别人解答问题的时候适当的去发布相关的内容。这个时候很困难,因为你一不留意就会被版主认为你是在做广告,被封杀账号。后来有朋友推荐开源中国,我就在开源中国上发布这个软件的信息。发布以后就发现用户数量有了一个质的提升,得到的反馈也增多了,从而也促使我对zTree进行了进一步的改进,慢慢的用户培养起来了,后来开始在ITEye和百度贴吧上去发布相关的发布信息。
9. 那你知道zTree在实际产品中的应用情况如何?
大家在项目中应用后给我的反馈确实不多,我也没有去主动获取。有朋友来提问题的时候,通过发信人的Email地址和个人信息,我可以确定现在已经有不少单位在做项目时首先使用zTree,或者是将原先项目中使用的其他树插件换为zTree。我印象比较深的比如移动研究院,还有我网站上链接的几个。,目前zTree主要适宜做树型菜单和权限管理方面的功能。
10. 目前参与开发和维护zTree的人员有哪些呢?
这个就我一个人,包括代码,网站,Demo制作等等。其他人主要是用户在使用中给我提一些建议或报告bug。
11. 在这个项目上,平均下来你一个月要花多少的时间和精力呢?
这个也是一阵阵的。如果工作不是很忙的话呢,我也会在上班的时候做一点自己的事情。如果上班比较忙的话呢,就只能晚上回家做。差不多每天1-2个小时吧。现在周末花的时间反而比较少,因为要陪家人,主要是利用周一到周五的时间。有相当一部分时间是给大家做解答的。
12. 也就是说你很多的时间是花在培训上面?
是的,现在更多的时间是花在这个上面。也算是一种推广方式吧。
13. 你有通过zTree获得收入吗?
两种途径:一种是网站上挂了 Google 广告;另一种就是爱好者给我的捐款。
14. 你认为这个项目和你的全职工作有冲突吗?
没有,我觉得实际上对全职工作有帮助。我做这个项目会让我对技术了解的更深入,这样在处理工作上的问题的时候会更加得心应手。
15. 这个项目在你的工作中有所应用吗?
公司有自己的 JS 库。而且我现在公司开发的东西并不会用到 tree,但是我有同事已经用到了。另外还有个同事跳槽到了新公司的时候,突然发现新公司在用zTree。
16. 你对zTree将来的发展方向有所规划吗?
我个人希望是能够让更多外国的朋友来使用。如果能让jQuery收录成为官方的库就更好了。因为现在zTree本身也是插件的架构,所以我可能会为zTree做一些插件,让zTree拥有更多更灵活的功能。从长远来讲,会争取让zTree在显示、控制、应用方面更加灵活,能适应更多的需求。既然做了,就争取让它成为最好的。
17. 现在移动互联网、HTML5很流行,jQuery也出了一个jQuery Mobile,你有没有考虑过做一个zTree的移动版本呢?
最开始做的时候确实没有考虑到这些。原来我是认为一棵树那么大,手机屏幕又那么小,应该不会有人使用。但是现在手机屏幕越来越大,再加上平板设备的增多,所以我认为在一定程度上是有需求的。所以我以后会针对移动设备做一些新的开发或者调整。
18. 我觉得这是一个大的趋势。但是移动设备是用手指,不是鼠标,所以整个 UI 的呈现方式可能是完全不一样的。
确实,在移动设备上的操作,跟鼠标肯定是不一样的。
19. 下面来聊聊开源的话题吧。能否谈一下你对开源的理解?
一开始算是稀里糊涂的做了开源,在做的过程中我能感觉到开源的力量是逐渐壮大的。相对于收费的产品来说,开源的产品更容易被用户接受。有用户用了以后就会给我更多的压力去提升自己的技能,提升软件的性能、功能,让更多的用户去使用。同时,我一个人肯定不能覆盖所有的需求,但因为我的代码是开源的,所以我会得到很多的反馈,这样我就可以在反馈的信息中提炼出一些信息,这样我就可以一直走在别人的前面。如果是收费的话,尤其是这种小小的产品,首先你会丧失掉一部分用户,或者用户购买后提一些你无法实现的需求,这并不利于自身的成长。
20. 但是不开源可以赚钱。
做一棵树并不复杂,并且已经存在很多免费的树,如果zTree一开始就收费,那肯定做不起来。很多项目本身就是小工具,挣不了太多的钱。而且你收费的话,别人完全可以自己去做一个,这样你也少了一个自我提升的机会,并且最终也挣不到什么钱的。换句话说,如果你一开始就抱着赚钱的目的来做开源项目,我觉得会很难。
21. 你应该也发现国内的很多项目都是单打独斗的,而国外的话就很多人参与,你是怎么看这个现象?
国内的开源氛围其实已经在起步,有些朋友用的好会主动来捐款,这在国内来说已经算是很大的提高了。我当时把zTree翻译成英语版的时候,也有1、2个朋友主动要求帮我一起翻译的,虽然后来说到细节的时候就没有消息了,但也算有这方面的苗头了。国内的整体氛围还是比较复杂,很大一部分不是静下心来把自己的技术提升,而是赶着项目上线。所以很多人在论坛上问问题都是直接要代码的形式。
22. 的确,国内很多的项目都是一直是发起人在维护,很多人都是愿意用,但是不愿意贡献。
这里也有一个培养的问题,有些团队一开始就关系比较密切了,那就比较容易发展起来。当然很多小东西高手一看不过如此,他也能写出来的,但最终他不会去专门制作开源项目的。毕竟现在做开源尤其是小的开源产品想依靠这个来赚钱是很困难的。
23. 你有没有给 JavaScript 初学者一些建议?
我最近也在把自己的经验写出来,发表出来(主要是iteye上,但以后会在iteye、开源中国和百度贴吧一起发表的)。我觉得求知欲很重要,只是为了挣钱做事情永远也提高不了。另外一方面就是要坚持。做zTree的过程中坚持的力量很大,如果不是我坚持的话肯定也不会有现在这么多用户。
24. 你在中途有过放弃的念头吗?
这倒确实没有。自从zTree一开始发布我就坚信我要坚持下来。而且随着用户的反馈越来越多,我更加坚定了这个想法。周围也有一些朋友看不上 JS,也会跟我说这东西也就那么回事,做做玩玩就行了,别做了。但是我觉得还是要坚持下去——既然做了,就让它做到最好!
25. 最后一个问题,能否给开源中国提一些意见和建议?
我觉得开源中国挺好的,有着不错的群体氛围。希望开源中国能更好地推广,吸引更多的用户。