本文摘自于githuber发布的GitHub 中国开发者年度报告,如果你对报告有兴趣,也可以看看。
G:介绍一下你自己吧。
李成银:我叫李成银,工作7年了吧。以前在百度待过,现在在360,以后嘛还不知道。以前是做后端的,现在主要在做前端以及nodejs这边的一些东西。我自己想做并且一直在做的是一些工程化、工具化、流程化方面的东西,希望可以提升团队的开发效率。
G:为什么要开发ThinkJs?
李成银:使用express的时候感觉框架功能有限,无法快速实现特定的业务需求,此外,nodejs自身的异步写法并不好写也不好用,再加上之前用过thinkphp,于是就想开发一个使用Promise的类似的nodejs框架。
G:ThinkJS是如何发展起来的呢?
李成银:最初是作为兴趣来做,并不是一开始就准备当做一个项目来写。到14年4月份的时候发现这个项目在公司内外都有很多人在用,大家也确实有这样的需求,于是就继续做下去,并明确了当做部门的正式项目来做。14年9月22号1.0正式发布,标志着ThinkJS成为一个正式的开发项目。1.0之前主要是实现了我个人的一些想法,但是之后作为部门的正式项目,部门会有更多时间和人力的投入,也会考虑merge一些PR。
G:ThinkJS为什么决定采用开源的形式来做呢?
李成银:实际上现在不涉及公司机密的东西公司都是鼓励开源的。对于前端来说,本来代码就是藏不住的,既然藏不住何不把它开源出去,用更好的心态来拥抱它。这其实也是GitHub上前端项目最多的原因。虽然thinkjs是一个后端框架,但是因为我们有这样一种心态,所以一开始做的时候就很自然的决定要开源。
G:开源给ThinkJS带来了什么呢?
李成银:开源可以带来更多的用户,从而可以发现更多我们内部使用无法发现的问题和需求,让项目可以发展的更好。此外,开源项目对团队和维护者本身有很大的提升作用。开源项目除了技术还有很多东西要做,比如写文档、和用户交流等等,这些事情实际上会锻炼很多重要的能力,长远来看对于开发者个人的发展有很大好处,之后做更大的事情时就会发挥出效果。
我也很不喜欢写文档,写完文档代码变了就必须更新。但是实际上很多用户都是只看文档不看代码的,因此你的文档质量直接影响到项目的上手难度和使用效果。
G:ThinkJS有没有受到公司方面的帮助呢,比如推广?
李成银:thinkjs实际上是以部门的形式开源,并不是以公司的形式开源。这样做的好处是更加自由一些,而且和公司的关系并不是特别紧密,这对于项目本身的发展是一件好事,因为如果项目和公司关系非常紧密的话,一旦项目的负责人离职,项目就很可能无法继续发展。虽然这样做可能会减少一些公司方面的支持,但是长远来看对项目的发展更有利,主要的支持来自社区。
G:ThinkJS是如何从一个个人项目转变成部门的正式项目呢?
李成银:主要有两方面原因,一方面是当时已经有一些人在用ThinkJS,我们看到了这个项目的实际效果,再加上nodejs越来越热,我们觉得这个项目未来有很好的发展前景,因此就变成了部门的正式项目。这其实是一个很自然的过程,从个人兴趣出发的项目如果在实际使用中得到大家的认可并且有很大潜力的话,就很可能会被部门认可。
相对来说,产品型的项目更容易得到认可,因为产品类型的项目更容易看到效果,技术类型的项目有时候很难统计使用情况,有些公司并不会公开他们使用的技术。不过总体来说,只要一个项目能体现出它自己的价值,就很容易变成部门的项目。
G:你觉得国内的开源现状如何呢?
李成银:目前国内的开源项目基本上都是团队内部在开发,即使是非常成功的项目PR也非常非常少,所以目前来说国内的开源环境仍然不够活跃不够开放。一个项目出来会被很多人骂,不过关键就是别人骂了我们我们还不知道,也就无法改进。我们觉得骂本身不是坏事,说明用户还是需要你的项目的,只是项目不够好而已。但是关键是骂也要去Issue里骂,这样我们才能看到。总体来说国内的开源环境已经比之前要好了,Issue多起来了,PR也有一些,不过目前来说还不够成熟,不能像国外的项目一样能够通过PR完成很多功能。
其实也不能怪大家,国内和国外的工作情况就不一样。国外大家把编程当兴趣来做,工作也没有国内这么忙,所以有更多的时间和兴趣投入开源项目中。国内经常加班,压力很大,大家对于开源的热情就不高,更多的是把开源项目当做一个宝库,遇到问题的时候去找现成的解决办法,而不是参与其中。
此外,大家更喜欢用国外开源项目还有一个原因,就是国外的项目更加稳定,不太容易出现项目无人维护的情况。国内的开源项目有时候开发者会放弃并停止更新,这样依赖这些项目构建的项目就会很难处理,而国外的开源项目即使维护者停止更新,他也会找到其他人继续维护,比如前段时间的express,这就让用户很有安全感。
扫码关注w3ctech微信公众号
共收到0条回复