二十年前,我开始使用自由和开源软件。 不久之后,我开始在专门的论坛上提问,学习如何使用 IRC 与开发者聊天,并贡献了我的第一份错误报告。 随着我的贡献不断增加,我从工业界转向了开源软件行业。
在过去的 20 年里,我学到了很多关于使用和贡献自由和开源软件以及与社区和开发者合作的知识。 以下是您将在开源项目中找到的 10 个关键领域,以及一些更好地管理它们的技巧。
1. 新手
新用户永远不会改变:他们不会搜索现有的答案,而且他们的问题总是很紧急——当然,对他们而言。 有时他们不明白使用开源软件意味着他们要对如何使用它负责。 他们不知道项目和产品之间的区别。 这就是为什么他们不知道社区支持、免费支持和付费支持之间的区别。
在许多论坛和问答引擎上,您可以添加指南和其他技巧,以帮助新手编写包含所需基本信息的好问题。 如果可能,启用重复项和自动建议等功能,以便清理队列和提供的信息。 当然,经验丰富的社区成员和项目专家可能会对初学者感到恼火,但不要忘记每个人都曾经是初学者。
这就是为什么下一点如此重要。
2. 教育
大多数人对自由和开源软件、社区以及相关主题一无所知。 不要期望大多数人会自学。 关键是提供教育、教育,以及更多的教育。
在您的材料中
- 阐明您的业务、您的项目、您的产品(例如,项目和产品之间的区别),并在公司内外教授开源最佳实践(是的,“内部”包括您的同事和经理)。
- 在您的网站(公司网站、项目网站、文档、博客等)上撰写清晰的沟通内容。
- 从您的沟通和内容中删除“免费”和“gratis”这两个词,并在所有适当的地方用“开源”代替。
您的目标是帮助用户理解他们下载的是一个开源项目,而不是一个产品。 这有助于他们对获得支持和成为负责任的用户产生准确的期望。
3. 代码托管平台
无论您使用什么贡献系统,无论您对问题进行排序的速度有多快,以及您审查代码有多认真,总会有人抱怨——他们的问题很关键,必须立即修复,维护者不够友善或技术不够熟练,提交代码太复杂等等。 有些人会在社交网络而不是代码托管平台上分享代码; 他们说他们没有时间这样做,维护者应该做。
一些想法
- 创建自动化或标准答案来管理这些类型的用户和消息,这样它们就不会消耗不必要的时间。
- 分配项目经理、社区经理或其他人员来处理难缠的人和讨论。
- 始终保持热情、礼貌和尊重; 这将显示您对人们的善意。
- 花时间指导那些对项目表现出兴趣并想学习和贡献的人。
- 向赢得权利的人授予代码托管平台上更多的权利。
- 编写关于如何获得权利、如何失去权利、被禁止的原因等的明确规则,并将它们包含在您的开发者文档或 contributing.md 中。
- 请记住,贡献者来自世界各地,具有不同的文化、背景和母语,他们的英语可能并不完美。 保持开放和包容。
4. 文档
文档永远不会完美,也不会及时更新。 它始终是尽力而为和正在进行的工作。
在一些团队中,文档和教程是工作的一部分,这意味着如果开发者没有编写文档,则该功能将不会被合并。 您可能希望在您的团队和项目中尝试这种做法。
请记住,有时编写关于社区中经常出现的问题的分步教程比编写关于特定主题的完整、详细的文档更容易且更有用。
在您的文档中,您必须至少包含
- 项目描述、其功能、未完成的功能(如果需要)、当前路线图和分发许可证
- 如何安装以及先决条件列表
- 最终用户的基本说明
- 维护人员的基本说明(运行、更新、监控等)
- 如何从源代码构建
- 如何在代码托管平台上贡献
- 如何编写代码(每种语言的预期标准)
- 如何编写和运行测试
- 依赖项列表及其许可证
- 所有软件的扩展系统列表以及如何使用它们的示例(例如,模块、主题、钩子、API 等)
- 指向其他网站上的教程和有趣的 technical 内容的链接
- 除代码外,为项目做贡献的方式(更多内容请参见下面的第 8 条)
不要期望聪明的用户和优秀的开发者会自己弄清楚这些东西; 他们需要您提供这些信息,以节省时间并遵守您项目的最佳实践和要求。 良好的文档是认真的标志。 如果没有可用的文档,人们会寻找另一个项目。
5. 商业
许多专家说,没有开源商业模式。 实际上没有人真正出售开源代码。 公司通过开源软件开展业务,并销售围绕它的一切(认证构建、打包、分发、服务、法律支持、技术支持、市场等)。
这使我们回到了上面的第二点:教育。 管理层、营销、销售,甚至开发者都必须了解什么是开源,才能了解他们销售什么、开发什么以及公司真正做什么。
为他们创建内容至关重要:常见问题解答、文章、研讨会、博客文章以及任何其他可以帮助他们的内容。 这些文章可能会有所帮助
- 开源产品的四个规则(以及 10 张幻灯片),作者 Stephen Walli
- 开源原型:有目的的开源框架,作者 Mozilla
6. 网络喷子
网络喷子有很多不同的类型:有些活跃于社区,有些将您的软件用于他们的业务,有些只是在您的沟通渠道上进行喷子行为。 但他们都有一个共同点:他们抱怨——您的项目很糟糕,您的公司不知道如何做生意,您的开发团队技术不熟练,路线图很糟糕,社区成员是白痴——使用咄咄逼人的语气和侮辱。 他们中的一些人拥有强大的专业知识,如果他们态度积极,本可以发挥作用……但是,像往常一样,“黑子总是会黑”。
管理网络喷子很困难(几乎不可能),但您可以学习如何好好利用他们
- 当他们在投诉中提供足够的信息或创建问题或拉取请求时,感谢他们并在可能的情况下给予他们肯定(他们会同时喜欢和讨厌这一点)。
- 在您的沟通渠道上用事实,而且只有事实(没有观点)来反驳谎言。 但不要花时间与他们战斗,因为您会助长他们的气焰,他们会对您获得更大的力量。
- 永远、永远、永远、永远不要具有攻击性或侮辱性; 无论他们做什么,始终保持冷静和礼貌,即使他们侮辱您。 社区会欣赏这一点,您会因为成为好人而赢得赞誉和尊重。
- 邀请他们在活动和聚会上与您在现实生活中见面,承认他们的专业知识,并告诉他们,他们的帮助始终是受欢迎和赞赏的。
- 有时,别无选择,只能禁止他们。 如果一个网络喷子在一个特定案例中拥有支持者,这可能会给社区带来非常糟糕的势头。 但是当事情后来变得更好时,人们很快就会忘记。
对待网络喷子的圣杯是将他们变成好人,他们会将他们巨大的能量用于有益的事情。 这很难,需要时间,但这是可能的。
7. 开发者
因为开发者很难聘请,而且薪水很高,所以有些人认为他们统治世界。 不要告诉他们,但他们实际上受编程语言、规范的作者以及决定他们优先级的人统治。 (谁说的“用户”?)
关心他们,花时间去了解他们; 他们是编写您项目代码的熟练人员,但他们也是人。 :-)
如果可能,创造机会让他们每年在现实生活中见面一两次。
好处是:最好的开发者通常是友善、谦虚的人,并且喜欢用优雅的解决方案解决问题。 这是我可以提供的识别同行中最好的人的最佳线索。
8. 贡献者
很难让开源项目中的人们做您真正想要或需要的事情:他们为了自己的利益并利用他们拥有的技能参与和贡献。
他们的兴趣可能包括
- 为项目贡献代码,通过代码审查和指导来提高他们的技能
- 在他们的简历上添加行来找到工作
- 修复和改进项目,使其更好地服务于他们的特定用途(他们的客户、他们的雇主等)
- 作为项目生态系统中的专家获得知名度并提高他们的平均日薪
如果您有特定的需求,您可以尝试创建一个赏金计划——是的,这意味着提供一些金钱或令人兴奋的奖励——以激励人们解决这些需求。
不要忘记,有很多不同的方式可以为开源项目做出贡献
- 使用和传播关于您项目的消息
- 策划活动(例如,聚会、大会)
- 设计(例如,模型、规范)
- 写作(例如,文档、教程、视频教程、博客)
- 园艺(例如,对问题和拉取请求进行排序、主持论坛)
- 在论坛、聊天或其他沟通渠道上提供帮助
- 最后,编码(是的,通常只有少数社区成员有足够的技术来提供良好的代码)
提示
- 了解人们为您的项目做出贡献的原因将帮助您了解您的社区和用户。 在活动和聚会上与他们在现实生活中见面,在社交网络上与他们聊天,并直接询问他们为什么参与。
- 使以不同方式贡献变得容易
- 在您的博客上突出贡献者和社区领导者
9. 知识产权 (IP)
人们对版权、许可证、分发兼容性、品牌管理、专利和一般知识产权一无所知。 即使大多数开发者也不知道他们是作者,他们的雇主拥有他们所写内容的权利,或者他们需要关心许可证。 我认为应该在工程学院更多地教授这个主题。
知识产权与源代码管理有关,但也包括品牌管理(例如,名称和徽标)、项目依赖项和许可证兼容性、贡献者等等。
长话短说
- 编写软件就像写书一样,有作者、编辑、分发、版权管理等,并且您项目的许可证是项目作者/编辑与用户/贡献者之间的合同。
- 公司将使用您的项目来解决他们或其客户的业务相关问题。
- 自由职业者和小企业可能不太注意知识产权,他们会测试您的软件,如果他们喜欢它,他们就会使用它。
- 如果一家大公司对您的软件项目感兴趣,他们将首先检查知识产权是否干净。 如果律师批准,公司将开始使用它,并最终聘请开发者。 如果您足够幸运,他们甚至可能会回馈一些功能和改进。
请记住:知识产权对于开源项目非常重要,但却被严重低估。 通常,它由基金会或托管项目的公司管理。
10. 社区
像知识库一样组织您的沟通渠道和资源:它们必须易于编写、易于改进且易于查找。
在您的社区中,您需要管理两种类型的信息
- 关于项目和软件
- 关于社区成员
第一种类型显而易见。借助维基(文档)、论坛、缺陷跟踪器和像 Git 这样的代码管理工具,您将收集大量(是的,大量)关于项目的信息。这里的关键是考虑类别、审核、链接以及一点 SEO。
第二种类型——关于社区成员和项目用户——则被严重低估了。您必须非常谨慎地处理个人信息,但要为贡献者创建一个途径来展示他们是谁以及他们使用软件做什么。一个好的开始是在论坛上启用用户个人资料,其中包含有趣的字段和关于您项目的信息。然后,尝试添加一些游戏化元素来识别社区中的领导者。在某个时候,考虑使用客户关系管理 (CRM) 解决方案来跟踪您与人们的互动——那些您在现实生活中遇到的人、主要贡献的作者等等。
这样,您将增加对项目及其贡献者的了解。这将帮助您创建一个更好的项目,并成为更好的社区经理或项目所有者。
如果您是开源项目经理、贡献者或用户,您有什么提示可以添加到此列表中吗?请在评论中分享您的想法。
4 条评论