炼就优秀的JavaScript模块:打造模块社区

日期: 2012-09-06 作者:田永强 来源:TechTarget中国 英文

  之前我们讲过如何炼优秀的JavaScript模块,正如话说酒香也怕巷子深,JavaScript模块炼就完成也要积极到社区中宣传。

  模块的社区打造

  话说酒香也怕巷子深。在满足成为优秀模块的基本素质要求后的首要事情是如何将模块推向开源社区,积极到社区中宣传。

  放到Github开源:不仅仅是代码

  每一个程序员都应该有属于自己的Github帐号。如果你没有,不是Github的遗憾,而是你的遗憾。关于Github有什么,可以参看这篇文章:如何高效利用GitHub (http://www.yangzhiping.com/tech/github.html)。 排除掉文化上带来的好处。Github可以帮我们托管代码,帮我们解决版本控制的问题。它可以提供一个wiki,帮我们存放文档。它提供Issues页面,使得别人可以为模块提出意见和反馈。提供Pull Requests页面,使得别人可以帮我们修改代码后,供我们合并修改。

  交流平台的创建

  交流平台主要用于讨论、答疑,使得模块作者和用户之间可以产生思维的碰撞。交流过程可以不断完善模块自身的不足,形成文档。主要的形式有如下:

  邮件列表

  国外的社区大多采用Google Groups的邮件列表来交流。邮件列表可以将讨论发送到每一个关注它的人手中。

  实时交流

  国外多采用IRC频道来进行此事。国内的情况,可以选择合适的QQ群来进行交流。

  留言版

  留言版的功能Github的issue具备了该功能。但是如果具备单独的介绍页面或者站点,集成Disqus来收集用户的反馈会是个不错的选择,因为这更符合普通用户的习惯。

  版本控制

  这里的版本控制不是git的版本控制。而是模块的整体版本。标注好模块的版本是分场重要的,如果用户需要升级模块,它能够得到明确的指导。前端模块中通常是在文件名上,或者文件内部写明版本。对于Node而言,写在package.json文件中。

  最好能够在大版本的发布时,通过正式的新闻页面,或是邮件列表发出新闻通知,以显得版本发布的正式。

  悠扬的历史:Change Log

  不要小看Change log的作用,长长的,细碎的Change log可以给用户该模块历史悠扬的感觉,也能让用户体会到写作该模块的过程细节。每次迭代发布的过程中,展现给用户看当前的change log也能让用户知道改动的影响范围。如果碰巧发布了一个用户需要的方法,他会有收到礼物的感觉。

  选择合适的License

  国内的环境中,也许大家不太关心License的问题。事实上,License的选择,会影响到用户的评估。目前只有BSD和MIT两种License可以让人放心使用。对于商业公司而言,如果不是这两种License,他们需要投入更多的精力和时间周期来评估这个模块是否可用。

  但是对于JavaScript社区而言,通常采用的是MIT,所以也基本没有问题。选好License,并在明显且不重要的位置表明该模块在什么License下发行。

  发布到NPM中

  在Node中,搞定代码后,发布到NPM中是最应该做的事。

  易于获得的感觉

  npm install module或是一个显眼又不失素雅的Download按钮会在潜意识中让用户觉得易于获得,容易集成到现有系统中。不要做了各种分享介绍之后,让用户找不到获取模块的地方。

  持续集成

  一个随时都能拿出钥匙,开出跑车的青年,必将被认为是高富帅。支支吾吾不能随时给出结果的人,基本是屌丝无疑。

  推荐注册你的项目到travis-ci,并运行它。绿色的Passing时刻昭示该项目的可靠指数、稳定指数较高。这个小图标也能帮助你检测迭代是否出现问题。

  漂亮的站点

  注册一个模块名字的org域名,一套简洁明了的UI,清晰的导航,简单的demo等等。细节在前后的实践中都有提及。

  标致的Logo

  如果你没有任何视觉设计的天赋,厚着脸皮找你的视觉设计师同事要一枚吧,尽管它是一个锦上添花的事情,但是Logo在品牌认知上的功劳是不用质疑的。

  线下分享交流

  开发完模块后,一定记得分享给团队的同事,他们应该是模块的首批用户,他们给予的反馈也是最宝贵的。

  另外,还可以在线下社区分享,将你的模块的推广范围从身边延续到这个城市。尽管在线下社区分享模块的机会不多,但是一旦有,不要忘记介绍自己得意的模块给他人。

  分享带来的收益是明显的,有利于自己梳理对模块的认识,也能收到用户的直观反馈。

  及时响应反馈

  也许你的模块已经很久没有更新,但是用户还是会发来反馈或提出问题,甚至提交pull request,请及时响应需求。如果是提出问题,说明你的文档还不够完善。如果是提出需求,则说明你最初设定的目标还没有完成。

  善意营销:赏金猎人

  如果有用户指出你的低级bug,或是帮你写作了模块的体验文章,这些事情都是值得模块作者有所表示的时候,因为这些用户是你的忠实用户,他们在帮你的模块成长。有所表示并不意味着要给多少钱,一些有意义的奖品或纪念品更适合拉近这些用户与你之间的距离。

  与兄弟社区的互动

  一个社区如果过小,需要到隔壁的社区中发布一些信息让大家知晓。如果可以,无论国内还是国外的的兄弟社区的协助推广,将会对社区运作有很大的帮助。友情链接是一个典型的方式。

  模块开发者的自我修炼

  模块自身的优秀加上社区的打造可以保证模块拥有不错质量和口碑。但是决定模块能否走得远,模块开发者的自身素质也十分重要,这其实模块的另一个软素质。经历了开发阶段和社区运作阶段后,越发展到后期,开发者的自身修炼的影响越会凸显。

  忍得住寂寞&持续坚持

  典型的例子是老赵对于Wind.js的坚持。在对Wind.js的开发和推广上,可谓是寂寞的。略呈偏门的异步同步化、eval、编译等工序,被误解和排斥的多次。这是需要忍受的,如果没有持续坚持和忍住寂寞,模块就没有明天。作者的热情一旦消散,用户的热情也必然消散。

  简单专注

  前文的愿景部分提及到了简单专注。简单专注,不仅仅是在项目初期保持,在长久发展中,也应当如此,只有简单专注方能保证小教堂的服务质量是最顶尖的。

  奉献精神

  模块开发和推广事实上是没有直接的经济收入的,而且还会耗费大量的时间和精力。但是开源事业的收益,实际上是无法用金钱进行衡量的。并且这个过程也是自愿自发的,没有人会主动来推动你。

  如果确实对经济造成影响,可以在页面上加上donate的链接。优秀的模块不会让这个donate链接的功能白费的。

  幸运的是开源社区中不会缺乏具有奉献精神的人,是他们在推动社区和技术发展。

  演讲能力

  前文提到线下分享,这对于开发者的演讲能力有更多的要求。演讲能力的高低,是在另一个层面上提升模块的表现力,尽管这种能力不需要运行在CPU中。

  文笔

  模块开发者的文笔在文档的影响上是能够直观反映的。除此之外在社区推广中,文案的品质也有一定的影响。如果开发者文笔能够好到用优美的文章去传递模块的思想,这是令人愉悦和容易接受的。

  人格魅力

  模块的开发者应当具备良好的人格魅力,这包括人际关系、交流能力等。一个具备人格魅力和一个并不为人所知需要进一步了解的开发者,他们展现在大家面前的收效是并不相同的。后者更容易吸引他人,为模块带来更多的用户,这些人是你的用户,也是你的合作者。他们的涌入,会帮助改进模块。 关于人格魅力这个软素质,这里不再多说,相信都了解他的重要性的。

  总结

  通过对最佳实践的罗列,我自己相当于重温了一遍JavaScript开源的一系列文化。而这些最佳实践部分其实都是必要条件,通过这些最佳实践,未必保证会有优秀的JavaScript模块产出。但是观察如今的那些优秀模块,他们基本上都具备这些特征。最后,JavaScript社区虽然活跃,佼佼者不在少数,但是整体水平的提升,还需时日,希望此文能够帮助到一些开发者并欢迎讨论。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