ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

从零启动你的第一个开源项目:opensource.guide 启动指南详解与发布检查清单

从零启动你的第一个开源项目:opensource.guide 启动指南详解与发布检查清单 从零启动你的第一个开源项目opensource.guide 启动指南详解与发布检查清单【免费下载链接】opensource.guide Community guides for open source creators项目地址: https://gitcode.com/gh_mirrors/op/opensource.guide本篇技术指南以 opensource.guide 仓库中的 启动开源项目_articles/starting-a-project.md 为核心脉络该文在仓库中提供包括 印地语版_articles/hi/starting-a-project.md 在内的 20 余种语言译本面向所有准备把代码开源的开发者、团队与公司。读完本文你将完整掌握开源的准确定义、决定是否开源的思考框架、启动项目必须补齐的四件套文档许可证、README、CONTRIBUTING、行为准则、命名与品牌策略以及一份可直接勾选执行的发布前检查清单文中的每个要点都能在本仓库一个真实运行的开源项目的文件与源码中找到对应实例。先搞懂开源的是什么与为什么开源的确切定义当一个项目是开源的意味着任何人都可以出于任何目的自由地使用、研究、修改和分发你的项目。这些许可是通过开源许可证授予的而不是靠口头承诺——这是开源与把代码公开之间最本质的差别关于这一点仓库的 法律篇_articles/legal.md 有专门论述GitHub 上的公开仓库默认受平台服务条款约束只允许他人查看和 fork公开并不等于开源只有加上许可证才构成法律意义上的开源授权。开源之所以强大在于它降低了采用与协作的门槛人们可以更快地传播和改进项目同时相对于闭源软件用户获得了掌控自身计算能力的可能。例如一家使用开源软件的企业可以选择雇佣工程师为软件做定制化改进而不是只能被动接受闭源厂商的产品决策。需要澄清一个术语自由软件Free Software与开源软件Open Source Software指向的是同一类项目集合有时二者合称为 free and open source softwareFOSS或 free, libre and open source softwareFLOSS。其中free和libre指的是自由而不是免费——这一点在下一节展开。人们为什么要把工作开源开源动机多种多样原文档总结了三大典型理由也是判断要不要开源的出发点协作Collaboration开源项目可以接受世界上任何人的修改。一个项目从个人作品变成社区共同维护的产物正是开源最具吸引力的地方。采用与再创作Adoption and remixing几乎任何人都能以几乎任何目的使用开源项目甚至用它构建出全新的东西——许多知名项目本身就是从既有开源项目的 fork 起步的。透明性Transparency任何人都可以审查开源项目中的错误或不一致之处。这对政府、银行、医疗等受监管行业以及安全类软件尤为重要。开源也不仅限于软件从数据集到书籍任何创作都可以开源。本仓库本身就是例证——它把如何运营开源项目这一整套方法论以 CC-BY-4.0 许可证开源见 LICENSE 与 notices.md任何人都可以在注明出处的前提下复用其中的内容。开源不等于免费开源最大的吸引力之一是不要钱但免费只是开源整体价值的副产品而不是开源定义的一部分。因为开源许可证要求任何人几乎可以为任何目的使用、修改和分享项目项目本身自然会趋近于免费——如果使用需要付费任何人都可以合法地复制一份免费版本使用。因此在遵守开源官方定义的前提下仍存在通过双重许可dual licensing或限制高级功能等方式间接向开源项目收费的合法路径。是否要启动自己的开源项目原文档给出的答案是明确的要。无论结果如何启动自己的项目都是学习开源如何运作的最佳方式。如果你从未开源过项目担心别人会怎么评价或根本没人关注这很正常——开源工作与写作、绘画一样属于创造性活动分享作品虽有压力但变好的唯一途径就是练习哪怕暂时没有观众。设定你的目标目标能帮你判断该做什么、该拒绝什么、以及哪里需要别人帮助。先问自己我为什么要开源这个项目这个问题没有标准答案你可以为一个项目设定多个目标也可以为不同项目设定不同目标。目标直接决定投入方向原文档给出了两段对比鲜明的建议如果你的唯一目标是展示作品你甚至可能不想要贡献——那就直接在 README 里写明如果你希望吸引贡献者就要在清晰文档和让新人感到被欢迎上持续投入。随着项目成长社区对你的需求将远超代码本身回复 issue、评审代码、宣传项目都是开源项目中的重要工作。作为维护者你要么亲自承担要么找到帮手。如果你是在公司内部推动项目开源务必确认项目拥有持续运转所需的内部资源明确发布后由谁负责维护、如何与社区分担这些任务如果需要专门的推广、运营和运维预算或人力应尽早启动沟通。同时管理流程要考虑社区贡献者的能力与贡献——不要害怕让非公司雇员的活跃贡献者参与项目关键环节。先从向已有项目贡献开始如果你的目标是学习与他人协作、理解开源如何运作不妨先考虑向一个你已经在使用且喜爱的现有项目贡献代码——哪怕只是修正文档中的错别字。如何以贡献者身份起步可参考仓库中的 如何参与贡献篇_articles/how-to-contribute.md。启动时机与必备文档四件套何时开源你的项目开源的时机没有标准答案你可以开源一个想法、一项进行中的工作也可以在闭源多年后开放。一般来说当你愿意让别人查看你的工作并给出反馈时就是合适的时机。每个项目都必须有的四份文档无论你在哪个阶段开源原文档强调以下四个组件缺一不可开源许可证LICENSEREADME贡献指南CONTRIBUTING行为准则CODE_OF_CONDUCT作为维护者这四份文档能帮你沟通期望、管理贡献并保护每个人的合法权利包括你自己的。把它们以官方推荐的文件名放在仓库根目录托管平台才能自动识别并向读者展示。这一要求在本仓库中得到完整落地——请直接对照根目录查看这份标准答案 LICENSECC-BY-4.0、 README.md、 CONTRIBUTING.md、 CODE_OF_CONDUCT.md。此外仓库还额外提供了 notices.md 承载完整法律免责声明、署名要求与第三方许可以及 docs/styleguide.md 定义统一的写作风格这些都是超出最小四件套的进阶实践。选择开源许可证开源许可证保证他人可以在不受追究的情况下使用、复制、修改并向你的项目回馈贡献同时保护你免于棘手的法律纠纷。启动开源项目时你必须包含一份许可证。好消息是你无需从零起草——把现成许可证的全文复制进仓库即可通常一分钟就能完成。三种主流许可证的选择逻辑原文档指出 MIT、Apache 2.0、GPLv3 是最流行的三种选择此处仅引用其名称详情可结合 法律篇_articles/legal.md 理解。从仓库法律篇的论述可以提炼出各自的适用场景许可证核心特征适合场景MIT简短、易理解允许任何人做任何事只需保留许可证副本与版权声明从零开始的默认选择希望被大量其他项目作为依赖采用Apache 2.0在宽松许可之外附带明确的专利授权条款希望吸引大型企业采用企业往往看重专利保护GPLv3强 copyleft著佐权衍生作品必须以相同或兼容许可证发布希望贡献者的代码不被闭源软件使用AGPLv3 还覆盖 SaaS 服务场景依赖项是你选型时必须考虑的因素采用 MIT、Apache 2.0、ISC、BSD 等宽松许可证的依赖允许你按任何方式为自己的项目选证而包含 GPLv2/GPLv3/AGPLv3 等强 copyleft 依赖时你的项目必须选用相同或兼容的许可证MPL 2.0、LGPL 等弱 copyleft 依赖则可在遵守其附加规则的前提下用于任意许可证项目。此外公司可能有自己的开源许可政策例如强制宽松许可以便与专有产品集成务必与法务部门确认。如果拿不准从 MIT 开始通常不会错——它足够短、足够宽松将来需要时也可以再更换。在 GitHub 创建仓库时直接选择当你新建仓库时托管平台会提供选择许可证的选项。下图即新建仓库页面中的许可证选择入口当前值为 None即尚未选择选择并包含一份开源许可证才使你的 GitHub 项目真正成为开源项目。更多法律细节可参考 法律篇_articles/legal.md。编写 READMEREADME 的作用远不止说明怎么用——它还回答这个项目为什么重要以及用户能拿它做什么。原文档建议在 README 中回答四个问题这个项目是做什么的为什么这个项目有用我该如何开始如果需要我还能从哪里获得更多帮助你还可以用 README 承载更多信息你如何处理贡献、项目的目标是什么、许可证与署名说明。如果你不希望接受贡献或项目尚未准备好投入生产请把这些明确写下来——模糊的期望比坦诚的声明更容易劝退用户。优秀的文档意味着更多用户、更少的支持请求和更多贡献者。记住你的读者不是你自己进入项目的可能是经验背景完全不同的人。原文还给出了一个实用观点很多人因为项目还不完整或不想要贡献而回避写 README——而这些恰恰是更应该写 README 的理由因为 README 正是用来管理这些预期的。在根目录放置 README 后托管平台会自动将其展示在仓库首页——本仓库的 README.md 就是一个简洁范本一句话说明项目定位、背景、贡献方式、许可证与致谢信息密度高且便于新访客快速建立认知。编写贡献指南CONTRIBUTINGCONTRIBUTING 文件告诉受众如何参与你的项目。原文档给出的建议内容包括如何提交 bug 报告可借助 issue 与 pull request 模板如何建议新功能如何搭建环境并运行测试除技术细节外CONTRIBUTING 还是传达贡献期望的窗口你正在寻找哪些类型的贡献项目的路线图或愿景贡献者应如何或不应如何联系你语气与具体建议同样重要使用温暖友好的语气并给出具体的贡献切入点例如写文档、做网站能极大帮助新人感到被欢迎并乐于参与。原文引用了一个优秀范例的开场白首先感谢你考虑为该项目做贡献。正是像你这样的人让这个工具变得如此出色。在项目最早期CONTRIBUTING 可以很简单——但至少要说明如何报告 bug、提出 issue以及贡献所需的技术要求如测试。随时间推移你可以把高频 FAQ 沉淀进去减少重复回答问题的时间。记得从 README 链接到 CONTRIBUTING并把它放在仓库中——当贡献者创建 issue 或打开 PR 时托管平台会自动链接到你的文件正如下图中顶部黄色提示条所示仓库自身的 CONTRIBUTING.md 是这份建议的完整落地它包含我们寻找的贡献类型基本规则与期望如何贡献风格指南环境搭建等章节并把 docs/styleguide.md 作为写作规范引用。更进一步仓库还通过 test/ 目录下的 lint 与 prose 测试配合 test/dictionary.txt用自动化方式强制约束文档风格——这正是把社区期望写进文件并用机器检查的高阶实践。建立行为准则Code of Conduct最后行为准则为项目参与者设定行为底线尤其当你为社区或公司启动项目时价值更大——它赋予你促进健康、建设性社区行为的权力从而降低作为维护者的压力。除了说明你期望参与者如何表现一份完整的行为准则还应描述这些期望适用于谁、何时适用、发生违规时该怎么办、如何举报违规。与许可证类似行为准则也有成熟的现成标准不必自己起草。Contributor Covenant是即插即用的行为准则范本被包括 Kubernetes、Rails、Swift 在内的数万个开源项目采用本仓库的 CODE_OF_CONDUCT.md 即基于 Contributor Covenant 1.4 版改编。无论采用哪个文本你都必须准备好在必要时执行它。将准则文本直接粘贴到仓库根目录的 CODE_OF_CONDUCT 文件中并在 README 中链接它。可进一步参考仓库的 行为准则篇_articles/code-of-conduct.md该文详细讨论了准则的适用范围界定与执行策略。命名与品牌品牌不止是醒目的 Logo 或朗朗上口的名字更是你如何谈论项目以及你的信息触达谁。选择正确的名字挑选一个易记、最好能让人大致猜出项目用途的名字原文档以 监控崩溃报告的 Sentry、快速简单的 Ruby Web 服务器 Thin 为例。如果你是在既有项目之上构建用对方的名字作前缀可以更清晰地说明定位例如把window.fetch带到 Node.js 的 node-fetch。把清晰置于首位双关语虽有趣但某些笑点在其他文化或不同背景的人那里可能不成立——何况你的潜在用户中可能有企业员工他们不想在向同事介绍项目时感到尴尬。避免重名冲突检索是否有同名开源项目尤其是共享同一语言或生态时重名会严重混淆受众如果计划为项目申请网站、社交账号等资产尽早确认并现在就把名字预留确保名字不侵犯任何商标——否则公司可能要求你下架项目甚至提起诉讼得不偿失可在 WIPO 全球品牌数据库中核查公司场景下可请法务团队协助见 法律篇_articles/legal.md最后搜索一下你的项目名用户能否轻松找到你搜索结果里是否出现了你不想让他们看到的内容写作与代码风格同样是品牌项目一生中你会写大量文字README、教程、社区文档、issue 回复甚至新闻通讯。无论正式文档还是随意邮件写作风格都是项目品牌的一部分。使用温暖、包容的语言例如用他们指代单数人称并坚持简单语言——因为许多读者并非英语母语者。这一理念在本仓库得到制度化的体现站点内容被翻译为 20 余种语言见 _articles/ 下各语言目录与 _data/locales/ 的本地化配置正是让不同背景读者都能参与的实践。代码风格同样塑造品牌。启动阶段不必强制编写风格指南但你应预判写作与编码风格会吸引或劝退哪类人——项目最早的阶段正是你为未来立下基调的机会。发布前检查清单原文档在结尾给出了完整的发布前检查清单共 12 项覆盖文档、代码、人三个维度。逐项打勾后就可以点击publish将私有仓库转为公开正式发布你的项目文档Documentation项目包含带开源许可证的 LICENSE 文件项目包含基础文档README、CONTRIBUTING、CODE_OF_CONDUCT名字易记、能大致体现项目用途且不与现有项目冲突、不侵犯商标issue 队列保持更新issue 清晰组织并打上标签代码Code项目使用一致的代码约定函数/方法/变量命名清晰代码注释清晰记录了意图与边界情况修订历史、issue 或 PR 中没有敏感内容如密码或其它非公开信息人People如果你是个人已与法务部门沟通并/或理解所在公司的知识产权与开源政策如果你是某公司的雇员如果你是企业或组织已与你的法务部门沟通有用于宣布和推广项目的营销计划有人承诺管理社区互动回复 issue、评审并合并 PR至少两人拥有项目的管理员访问权限附这个指南站点本身就是一份可运行的开源项目范本如需观摩四件套 发布后运营的完整形态本仓库即是最佳样例它由 Jekyll 驱动见 _config.yml 中的 collections 配置根目录完整包含 LICENSE、README.md、CONTRIBUTING.md、CODE_OF_CONDUCT.md 与 notices.md并通过 Rakefile 与 test/ 目录实现文档质量自动校验。在本地运行该站点只需依次执行需 Ruby、Bundler 与 npm 环境./script/bootstrap ./script/server然后在浏览器打开本地地址即可预览。从选择许可证到发布检查清单再到用自动化测试约束文档风格这篇文章中介绍的每一条实践都在这份真实开源项目中留有可对照的证据——这也是把文档建议落到自己项目时最值得参照的样板。结语祝贺你准备开源自己的第一个项目。无论最终结果如何在公开环境中工作本身就是献给社区的礼物每一次提交、每一条评论、每一个 pull request都在为自己和他人创造学习与成长的机会。按照本文的路线图——理解开源本质、明确目标、补齐四件套文档、谨慎命名、通过 12 项检查清单——你的项目将以一个专业、可维护、对新人友好的姿态正式启航。【免费下载链接】opensource.guide Community guides for open source creators项目地址: https://gitcode.com/gh_mirrors/op/opensource.guide创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表