first-contributions 实战指南非程序员也能完成的 17 种开源贡献方式【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions本文基于 first-contributions 仓库中的法语文档 Ce quun non programmeur peut faire英文原版见 Things a non Programmer can do系统梳理“不会写代码”或编程经验不多的参与者如何在开源项目中找到真实、可落地的贡献切入点。读完本文你将掌握从“倾听项目需求”到“清理工单、补测试、写文档、建设社区”的完整参与路径并知道如何在 first-contributions 这个入门仓库中亲手走通标准贡献流程。一、为什么“先听”比“先说”更重要文档开篇即给出一个核心判断加入一个开源团队本质上是加入一群人。走进一个项目就宣称“我认为这个项目应该往这个方向发展”通常不会受欢迎除非项目特别小型或特别包容成熟项目很难接纳这种姿态。倾听是了解项目真正需要什么的最佳方式。文档把倾听具体化为三种低成本动作1. 加入邮件列表Sabonner à une liste de diffusion对许多项目而言邮件列表是开发沟通的主渠道。大型项目的列表数量往往不少——文档以 PostgreSQL 为例其列表页面提供多达 12 个面向用户的列表和 6 个开发者列表。建议的切入方式是先订阅主用户列表和核心开发者列表开始“只听不说”。2. 跟踪博客与 Planet 聚合站Suivre un blog核心开发者维护的博客通常会透露未来版本的规划与实现路径。如果项目存在 planet 聚合站点GNOME、MySQL 等都有可以优先从那里获取多来源资讯找不到时直接在搜索引擎中检索“planet 项目名”即可。3. 加入 IRC 频道Rejoindre un canal IRC很多开源项目设有专门的 IRC 频道开发者与用户在其中讨论问题与开发进展。文档建议先到项目官网确认频道的名称与所属 IRC 网络再加入。这三个动作的共同点都是先成为信息接收者积累对项目的上下文理解为后面的实质性贡献工单、代码、文档、社区打基础。二、从工单系统切入不写代码也能推动项目代码是开源项目的心脏但“写代码”绝不是唯一贡献方式。代码及其周边系统的维护往往在追逐新功能和修 bug 的匆忙中被忽视——而这恰恰是新人“迈进项目的第一步”最容易上手的区域。大多数项目都有公开可见的工单系统trouble ticket system从项目主页首页链接可达且被写入文档。它是用户与开发者之间的主要沟通渠道。保持工单系统的整洁本身就是对项目的巨大帮助你有时需要获得工单系统的额外权限而大多数项目负责人在你表示愿意帮忙清理工单时都很乐意授予。4. 诊断与分诊 BugDiagnostiquer un boguebug 常常被报告得很糟糕。诊断和分诊能为开发者省下大量“弄清问题细节”的体力活。文档给出了具体的分诊动作用户报告“我做 X 时软件不工作”你要花时间还原问题的具体细节是否可复现能否创建一套步骤让问题反复出现能否缩小范围例如只发生在某个浏览器而不在另一个浏览器上发生只发生在某个发行版而不在另一个发行版上发生。即使你最终不知道问题根源你为“缩小发生条件”付出的努力也会让后续修复者更容易下手。无论发现什么都写回工单系统让所有人都能看到。5. 关闭已修复的 BugFermer les bogues corrigés常见问题bug 已在代码库中修复但对应工单从未更新。清理这些“垃圾”耗时却对全项目有价值。文档给出可复制的操作流程先查询超过一年的工单确认 bug 是否仍然存在核对项目版本变更日志changelog确认该 bug 是否已修复若已知已修复在工单中注明版本号并关闭用软件最新版本尝试复现无法复现在工单中记录并关闭仍然存在则同样记录并保持开启。这套流程对参与者编程技能零要求但对项目信息卫生的价值极高非常适合作为非程序员的第一次实践。三、和代码打交道不同经验水平的程序员都能参与文档明确指出各级别的程序员都能为项目代码做贡献不要认为只有“编码天才”才能做出真实贡献。在动手之前有一条重要前提先调查该项目接收贡献代码的方式。每个项目都有自己的工作流在提交代码之前先问清楚流程。文档列举了三种典型光谱PostgreSQL 式的严格流程代码修改以补丁patch形式发送到邮件列表核心开发者逐一审视每个细节Parrot 式的宽松流程获取代码库提交权限commit privileges相对容易基于 GitHub 的流程可能使用 pull request 功能来合并代码——first-contributions 本身就是这一模式的教材。first-contributions 仓库的 README 正是“先问清项目流程”之后得到的标准答案fork 仓库 →git clone克隆到你的机器 → 用git switch -c your-new-branch-name创建分支旧版 git 用git checkout -b→ 修改 Contributors.md在文件中间任意位置加一行你的名字→git add Contributors.md→git commit -m Add your-name to Contributors list→git push -u origin your-branch-name→ 在仓库页面点击Compare pull request提交 PR。这条流程与文档中“每个项目都有自己的工作流”的说法一一对应是理解“项目工作流差异”的最佳样本。此外文档对改代码的参与者提出了明确的社区礼仪保持与现有代码库一致的代码风格。你不一定喜欢它的括号风格或缩进空格处理但提交一个不符合现有标准的改动等同于说“我不喜欢你们的风格我认为我的更好所以你们应该照我的做”。在动手修代码之前建议配合仓库中的进阶 Git 工作流文档使用例如 为什么使用分支、保持你的 fork 与本仓库同步 和 解决合并冲突。6. 测试 Beta 版或候选发布版Tester une version bêta ou une release candidate任何设计为多平台运行的项目都可能有各种可移植性问题。发布临近、beta 或 release candidate 发布时项目负责人希望它在大量不同人、大量不同平台上被测试——你可以成为其中之一。通常你只需要下载、编译、测试但如果你运行在少见的发行版或硬件上对项目的价值会非常大。仅仅回报“在你的平台上编译和测试通过了”就能让负责人对新版本更有底气。7. 修复 BugCorriger un bogue这是想接触代码的贡献者通常的起点文档给出了清晰步骤在工单系统里找一个听起来有意思的 bug尝试在代码中修复它在合适的地方在代码中记录这次修复给测试套件补一个测试覆盖你修复的那段代码——一些项目甚至强制要求 bug 修复必须附带测试在不熟悉的代码库中翻找时随手记笔记。即使最终没修好也把你在尝试修复过程中发现的线索写回工单——你的发现会帮助后来者。8. 编写测试Écrire un test“很难想象有一套测试套件是不需要更多测试的。”文档建议用测试覆盖率工具定位未被测试覆盖的区域C 语言项目可用gcovPerl 项目可用Devel::Cover然后为这些区域补充测试。9. 消除编译器警告Faire taire un avertissement du compilateur许多 C 系项目的构建过程会不断刷出零星的编译器警告。这些警告通常不是真问题但会“看起来像问题”警告太多会让编译器像在“喊狼来了”cry wolf。处理方式先检查代码是否真的藏着 bug若没有修改源码让警告消失从而掩盖这些假阳性为后续真警告腾出注意力。10. 添加注释Ajouter un commentaire翻代码时你可能会发现一些令人困惑的地方。如果你被绕晕了别人大概率也会被。把这些地方在代码里写清楚然后提交一个补丁即可——这是门槛最低的代码类贡献之一。四、和文档打交道项目最常被忽视的部分文档指出文档通常是项目里“待遇最差”的部分而且常常是站在“熟悉项目的人”的视角写的而不是“刚入门的人”的视角。如果你曾读某项目文档时心想“这本手册好像默认我已经会用了”你就理解了问题所在——一双全新的眼睛往往能指出圈内人注意不到的文档缺陷。而 first-contributions 仓库本身就是一个绝佳的证据其docs/目录下汇集了 Git 工作流教程、CLI 工具教程、GUI 工具教程和大量语言翻译这些内容几乎全部来自社区贡献而非专职文档团队。11. 创建使用示例Create an example文档强调“没有任何项目会因为示例太多而坏事”。无论是 Web API、例程库、GIMP 这样的 GUI 应用还是命令行工具一个正确使用示例都比几十页文档解释得更清楚、更快对 API 或库写一个使用该工具的示例程序甚至可以从你自己写过的代码中裁剪出最小必要版本对工具类软件展示你在日常真实场景中如何使用它如果你是视觉型学习者考虑为关键流程例如如何安装应用制作一段屏幕录制。五、和社区打交道让开源运转的是人“开源只有一部分是关于代码的是社区让开源运转起来。”文档在这一部分列出了最后几类贡献方式。12. 回答他人的问题Répondre à une question帮助他人是建设社区最好的方式。回答一个问题——尤其是刚入门者的问题——对项目成长和保持活力至关重要。你花在帮助新手上的时间即使对方问的完全可以甩回一句“RTFM”先读文档最终都会以“多一位活跃社区成员”的形式回报给你。每个人都有自己的起点项目要保持活力就需要人员持续流入。13. 撰写博客文章Rédiger un article de blog如果你有博客就写下你使用该项目的经历讲一个你遇到的问题以及你如何解决它。这是一石二鸟的贡献——既让你周围的人持续记住这个项目又为将来遇到同样问题、在网络上搜索答案的人留下记录。文档还补了一句很实际的话一篇记录技术冒险的博客也是你下一次找相关工作时展示真实项目经验的有力材料。14. 改进项目网站Améliorer un site web如果你有网页设计能力并愿意改善项目网站——也就是改善项目的公众形象——那也是时间花在了刀刃上。项目也许需要一次视觉改造也许需要一个标志性的 logo。这类技能常常是社区所欠缺的文档作者直言自己非常希望有人帮他的项目网站做平面设计。15. 撰写技术文档Rédiger de la documentation technique如果你能写出“一个应用或软件如何工作”的文字就可以为它撰写技术文档尤其是那些希望更新、重排、扩充或从零创建面向大众的技术文档的开源项目。尽量用平实的语言写越平实越好。最棒的一点是写技术文档不需要你是程序员。文档在此处还分享了一个“倾听身边人、识别迫切需求”的真实案例Parrot 项目的开发者邮件列表决定改用 GitHub 作为工单系统、弃用旧的 Trac 部署。有人反对因为无法把旧工单转换过去。争论一天之后文档作者主动说“那我写一个转换器”——他随后花了时间为 450 多个工单编写了转换程序使工单历史无一丢失。这次贡献既让他参与进来也让核心开发者得以继续专注于 Parrot 本身的开发。这个案例正是全文方法论的缩影先倾听、识别真实缺口、再用自己的技能补位。值得一提的是first-contributions 仓库的目录结构本身就印证了“文档与本地化贡献”的规模docs/translations/ 下汇集了 100 余个语言的 README 翻译如 法语版 READMEdocs/additional-material/translations/下则按语言目录存放着补充材料的各语言版本——本文对应的法语文档正是其中之一。16. 教学与帮助他人Enseigner et aider les autres了解一个主题最好的方式是尝试教它。最好的老师能用简单例子解释复杂事物所以想成为最好的学习者就先尝试做最好的老师。教别人会让你对自己更有信心也让你在专业上获得更好的技能与知识。当你从某人那里得到帮助时别把它藏着——分享出去让世界变得更宜居一点。六、在 first-contributions 中走通你的第一次贡献把上述方法论落到本仓库最直接的实践就是完成 README 中的标准工作流与 开源贡献入门指南 中“先选对项目、理解工作流、从小处着手”的建议一致Fork在仓库页面点击 Fork在你账号下创建副本Clonegit clone你 fork 的仓库地址Create a branchgit switch -c your-new-branch-name旧版本 git 用git checkout -b修改并提交在 Contributors.md 中间任意位置加入你的名字然后git add Contributors.md、git commit -m Add your-name to Contributors list推送git push -u origin your-branch-name提交 PR点击Compare pull request按钮提交等待维护者合并。完成后你就走完了贡献者最常遇到的 fork → clone → edit → pull request 标准流程。若想把工作流练得更深仓库提供了成体系的补充材料入口 additional-material覆盖提交修正、分支重置、冲突解决、凭据存储等场景。而如果你不写代码本仓库同样给出了大量“非代码贡献位”各语言的文档翻译如 additional-material 法语译文目录 所在的docs/additional-material/translations/结构和 100 语言的 README 翻译矩阵都是可以直接认领的文档贡献类型。结语这份文档给出的 17 条路径可以归纳为四个同心圆倾听邮件列表 / 博客 / IRC→ 工单诊断、清理→ 代码与文档测试 beta、修 bug、补测试、消警告、加注释、写示例、写文档→ 社区答疑、博客、网站、教学。它传递的核心信息只有一句话开源贡献的大门远不止“提交代码”一扇——先听懂项目的需要再用你现有的任何技能哪怕是耐心、写作或设计去补位你就已经是这个项目真正的贡献者了。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考