内容


成功的开放源码社区

为开放源码项目创建开源社区

Comments

如果您有一个非常棒的、新的开放源码项目,但很少人知道该项目的存在;或者您得到了一个被低估的项目,需要重新焕发它的活力。您的老板可能会在一大早出现在您的办公室并告诉您,“为我们的项目构建一个社区!”

您需要为项目创建并维护一个社区,让有相同追求的人能够聚集在一起。此外,您不仅需要创建社区,还要一直维护社区,让它保持健康。受到活跃维护的开放源码社区会持续地发展。

培养领导才能

Karsten Wade 是 Red Hat 的 Community Architecture 团队的高级成员,他的职责包括在 Fedora Project 社区工作。作为 Fedora Documentation Project 的前主管,Wade 将他的沟通和人际关系技巧结合起来,这造就了成功的 Fedora。他将自己称为 “社区园丁”,这个名称很好地反映了他的哲学思想 —— 耕地、播种、培育是获得丰收的最好办法。

Wade 的哲学思想让他的社区获得了成功。了解如何参与、支持和代表是领导人类事业的首要模式,社区的最重要方面是将人聚集起来。社区的所有参与者都扮演一个角色,从而构成我们生活中的大环境下的一个小环境。

作为社区管理者的您同时也是社区的领导者。

要做一个成功的社区领导者,您必须了解该社区的特定目的。这是不是一个由大量每天使用您的项目的用户组成的社区?这是不是一个由开发社区的开发人员组成的社区?这是不是一个由外部开发人员组成的社区,他们在自己的项目中获得了更深入的理解,并希望回馈给社区?

在提及 “社区” 这个词时,您知道听众是谁非常重要。了解目标群体使您能够采取可以让社区成员更好地交流的方法。

逐步构建社区

创建社区是一个培养过程,因此实现成功的社区不是凭借运气。以下这些步骤将帮助您考虑保持社区健康的因素。

您的期望是什么

如果您对社区文化有足够的了解,您将发现社区一般遵循 90/9/1 规则:

  • 90% 的成员是纯粹的读者,他们只阅读不贡献内容。我们将他们称为偷看者。但要记住,偷看也是一种有效的被动参与方法。
  • 9% 的成员回答问题或修改现有的信息。我们将他们称为编辑。编辑是一种零散但常规的活动,对于壮大和维护社区的参与十分关键。
  • 1% 的成员积极提出新的讨论并提供新的材料。我们将他们称为创造者。创造是一种完全投入的参与,因此这些成员是社区的核心,一定要珍视他们。

这个数据比例适用于许多类型的社区。在开始之前了解您的期望值能够帮助您避免挫败感,尤其是当 90% 的社区成员都不做任何贡献时。其实这就是成功了!将精力放在鼓励创造者和编辑上面,并寻找和提供他们创建所需的工具,让他们不断地贡献内容。

社区工具

当您开始认真考虑社区时,您就会想到用来创建社区的工具。您可以使用许多让社区成员应接不暇的工具和特性,但根据经验,最好从简开始,然后慢慢完善它。当然,计划也要长远,便于以后扩展。

流行的社区特性包括:

  • 讨论组 —— 这些组或论坛 通常是成功的社区的支柱。它们提供讨论、合作、投诉和互助的场所,促进社区成员对特定的主题的理解。许多成功的社区完全是由讨论组组成的,只有少数成功的社区没有讨论组。维护一组讨论组,并就如何组织讨论组出谋划策。
  • Wikis— Wikis 的目的是用于合作。并不是所有成功的社区都需要使用 wiki,但大部分社区都需要使用一些便于搜索的方法来维护社区的项目信息,而 wiki 软件就是一个能够协作地实现该目的的方法。
  • 博客— 博客可以是时事通讯、公告机制和宣传项目的载体,但它们很复杂,因此常常被忽略了。在登录并写博客时,请考虑您的项目是否需要来自博客的声音,然后考虑每周最少写 2 到 3 篇博客。另外,发挥您的领导才能,鼓励社区创造者写博客。随着社区的壮大,需要为它设计固定专栏、舆论板块和特定于事件的论坛。
  • 软件储存库— 这些储存库是所有共享软件的项目必须使用的。社区生成的软件需要分发、协作、避免冲突和访问控制的方法。
  • Bug 跟踪系统— 这些系统是必要的。它们为用户与开发人员通信提供一种易于理解的方法,在通信时验证用户和开发人员的位置。
  • 文档— 文档对成功的项目也非常重要。它是社区成员,尤其是缺乏技术技巧的成员为社区共享代码的好方式。Wiki 是社区文档的流行载体。
  • 社交网络— 社交网络在这里不是绝对必要的,但它们可以帮助社区成员保持了解最新的信息。在 Twitter 上阅读短消息或在 RSS 提要上查看公告比定期访问社区新闻要容易得多。在需要的地方使用社交网络工具。现在社交网络的威力开始爆发出来,在不久的将来社交网络将是不可或缺的。

