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