“可持续发展”这个词在自由和开放源码软件(FOSS)中被经常提起。什么是可持续性,它对你的项目意味着什么
“可持续发展”这个词在自由和开放源码软件(FOSS)中被经常提起。什么是可持续性,它对你的项目意味着什么?
可持续发展的概念并不是起源于20世纪80年代,但它在那个时候获得了最为广泛的关注,这要归功于 Brundtland 的报告,该报告是联合国在1987年发布的,由一个跨职能的科学家、政策制定者和商业人士组成的团队经过三年的研究所形成的。该报告将可持续发展定义为”既满足当代人的需求,又不对后代人满足其自身需求的能力构成危害的发展”
虽然我们在这所说的可持续发展指的是全人类这个范畴,但这个定义也适用于自由和开放源码软件的开发。然而,在不同的项目中,对这个定义的实际解释会有很大的不同。一方面,对于一个小而流行的 Python 库来说,可持续性可能意味着通过将核心贡献者的数量增加一倍来增加总线因素,从而避免维护者的倦怠,以确保总是有人可以为项目工作。实现这一点可能需要额外的文档、自动化以及培训,以指导新的贡献者,所以这不一定是一个项目可以在一夜之间完成的事情。
另一方面,有像 Blender、Let’s Encrypt、Inkscape 和 Signal 这样的项目。相对于这些项目的用户数量(通常以百万计),他们的贡献者很少(不超过几百人)。吸引更多的贡献者可能是这些大型项目的一个目标,但它可能比提供社区、财务独立、扩大基础设施或关键开发的合同等项目的优先级低。
通常,关于 FOSS 可持续性的讨论最终都是以财务状况的好坏来形容,但正如你从上面的例子中可以看到的那样,这并不是那么简单。维护者支付一定的报酬是很好的出发点,但是如果维护者仅仅只是在为基本的项目和社区维护而拼命工作的话,这对项目的可持续发展是没有任何帮助的。
四大问题
事实上,经过对许多项目的仔细检查,可能会发现它们的可持续发展之路涉及到人员和财务要素的结合,需要加以平衡和优先考虑。这种检查本身可能是一个困难的过程,但如果项目社区通过自由和开放源码软件可持续发展的四大问题来进行检查,就会变得相对容易一些。
项目现在在哪里?项目现在的真实状态是什么?它的痛点和瓶颈是什么?有多少贡献者,他们的感受如何?项目背负着怎样的技术债务,包括文档、用户体验、安全和可访问性等重要但经常被忽视的东西?
项目想要达到的目标是什么?每个项目维护者的脑海中都有一幅”有一天。…..如果。….. “的项目图片。与社区分享这些图片——无论它们现在看起来多么不切实际。进行公开对话,将所有这些图片凝聚成一个共享的图像,可以作为”我们希望项目长大后是什么”的答案。这个形象并不是现实,可能几年内还不会成为现实,但它可以让社区朝着一个共同的目标团结起来,并帮助设定一个方向,以更好地确保项目以可持续的方式发展。
项目如何从现在的位置发展到我们希望的位置?这就是优先级和平衡的作用。你可能很熟悉为软件开发创建一个路线图,列出要做的功能计划和顺序。在回答这个问题时,你正在创建项目开发的路线图。”核心贡献者数量翻倍”是该路线图的一个好功能,但它可能有”增加贡献者文档”和 “增加测试覆盖率”的前提条件和依赖性。同样,”每年的捐款达到25000美元”可以帮助支付扩展基础设施的费用,但它有自己对”创建一个非营利组织”或”找到一个财政赞助商”的依赖性,因为管理这笔钱和涉及的税收不是一件小事。就像软件一样,提前考虑好这些依赖性可以让项目开发减少挫折感,提高成功率。
项目如何保持在我们想要的地方?最后,这就是可持续性问题。如果不回答前面三个问题,你就无法回答这一个问题,即项目如何在不影响未来需求的情况下满足现在的需求。值得庆幸的是,在回答前三个问题的过程中,大多数项目发现他们已经在逐步解决这个问题。回答这个问题就变成了坐下来收集所有现有的想法,与社区分享,并定期重新审视它们,以确保项目仍在朝着可持续发展的方向前进。
规划
我们现在在哪里,我们要去哪里,我们将如何到达那里,以及我们将如何保持在那里?能够回答这些问题可以使项目和社区更强大、更加具有可持续性。
回答这些问题需要多长时间,这在很大程度上取决于项目、需求和文化。有些人会对更敏捷的东西感到舒服,制定最小可行的计划,然后定期对它们进行迭代。其他人可能更喜欢瀑布式的方法,提出一个详细的路线图来打动潜在的赞助商和贡献者。唯一错误的方法是根本不做,错误地认为项目的可持续性是可以推迟到以后的事情
开源项目可持续发展的实践指南
一、如何回答四大问题
1.1 问题一:项目现在在哪里
要准确回答这个问题,需要进行全面的项目评估:
- 代码质量:代码审查、技术债务评估
- 测试覆盖率:单元测试、集成测试的覆盖情况
- 文档完整性:API文档、用户文档、贡献指南
- 安全性:已知漏洞、安全扫描结果
- 贡献者数量:活跃贡献者、核心维护者
- 社区活跃度:Issue响应时间、PR合并速度
- 用户反馈:用户满意度、问题报告频率
- 社区健康度:新贡献者加入率、贡献者留存率
- 资金状况:资金来源、资金使用情况
- 基础设施:服务器、CI/CD、监控系统
- 人力资源:维护者时间投入、技能匹配度
1.2 问题二:项目想要达到的目标是什么
设定清晰的目标需要:
- 发布重要版本
- 建立社区治理机制
- 获得资金支持
- 扩大用户群体
- 成为领域内的标准
- 建立可持续的商业模式
- 形成活跃的社区生态
- 影响行业发展
1.3 问题三:项目如何从现在的位置发展到希望的位置
制定实施路线图:
- 使用MoSCoW方法:Must have、Should have、Could have、Won’t have
- 考虑依赖关系:哪些任务必须先完成
- 评估影响:哪些任务能带来最大价值
- 人力分配:核心维护者的时间分配
- 资金规划:预算分配和使用计划
- 工具选择:选择适合项目的工具和平台
- 设定可衡量的里程碑
- 定期回顾和调整
- 庆祝达成的重要节点
1.4 问题四:项目如何保持在我们想要的地方
建立持续改进机制:
- 代码质量指标:代码复杂度、测试覆盖率
- 社区健康指标:贡献者数量、Issue解决时间
- 项目活跃度:提交频率、版本发布频率
- 用户满意度:用户反馈、采用率
- 月度回顾:检查短期目标进展
- 季度回顾:评估中期目标
- 年度回顾:审视长期愿景
- 根据反馈调整策略
- 学习其他项目的成功经验
- 适应技术和市场变化
二、可持续发展的关键要素
1. 社区建设
- 清晰的贡献指南
- 友好的社区氛围
- 新手友好的任务标签
- 导师制度
2. 资金可持续性
3. 技术可持续性
4. 文档和知识管理
三、常见挑战和解决方案
3.1 挑战1:维护者倦怠
- 建立维护者轮换机制
- 培养新的核心维护者
- 合理分配工作量
- 提供心理支持
3.2 挑战2:资金不足
- 申请基金会资助
- 开展众筹活动
- 提供付费服务
- 建立赞助计划
3.3 挑战3:技术债务积累
3.4 挑战4:社区参与度低
- 组织线上活动
- 提供新手任务
- 改进文档质量
- 建立社区奖励机制
四、成功案例学习
4.1 案例1:Node.js
Node.js通过建立Node.js基金会,实现了从个人项目到企业级项目的转变,确保了项目的长期可持续发展。
4.2 案例2:Let’s Encrypt
1
| Let's Encrypt通过非营利组织模式,获得了广泛的企业支持,为全球提供了免费的SSL证书服务。
|
4.3 案例3:Blender
Blender通过Blender基金会和众筹模式,实现了从商业软件到开源软件的转变,并持续发展壮大。
五、总结
开源项目的可持续发展不是一蹴而就的,需要持续的努力和投入。通过回答四大问题,制定清晰的路线图,建立可持续的机制,开源项目可以实现长期的成功。
记住,可持续发展是一个过程,而不是一个结果。重要的是开始行动,持续改进,与社区一起成长。
本文标题: 开源项目的可持续发展
发布时间: 2021年03月01日 00:00
最后更新: 2025年12月30日 08:54
原始链接: https://haoxiang.eu.org/b4a79028/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!