9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

开源成功十法则

  • 2015-10-09
  • 本文字数:1504 字

    阅读完需:约 5 分钟

每个人都想要,不少人都在试,但是创造它的过程,说起来却都是泪。我说的是自由软件,又叫开源软件(译者注:本文重点不是辨析自由软件和开源软件的概念,作者如此说,姑且认为两者是一回事)。今天我要用十条行之有效的法则,来谈谈我三十年的写代码经验。

  1. 先有人,后有代码这是一条黄金定律,Isabel Drost-Fromm 教我的。致力于社区建设,而不是软件本身。没有社区,你的代码解决的可能是错误的问题。这些代码会被废弃、忽略,最终消亡。先吸引人才,再给他们协作的空间。给他们有挑战的工作。不要自己写代码。
  2. 采用强制开源的许可证强制开源(share-alike)的许可证是开源软件的保险带。别夸口说你不需要,总有一天你会被打脸,遍体鳞伤。不要被打脸,使用强制开源的许可证。如果 GPL/LGPL 对你来说政治意味太浓,那么用 MPLv2。
  3. 别指望达成共识做决定前寻求共识,就好像指望能找到理想的人生伴侣一样。有点不切实际。Github 抛弃了共识,他们设计了 fork/pull-request 流程,所以 2015 年你已经没什么借口了。你接受补丁就可以了,就像维基百科会接受增补。先合并代码,再修复问题,最后再讨论。把所有开发工作都放在主分支上。不要让用户等。这样做你才能得到事实上的共识。
  4. 先问题后方案让你自己和你队友们关注问题,而不是功能。每个补丁都必须解决一个实在的问题。欢迎实验性代码,欢迎异想天开的创意。但不要让这些东西过度膨胀。收集好的方案,抛弃坏的。允许失败,各个层面上的失败。这是成长的必经之路。
  5. 先定义后实现积极地为 API 和协议的定义写文档并进行测试。用持续集成来测试公开的 API 和协议。代码覆盖率不重要,代码文档也不重要。重要的是,定义好的东西代码要去实现,并且实现得要好。
  6. 内部挖潜让贡献者(contributor)成为维护者(maintainer),让维护者成为负责人(owner)。平稳地、放松地做这件事,别害怕。保留权力把表现糟糕的人踢出去。鼓励人们创立他们自己的项目,尤其是基于已有的项目开发的新项目,或者与已有项目构成竞争关系的项目。日常表现不好的人,卸下他们的权力。
  7. 写下规则你有了自己的规则,就要写下来,这样大家才能知道。实际上都不用写了,借用我们为 ZeroMQ 设计的 C4.1 规则就行,如果你愿意,也可以简化这些规则。
  8. 公平地执行规则你的权力应该用来执行规则,而不是威逼别人认同项目的愿景。最重要的是,你自己要遵守规则。有这么一小撮维护者,会仅仅因为他们不喜欢一个补丁而枪毙它,而你如果自己不遵守规则,就会助长这类小团体,没什么比这更糟糕了。好吧,这么说有点夸张,更糟糕的事情多着呢。但是这类小团体会对项目造成危害。
  9. 细分项目力争建立一群小型、独立、自组织、互相竞争的小项目。不要搞大项目。这里说的“大项目”是指,有两到三个核心开发者的项目。不要用 submodules(译者注:git 的命令,用于指定外部项目的依赖性)之类的来指定依赖性。让别人自己选择想要集成的项目。这是基本的法则。
  10. 保持快乐的氛围也许你注意到,我并没有提及“创新”。如果要提,创新可能会排在 11 或 12 位。无论如何,你要为社区营造正向快乐的氛围。不要说某个问题愚蠢,不要说某个人愚蠢。社区总有一些人表现糟糕,即使规则很清楚也要违反。除了这些人,其他所有人都值得我们珍惜,我们应该像远道来访的客人一样对待他们。

本文是 pieterh 在其博客上发表的《Ten Rules for Open Source Success》一文的翻译,经作者许可分享至 InfoQ 中文站。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-09 19:002287
用户头像

发布了 77 篇内容, 共 39.4 次阅读, 收获喜欢 26 次。

关注

评论

发布
暂无评论
发现更多内容

Grok 虚拟陪伴很火,但你还可以造一个属于自己的丨社区来稿

声网

VMware ESXi 9.0.0.0100 macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

ES 踩坑记:Set Processor 字段更新引发的 _source 污染

极限实验室

easysearch

等保一体机适用场景与成本分析

等保测评

VMware ESXi 9.0.0.0100 macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版

sysin

esxi

NocoBase 本周更新汇总:优化及缺陷修复

NocoBase

开源 低代码 零代码 无代码 版本更新

繁花有声|涂鸦智能与阿里云一起,共同推动万物智能

科技热闻

繁花有声|蓝凌与阿里云一起,让AI时代的组织更智慧

科技热闻

大数据-44 Redis 慢查询日志详解与性能优化实战指南

武子康

Java redis 大数据 分布式

繁花有声|帆软与阿里云一起,用AI让数据成为生产力

科技热闻

MSRC安全事件响应流程构建指南

qife122

网络安全 安全事件响应

Web3 项目开发的技术难点

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

等保测评合规性审查:从流程到价值

等保测评

等保合规基础:从定义到实施的关键要点

等保测评

Web3 项目的外包开发验收

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

VMware ESXi 7.0U3w macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

VMware ESXi 8.0U2e macOS Unlocker & OEM BIOS 标准版和厂商定制版

sysin

esxi

告别提示词工程,「上下文工程」才是 AI Agent 的核心竞争力

Baihai IDP

程序员 AI LLM AI Agent 上下文工程

Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目”

Apache RocketMQ

阿里云 开源 RocketMQ 云原生 消息队列

VMware ESXi 8.0U3f macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

征程 6 | UCP 任务优先级/抢占简介与实操

地平线开发者

自动驾驶 算法工具链 地平线征程6

理想汽车智驾方案介绍专题 1 端到端+VLM 方案介绍

地平线开发者

自动驾驶 端到端 算法工具链 地平线征程6

动态写入Paimon表

Joseph295

繁花有声|高德与阿里云一起,开启智慧出行新范式

科技热闻

黄仁勋在北京链博会的演讲核心:AI变革性的到来

PowerVerse

烟草行业专卖人员画像与队伍考评系统上线运行

中烟创新

VMware ESXi 8.0U3f macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版

sysin

esxi

VMware ESXi 8.0U2e macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

Agno - 轻量级Python多智能体系统框架

qife122

人工智能 知识管理 Python框架

淘宝→拼多多/抖音/京东店铺迁移:API数据转换方案

tbapi

淘宝API 天猫API 淘宝商品详情API 天猫商品详情api

2个小时!我自己搭建了一套安全管理系统!

中烟创新

开源成功十法则_语言 & 开发_曹知渊_InfoQ精选文章