假设您有一个开源软件的想法,希望快速传播。为了获得用户,您必须确保您的产品制作精良,并具有所有正确的功能。您还需要确保人们理解您的项目为何存在以及他们为何应该感兴趣。
尽管“DevOps”的最新趋势突显了运营和开发经验需要融合在一起,但看到开发、产品管理和营销理念的融合可能更为强大。 这就是我在早期构建 Ansible 的方式——我相信它之所以快速发展,正是因为这种专注。
为了实现高水平的开源软件采用率,我们不仅需要构建出色的软件,还必须了解我们的用户,以改进我们的想法,并且同样重要的是,能够与未来的用户建立联系,将他们拉入进来。 这形成了一个循环:获取更多用户可以改善信息池,从而有助于不断改进产品,并不断提高产品增长率。
产品策略最重要的是构建什么和何时构建。 当它寻求真诚地与用户建立联系并帮助用户,而不是销售某些东西时,它是最有效的。 在开源中,我们首先寻求理解,然后集体服务于受众,以构建我们可以共同分享、开发和使用的工具。
以下是创建有效的开源产品策略的六种方法。
1. 广撒网
如果您想尽可能多地获得用户,您将需要构建一个对大量人感兴趣的项目。 如果您需要特定的操作系统、发行版、编程语言或软件堆栈,您的潜在受众自然会缩小。 针对狭隘的“垂直”用例也会缩小受众范围。 程序不可能满足所有人的需求,但启用更大的用户群可以保持可能性,并且拥有更多用户可以实现更多增长。
为什么这很重要? 开源理念很容易通过社交渠道传播——人们谈论他们喜欢和不喜欢的工具。 那些不在您的目标受众中的人对这种效果免疫,因此使软件具有广泛的吸引力会有所帮助。
我们如何定位足够的用户? 假设我们正在开发一个基础设施应用程序,该应用程序在云和微服务领域可能非常有用。 尽管以“微服务”为目标可能很流行,但用更通用的术语描述应用程序会吸引更多人尝试它。 将其作为用例提及,但更广泛地定义您的应用程序。
类似的场景是将用 Go 编写的简洁实用程序营销为Go 应用程序。 尽管这可能会吸引 Go 社区的用户,但会限制从其他数十种编程语言中获取用户的机会。
我们关心广撒网,因为获得更多用户有助于我们构建更好的产品。
2. 保持真实和信息丰富
一旦我们有了一个广泛吸引人的产品理念,告诉人们为什么他们需要试用它非常重要。 不幸的是,很少有项目或产品能做到这一点。
当查看普通初创公司的网站时,您可能会看到一堆流行语、三个放在小方块中的形容词、毫无意义的短语、人们握手的剪贴画,以及难以理解产品的目的。 他们会希望您填写联系表格,然后与销售人员交谈,以了解产品真正做什么,并向您推销您可能不知道自己想要的功能。 对话以令人不快的体验、没有销售和浪费大量时间而结束。
如果您查看普通开源项目的 GitHub 页面,您仍然经常很难理解项目是关于什么的。 您可能会意识到它结合了您不了解的三种技术的名称,但您几乎不知道如何使用它或它做什么。 找出答案将需要数小时的功课来整理细节。 这同样糟糕。 GitHub 上有大量令人惊叹的项目,人们永远找不到,因为这些项目不寻求营销或解释自己。
在向世界解释您的产品时,这两种方法之间需要有一个中间地带。 开源产品在非常明确地说明它们是什么时传播效果最佳。 从您正在解决的问题入手。
项目应该通过用例、示例和系统架构的组合来营销自己。 以对没有太多背景知识的受众来说清晰的方式解释您的解决方案的设计,但也包含足够的细节来回答有背景知识的人的问题。在相关的地方包括屏幕截图和架构图。 您可以包含一个简短的视频,但也要为那些没有时间观看视频的人提供书面信息。
虽然您的目标是说服人们使用您的产品,但您也在尝试帮助他们快速了解它是什么以及不是什么。 坦诚地说明局限性和目标。 信任和诚实价值千金。
保持透明。 说话简单但完整。 力求帮助教育和影响,而不是操纵。现在我们有了对产品感兴趣的用户,我们希望他们在试用软件和学习使用软件时有良好的体验。
3. 专注于出色的文档
您需要新用户立即获得成功,并在他们开始使用您的产品后立即爱上它——您不希望他们费力地弄清楚如何设置它。 因此,投资于文档是您可以为您的项目做的最重要的事情。
如果用户想在午休时间试用您的产品,他们应该在结束时感到成功。 如果没有,他们会继续前进,他们的挫败感将变成 Twitter 上的愤怒,这会阻止其他潜在用户。 相比之下,立即成功会变成“哇,应用程序 X 太棒了!”的推文,并鼓励新用户尝试它。 不要让用户费力地弄清楚安装说明——在每一步都向他们展示要键入的内容,并让他们更快地接近“哇”的时刻。
将与文档的每一次体验都视为赢得用户或失去用户的机会。 意识到用户的技术知识水平不同,因此不要假设他们知道您所做的一切。 如果文档仅包含代码生成的、注释简洁的 API 函数,那么您就已经失去他们了。
文档应解释您项目的目的。 描述用户为什么要阅读某个部分,提供示例,并超链接到用户可能想要接下来探索的区域。 认识到有些人按顺序学习,有些人随机学习,因此提供索引、“另请参阅”部分、常见问题解答和词汇表。 文档应该令人愉快地阅读和探索,而不是仓促产生的马后炮。简单的教程或安装指南可能是您可以制作的最容易转发或发布到 Hacker News 的内容类型之一。 人们还将使用您的指南作为参考编写自己的版本并发布这些版本。 确保您的内容能够让您的社区想要做这些事情。
至此,我们应该已经获得了一些快乐的用户。 然后,我们可以利用这些用户池来帮助改进产品。
4. 不断收集新想法
在用户学习您的应用程序时投资于留住用户,这将导致流程的下一步:反馈。 希望您已将您的项目构建为高度对话式的——如果不是,现在是开始沟通的时候了。 您想很好地了解您的用户,尤其是您的贡献者。
使用邮件列表、IRC 和网络聊天来了解您的用户。 使用调查,但保持开放式,以便您可以学习新的、意想不到的东西。 GitHub 对于代码来说还可以,但可能不够对话性和友好,无法真正了解您的用户。
一项需要培养的重要技能是对用户日常生活的直觉。 他们需要哪些功能? 哪些功能他们只是认为需要,但实际上不需要? 哪些功能是他们不知道自己需要,但会被震撼到的?
与其与少数用户(例如,付费客户群)交谈,不如您有机会与潜在的大量人员交谈,以更好地了解您的市场空间。 您的用户已经关心您的软件并希望使其变得更好,因此请利用这个机会。
在收集想法时,我们可能已经注意到许多相互冲突的想法。 许多用户希望以我们不打算的方式使用我们的产品。 鉴于许多专有产品可能会尝试在此阶段限制范围,但由于开源生态系统的强大影响,我们真的很想容纳这些用户。 我们意识到我们的产品开始成为社区拥有的实体。 我们应该找到在合理的情况下容纳它们的方法。
5. 通过可插拔性保持选项开放
专注很重要,试图取悦所有人可能会导致功能臃肿的产品,难以学习。 分歧在开源项目中很常见。 分叉实际上非常罕见,但在很多时候,有人可能会选择其他工具而不是您构建的工具。
保持架构模块化是避免这种情况的非常有效的方法。 当邮件列表或 GitHub 工单上出现争议时,您可以说:“我不确定我是否希望将其作为核心功能,但如果我使其成为插件的方式呢?”
插件几乎是我最好的秘密技巧之一。 许多最成功的 Web 项目似乎都具有非常强大的插件生态系统。 在较低级别,编程语言库集合本质上是插件生态系统。
通过使用插件保持选项开放,我们留住了用户。 这些用户可以帮助与他人分享我们的产品,并且他们可能会在未来贡献错误报告、补丁、文档或其他内容。 尽管我们已经从最初的想法转变为更仆人式的领导,但我们必须认识到,这个项目仍然是我们创造的东西,没有人比我们更了解它。 还有我们社区可能尚未看到的去处。 所以让我们继续想象……
6. 梦想可实现的美好未来
并非所有数据都来自您的用户。 您自己的创造力是项目启动的原因,它将有助于确定所有后续事物的方向。 不断思考所有您可能做的事情或您可能获得的所有可能的贡献是有用的。
培养探索可能途径的“假设”心态。 您可以构建哪些近期功能,如果这些功能存在,它们可能会启用哪些其他近期功能? 您可能希望达到的长期领域是什么,以及在您到达那里之前必须构建的近期功能是什么? 与处理其他功能相比,处理这些功能的机会成本是多少?有时,项目中最轻微的改变就可以开启贡献和兴奋的新局面。
在服务社区的时间与探索您改进社区愿景的时间之间取得平衡。 您可能会到达一个地方,在那里您真的会梦到新的产品功能,这些功能将帮助您遇到的用户。 尽管我醒来时有一些奇怪的想法,但我也实施了不少这些想法。
后续步骤
至此,我希望您已经注意到,沟通和帮助用户的循环是相互联系和自我强化的。 制造正确的产品是构建和规划产品的每个人都成为同一社区的一部分的职能。
拥有统一的产品管理、营销、社区和开发是我们所有人创建小型项目时的起点,随着公司的发展,重要的是要认识到回到那种心态——即使在我们专业化时——仍然是事情运作的最佳方式。
努力去结识人们,了解他们,帮助他们,并创造惊喜。 这就是开源的全部意义所在。
在 Michael DeHaan 的演讲《揭秘开源产品策略》中了解更多信息,该演讲将在 All Things Open 2017 大会上进行,大会将于 10 月 23 日至 24 日在北卡罗来纳州罗利市举行。
1 条评论