注意:这个列表不是固定不变的。在构建社区之前,花大量时间认真考虑将要使用的特性是值得的。否则,您将把宝贵的时间花在从一个社区解决方案转到另一个上面。

此外,还要考虑一个内容管理系统(CMS),比如 Drupal(见 参考资料)。CMS 并没有试图合并完全不同的操作系统,而是集成基础的功能,比如身份验证、页管理、数据库访问和管理功能,并以插件的形式提供单个特性。如果一个插件不符合您的需求,您可以选择另一个。您还可以创建一个新的项目或根据需求调整另一个开源项目,但这样做就偏离了原来项目的目标。此外还要注意,许多流行的工具都可以与 CMS 轻松集成,因此您可以找到合适的组合。

位置

实际上您只能通过 3 个位置放置在线社区:

  • 社区本身的站点上— 许多项目都选择这条路线,但需要注意,独立常常意味着孤立。如果您的项目与其他项目相关联,您必须在这些项目的社区中保持活跃,并且只有将这些社区集成起来,您才能更容易地保持活跃。
  • 包含不相关的项目的大站点的一部分— 仔细思考一下,这更有意义。许多开源开发人员都熟悉 Sourceforge.net,这是一个宿主了大量项目的混合社区 —— 2009 年年中时大约包含了 25 万个项目。作为开源软件的聚集地,Sourceforge 通常是用户查找资源和开发人员查找项目的场所。
  • 包含相关的项目的大站点的一部分— 这可能是最好的。尽管您的社区仅关注自己的问题和目标,但大社区在可以共享的关联系统中提供资源、潜在的增长机会和具有创造能力的人力资源。

此外,还有第四个选择:同属于以上三种类型。一个成功的社区涉及到各个方面,就像重叠的人类社会网络和以获益的方式交往一样。不管您的社区宿主在什么地方,要在它的生命周期内将其延伸到所有适合的地方,并且要维护这些关系。

公告

创建好社区之后,下一步就是发出公告。发出公告的方式与项目的性质和可用的方法有关。

在 2009 年,您可以使用主要的社交网络,包括 Twitter、Identi.ca、Facebook 和 LinkedIn,以及其他影响到您的项目或受您的项目影响的社区。

您的社区的潜在成员一般如何保持联系?他们在 Twitter 上相互关注吗?这是在建立社区时通知潜在成员的简单方法。可以在 Twitter 上讨论任何出现的问题或意想不到的解决方案。他们喜欢 Facebook 吗?创建一个可以发布警告的社区身份,让用户围绕社区身份开展活动。他们喜欢 LinkedIn 吗?随时邀请专家出场让社区成员了解最新的动态。使用您的项目知识和潜在的社区成员建立的网络,为新的社区寻找一个合适的安家场所。

三思而行

通过指标来衡量成功似乎很荒谬。不过,找出可用于判断成功还是失败的指标是一种非常有趣的实践。

眼光一定要超越明显的标准。例如,并不是所有社区都得益于拥有大量的成员;一些小的社区通过效率来保持它的活力。并不是所有社区都得益于专注;有时多样性能够改变想法,并找到让社区迅速发展的解决方案。

现代的 CMS 提供分析反馈,可用于指出社区中使用率很高或很低的区域。通过分析数据并做出相应的调整,但不要让度量指标取代了亲自参与。

保持势头

知道如何为他人提供便利是一条金牌法则。

社区管理者属于领导人物,这意味着通过指明步骤促使他人参与,而不是拉拢参与者。您通常需要放任他们。您应该问自己,内容创造者有多聪明,他们的沟通知识、意愿和技巧如何?是否有希望成为创造者的编辑?经过鼓励之后,是否有一些偷听者希望成为编辑?

“头脑风暴” 的方法可以帮助社区成员认识到他们在社区中的潜力。当他们的自信和专业技能提高之后,他们就会把自己的经验奉献给社区。这就是社区的本质。

当社区成员处理不寻常或有挑战性的情况时,请不要马上干涉,而是先观察一阵子。确保规则的明确性和执行力。为所有人提供一个友好的环境,对于违反规则的人,一定要果断处置。不过,在引出主题之后仍然保持谦虚,以社区成员而不是管理者的身份参与社区能够让社区成员更乐意为该主题做贡献。意见不一致是件好事:它表明每个人都非常清醒地关注社区。您为成员发展自己的个性提供的空间越多 —— 包括处理事情的不同方式 —— 他们对社区的投入就越多。

经常参与社区的活跃成员放弃社区的可能性比仅仅作为一个贡献者的领导要小的多。

社区个性是社区的目的与成员交流融合的产物,拥有各种成员并且有多个社区基础的社区更加牢固。复合的社区个性同时是强大的社区个性。

社区不属于个人

记住,社区个性是社区的目的与成员交流融合的产物。这个社区不是您自己的;也不驻留在您的家中。社区成员不会在您家的前院扎营,也不会排队等待以到您的洗刷间去刷牙。(尽管参与有时让人有种强烈的归属感)。

保持社区内部畅通

如果您的社区基于一个公司项目,那么您就需要清除社区、项目和个人问题之间存在的障碍。

在问题出现时,一定要在它升级之前立即把它隔离。最好私下调解个人问题,不让它影响到整个社区。但项目问题应该如何处理呢?项目预期的开放讨论的界线如何确定呢(包括最初项目目标的失败或感受到的失败和潜在的灾难性观点)?作为社区管理者,您有责任随时关注公司的动态并在必要时找公司主管商量。您应该提倡参与和 “头脑风暴”,而不是操纵。

与项目密切相关的社区问题如何解决呢?大量的代码贡献可能让社区管理员非常高兴,但还可以通过一些工作让这些代码遵循一定的风格或代码约定。有时最好将某些开发人员提升为 “架构师”,在 wiki 上请求他们制定代码规则。这将促使他们彼此合作,并解决关于代码规则的不同意见。

社区存在和发展的时间越长,您就对应该依赖谁有更深入的了解。构建一个支持系统和一小队创造者,以在遇到比较棘手的问题时找他们帮忙。

知道何时终止

除了 FORTRAN 之外,所有项目都会结束。有时需要取代现有的技术,有时维护人员(您)需要尝试新的东西。如果您的时间有限,那么如何通过社区完成任务?

记住,在建立社区时您确定了它的用途,在该用途的范围内,您还指出了社区的最初目标。这个社区目标通常与项目目标相同,这意味着当项目达到其目标时,项目的社区也就完成了它的任务。要在社区门户上明确这点,并在社区使命中声明。不管采取什么方法,在社区生命周期的任何适当时间将该目标作为谈论点。

不过,如果社区在项目结束之前就开始衰退,那么可以拯救它。社区成员是否认为他们的贡献减少了?他们是不是对社区不满意?或者他们可能暂时忙其他项目了?有时社区成员可能正在等待一个解决他们的意见的机会。有时社区可能需要缓一缓劲,但您却认为它衰退了。如果您提出问题但响应很少或甚至没有,那么您可能需要重新声明社区的存在。最初的社区成员可能不在了,但这并不意味着在新的成员组成下社区不能再恢复活力。

如果您需要离开社区,那么应该私下与最得力的创造者会面。这可能是把担子交给别人的时候了,从而使您能够退居为创造者或从事另一个项目。最有活力的社区的寿命通常比社区创建者的参与时间长。如果您的社区完成了它的使命,那么就可以和它惜别了。此时,您还要感谢社区成员的参与,不管是主动还是被动参与,祝贺他们曾经让社区繁荣并将他们带到更大的社区中。

结束语

创建和运营成功社区的要点:

  • 作为领导者而不是控制者或管理者。
  • 认可并参与您的社区。
  • 了解您的目标群体。
  • 了解社区的目标。
  • 参与并鼓励其他人参与。
  • 在必要时根据指标或成员反馈清理社区。
  • 不要将社区个人化。
  • 知道何时终止社区。

使用您的知识和工具创建、壮大和维护社区并以此为荣。当需要说 “非常感谢!我的工作已经完成。” 时,就勇敢和您的社区道别吧。


相关主题

  • 系列文章 “Exploring Drupal V6” 提供开始使用 Drupal 所需的信息。
  • Meld 是一个成功社区的例子,它讨论嵌入式 Linux®。
  • BeagleBoard.org 是一个特定于技术的成功社区例子,它讨论一个平台。
  • Drupal.org 是一个特定于项目的成功社区例子,它讨论一个开放源码项目。
  • 请阅读 Jono Bacon 的 Art of Community,并访问该 Web 站点。
  • 随时关注 developerWorks 技术活动网络广播
  • 访问 developerWorks Open source 专区,获得丰富的 how-to 信息、工具和项目更新,帮助您用开放源码技术进行开发,并与 IBM 产品结合使用。
  • 下载 IBM 产品评估试用版软件IBM SOA Sandbox for Reuse,并开始使用来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。

评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Open source
ArticleID=457343
ArticleTitle=成功的开放源码社区
publish-date=12172009