开源项目管理的成功秘诀

jopen 9年前

这篇文章是微软 web 开发系列的一部分。感谢支持我们的伙伴们,是你们让它成为了可能。

今天我想要从我的帖子中改变一些事情:不是去代替技术布道的话题,而是希望分享如何运行一个开源项目。

两年多来,我的朋友 David Rousset 和我领导了Babylon.js项目。我们开始这个项目是在听说IE11将支持 WebGL(Microsoft Edge会支持更多)之后,我们想让人们更容易地构建 3d 场景和游戏。之后的两年,我几乎花费了我所有的业余时间去构建 Babylon.js,让我成为一个简单而强大的 Web 3d 引擎开发人员。


奇妙之旅的开始

在最初的 2 个月里,它如同梦一般:你开发着,并赋予你所有的想法以生命。它是纯粹的幸福。

这一阶段我称为预赛。就像在恋爱中一样,这是最好的时期,在把它带入可能出现困难的严重境地之前。

发布是重要的。讲真的。我仍然看到许多项目在开发的阶段停滞多年。我知道这很艰难,但发布你的项目很有必要。

在某个时间点,你已准备妥当,或者你自认如此。

我和戴维很快就遇到了第一个挑战:编码这个产品是不够的,你还需要在沟通上下功夫。我们编写并商定了希望发布的关于 Babylon.js 的文章,想要发表的论坛,为了展示它而希望参与的事情,等等。

来自网络开发社区的反馈是强烈的。其中一个原因是,我们与一个天才的设计师(Michel Rousseau)共事。他不止帮助我们发布了一个框架,还开发了巨量的三维场景来展示人们可以用我们的工具实现些什么。

这是第一个要诀:开发一个框架只是工作的一半。让人们知道这个框架存在,以及为何他们应该关注它是另一半 - 更为重要的一半。

这是第二个要诀:有一个伟大的框架是不够的。你必须提供许多例子,并专注于拥有某些非常牛逼的例子,让开发者印象深刻,以期深入了解。

小狗综合征

  我第一次听说这个概念是在 2012 年 dotjs 会议,源于 @fat

当你是世界上最快乐的开发者的时候,有一件奇怪的事必然会发生。它开始很是微妙,但很快就会变得更加繁琐。用户反馈将成为压倒一切的要求:

  • 一些用户开始行为怪异,要求越来越多的功能,你需要坚定或说明原因,为什么你不支持或不打算支持这些功能。永远记住,更多的功能意味着更多的工作,也意味着使用者有更多的选择。一个用户眼中的伟大创意会被其他人视为负担与烦恼。

  • 人们请求你修复他们的代码,从而独占你的时间(并阻止你完成项目上必要的工作)

  • 其他人会要求你完全改变框架来解决他们的需求,无视你的愿景和你想借以实现的。

这是小狗综合症!这是你可爱的、每天用爱和奉献亲抚的小狗,变异成你几乎无法控制的怪物。

开源项目管理的成功秘诀

这是你工作中最复杂的部分。你必须坚持你的愿景,但你也必须要迁就,来迎合用户的需求。这时候运用你的常识!

这个阶段会花很长时间,你需要沟通良好,在用户群中寻求盟友。由这些盟友,你可以形成一个社区,带你进入下一阶段。

社区的发展

你可以拥有全宇宙最好的产品,然而如果没有用户,你就一无所有。这就是为什么我逼着自己遵循以下 12 条法则:

    1.准备好不要在开发你的产品上花大量时间。

    2.准备好在产品宣传上花费大量时间。

    3.从不遗留未解决或未回应的问题超过一个工作日。

    4.从不遗留在论坛上未回应的问题超过一个工作日。

    5.每天登陆论坛,展示给用户论坛的活跃状态(是的,在一开始这是一件累人的工作,但这很重要——没人在空白墙上写字)。

    6.推特你在做什么。

    7.有一个公开的路线图

    8.询问用户关于路线图的反馈。

    9.拥有一个用户之声(http://babylonjs.uservoice.com/)。

    10.友好待人,不要傲慢。你需要他们远比他们需要你。

    11.寄希望于一个像样的文档编制系统:我知道你们讨厌写文档,但是这是你工程强制性的一部分,我们花了很多时间在http://doc.babylonjs.com/上,把它变得更漂亮,易用,以社区为导向(文档编制本身是一项社区可参与的 Github 工程)

    12.准备一个简单的边干边学的方法,对我们来说这真的是重要的一点。我们创建了http://www.babylonjs-playground.com/ 使 web 开发者不用安装任何东西就可以可以测试babylon.js。减少所有的阻力很重要。我们都很懒而你如果能够移除全部障碍,那么你将使更多人尝试你的框架。正如 jsfiddle,也是一个与他人分享代码的方法甚至更简单地提供 bug 报告。我们尝试通过增加一款出色的工具智能感知(intellisense)切实的使编译时更加方便。

关于论坛的题外话:我们刚开始在 GitHub 的 issues 上与用户沟通,但结果不如普通的旧式论坛方便。我要感谢 Richard Davey(photonstorm【译注:此为李察戴维的昵称】)主持我们 HTML5GameDevs.com 上的论坛。

这是所有关于关注用户的需求和问题。用户需要能够信任你的产品,并有维护良好的沟通渠道,赋予他们对你的产品的信心。你处理请求越快,你的用户就越有信心。这是如何建立你的框架的声誉的主要构件。只要你关心你的用户,你可以用比其他工具更少的功能开始。

社区的形成

如果你做到了支持你的社区,他们会提供给你美好的礼物。某些来自社区的人会美妙并充满说服力地开始回答其他人的问题——有的时候甚至会比你做得更好!当这第一次发生在我身上的时候,我哭了。

如果你足够幸运,你会拥有以下三种用户:

  1.  使用你的产品并问问题的普通用户

  2.  使用你的产品、问问题、并且回答问题的强力用户

  3.  使用你的产品、问问题、回答问题、并贡献代码的超级用户

这就是你旅程的终点了。现在起用户不需要你就能上传代码并做出美妙的事情。举个例子,在Babylon.js 的最新版本中超过 40% 的新特性都是由社区产生的

现在你已经成为项目的领导人物了,你需要给予方向、目标,并且保证所有的东西都是整齐一致的。

当我现在收到来自世界各地聪明人的 pull 请求,知道他们希望做出一个更好的 3D 引擎的愿望时,我仍会感到相同的愉悦。

结语

总的来说,从一个项目领导者的视角出发看起来像这样(图片由我的手©荣誉出品)

更多互联网开发的实践

这篇文章是微软工程师与宣传者在实际 JavaScript 学习、开源项目开发、协同工作(包括 Microsoft Edge 和新的 EdgeHTML 渲染引擎)中所著的互联网开发系列文章之一。

我们鼓励你使用这里免费的工具来进行跨平台和浏览器(包括 Microsof Edge)的测试。

通过工程师和开源布道者进行深入学习:

我们社区的开源项目:

更多免费工具及即将开发的网络应用: