管理开源 CMS 项目,我所学到的

还没有读者喜欢这篇文章。
open source communities

Opensource.com

关于我们的开源项目 PencilBlue,我最喜欢的部分是能够与来自世界各地的人们互动。当我们刚开始时,只有我们两个人,但随着时间的推移,我们看到贡献者开始增多。这让我开始思考,成为一名优秀的维护者需要什么,以及我的团队将如何确保项目在未来几年继续顺利运行。

全世界有多少人为开源软件做贡献?如果 GitHub 的用户群可以作为参考,那么开源社区的人数超过 850 万。这是一个庞大的人群,他们有能力和意愿做出贡献。这些数字甚至没有考虑到那些匿名克隆或下载发行版的人。既然我们知道可以潜在地吸引多少人,那么我们如何让他们对我们的项目感兴趣呢?

管理一个开源项目归结为三件事

  • 愿景
  • 流程
  • 认知

愿景

你的项目必须有一个愿景。我在 NC State FOSS Fair 上问了几位观众:“你们是如何决定开始或贡献一个开源项目的?” 所有的答案都是一样的:“我感到无聊,想解决一个问题。” 你试图解决的问题通常是其他人也面临的问题。人们经常为那些正在努力解决自身问题的项目做出贡献。使用该软件或正在考虑为该软件做贡献的人们会希望确保你的目标与他们的目标一致,而不仅仅是你的软件能够满足他们的即时需求。通过在 README 文件中充实你的愿景,可以很容易地使这一点变得显而易见。完全可以这样说:“我只完成了 20%,而且还很粗糙,但这就是它将要做的事情。” 这会很有帮助。

仅仅阐述你的愿景是不够的。通过定期坐下来谈论你希望在未来几个月内达到的目标(不要超过几个月,甚至可以更少),来激发潜在追随者的信心。如果你制定了路线图,就很容易跟踪和展示进展。

构建路线图

去年,我们创建了一个关于 2014 年最后一个季度如何发展的基本路线图。它运作良好,因为我们被问及具体功能何时推出的次数减少了。但是,我们确实在路线图上设定了一些具体的目标日期。当用户反馈的数量导致我们重新确定优先级时,这变成了一个有点问题。长期的路线图迫使我们更多地采用瀑布式而非敏捷式方法,虽然我不会深入探讨这场辩论,但我会说相对时间表对我们来说往往更有效。例如,与其说媒体服务重构将在 12 月第二周完成,不如说在 12 月完成会是一个更好的计划。

获取用户反馈

决定项目的未来是困难的部分。在开始时,你只有自己的想法可以依靠。你拥有的贡献者和/或用户越多,就越有必要找到最适合项目而不是你个人的愿景。毕竟,你的项目必须满足用户的需求,而不仅仅是你自己的需求。这是我们在发布几个月后学到的另一个教训。我们提供了我们认为功能齐全的 CMS,但用户反馈是,“嘿,如果能...就好了。” 这种反馈非常棒,因为它意味着人们实际上在使用你正在构建的东西,或者至少在尝试它。它可能会与你的愿景发生冲突,但如果你看到不止一次,就不要忽视它。客户永远是对的,你应该调整方向以与人们的需求保持一致,以确保每个人都与你的前进方向保持同步。

流程

让你的贡献者在愿景范围内保持一致并不总是容易的。有时你会收到与维护者的风格截然不同的拉取请求。为了尽可能减少这种情况,至关重要的是制定一个拉取请求流程,提出问题,加强设计模式等等。流程是枯燥的——而且为每个人详细说明流程更加枯燥——但它是保持代码可维护性的必要之恶。

你每周有多少次直接提交到 master 而不是功能分支?我将第一个承认我每周至少会这样做几次。通常,不是在平台核心上,而是在一些插件上会发生这种情况。

这是一个大忌,但尽管如此,我们都曾经是或认识一些像这样的流氓程序员。他们非常擅长快速完成任务,但他们这样做往往会以团队其他成员为代价。解决方案是制定一套标准,以加强每个贡献者和/或用户的责任感。以下是我们为帮助减轻流氓程序员综合症所做的一些小事

  • 为你创建的每个问题或功能创建一个分支
  • 每个分支名称都包含问题编号
  • 确保所有单元测试都在你的分支上以及与 master 的合并上运行
  • 尽量不要合并你自己的拉取请求。如果测试覆盖率足够,小型团队可以放宽要求。
  • 让你的拉取请求成为一种学习体验。说明你为什么以某种方式做事。尽管其他人可能不这么认为,但三行内联注释并不是一件坏事。这意味着你做了一些复杂的事情,可以避免将来出现“我当时到底在想什么?”的时刻。

这些小事为贡献者之间提供了必要的责任感,以使每个人都与项目的愿景保持同步和一致。

认知

假设你正在两个类似的项目之间做出选择。你如何选择将时间投入到哪个项目中?这是我在评估要包含在 PencilBlue 中的其他库时经常面临的挑战。我寻找显而易见的东西,但由于有如此多的库可以实现相同的最终结果,因此需要有一个区分因素。老实说,这归结为认知。你的网站、文档和你的 README 文件都会给人留下第一印象。让它发挥作用。

作为一名开发人员,我经常忽略视觉效果的重要性。我喜欢认为我的代码质量本身就说明了问题,但是对于 30 万行代码,你如何说服别人甚至抽样一行?事实是,一遍又一遍做出贡献的人保持了你项目的稳定脉搏。脉搏越稳定,你获得持久性的机会就越大。

每个维护者都需要拥抱这一口头禅:通过透明度实现责任制。

开源项目从新兴公司那里获得了许多好处。他们中的大多数公司都提供工具来帮助更好地改进你的项目。

他们每个人都为开源项目免费提供一定程度的服务。他们还通过提供徽章来拥抱透明度的需求。使用这些徽章作为一种方式来让你自己对项目的质量负责。这是一个简单的补充,它将使其他人对你的代码解决问题的能力充满信心。人们会对它做出良好的回应,并团结起来帮助实现共同目标。

我曾经读过一篇博客文章,其中提到我们可以各自编写自己的轻量级 GTK mp3 播放器,或者我们可以共同努力编写一个下一代在我们退休后仍将使用的播放器。如果你能向人们展示你的前进方向,向他们展示如何参与,并向他们展示你是有能力的,你将利用他人的集体智慧为所有人谋福利。

开放
CMS


本文是 The Open CMS column 专栏的一部分,由 Robin Muilwijk 协调。分享你关于使用开源内容管理系统 (CMS) 和平台(如 Drupal、Joomla、Plone、WordPress 等)的故事。

User profile image.
Brian Hyder,开发人员和企业家,与各种规模的公司合作。如今,他担任 PencilBlue 的 CTO 和联合创始人,PencilBlue 是一个基于尖端、高度可扩展的 Node.js 基础构建的下一代内容管理系统。

1 条评论

很棒的文章。PHP 版本的 CMS 软件 http://www.instant-update.com/

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可授权。
© . All rights reserved.