标签 开源项目 下的文章

使用这些步骤来为你的第一个或接下来的项目打下坚实的基础。

开源 是一个蓬勃发展且有益的生态系统,它通过分散模式和社区贡献开发的软件,公开解决社区和行业问题。

随着这个生态系统的爆炸式发展,许多开发者想要参与并且构建新的开源项目。问题是:如何成功实现这一目标呢?

这篇文章将会揭秘开源项目的生命周期与结构。给你一个对开源项目内部运作的概述,并根据我个人的经验,向你展示如何构建一个成功和可持续发展的项目。

对开源的简单概述

开源促进会 Open Source Initiative (OSI)提供了对“ 开源 Open Source ”的正式、详细的定义,但是维基百科提供了一个很好的总结:

开源软件是指根据许可证发布的计算机软件,版权持有人授予用户使用、研究、更改和向任何人、为了任何目的分发软件和它的源代码的权利。

开源软件通常在网络上有公开的代码,它由多人合作或一人开发。这就需要与来自不同地区、不同文化和不同技术背景的人合作,而且往往是远程合作。

开源项目的构成

就像人类的身体,一个开源项目由多个结构组成,这些结构构成了整个系统。我认为它们是两个分支:人员(微观)和文档(宏观)。

分支一:人员

通常,一个开源项目包括以下人群:

  • 创建者:创建项目的人
  • 维护者:积极管理整个项目的人
  • 贡献者:为项目做贡献的人(像你一样的人!)
  • 用户:使用这个项目的人,包括开发者和非技术客户
  • 工作组:将贡献者分成特定领域的小组,专注于围绕特定主题领域(如文档、指引、测试、DevOps、代码审查、性能、研究等)的集合。
  • 赞助人:为项目提供资金支持的人

当你准备构建一个新项目时,你需要考虑以上列表中的每一个群组。你对他们每个人有什么计划?

  • 对于维护者,请确定任用维护者的标准。通常,积极的贡献者就是最适合的维护者。
  • 对于用户和贡献者,你需要准备可靠的文档、引导流程和他们使用你的项目取得成功所需的一切。
  • 对于工作组,请确定你是否需要它们,以及你的项目将来如何有逻辑地拆分。
  • 最后,对于赞助人,你必须提供足够的数据和有关你项目的信息,以便他们选择赞助你。

你不必在你项目的起始阶段解决上面所有问题。然而,在早期阶段思考它们是很明智的,这样你就能打下正确的基础,确保未来的扩建项目能够站稳脚跟并取得成功。

分支二:文档

开源项目通常包括下列文档,通常为纯文本或 markdown 格式:

  • 许可证(License): 这份法律文件解释了如何以及在何种程度上可以自由使用、修改和共享本项目。OSI 网站上有 OSI 认可的许可证列表。如果没有明确的许可证,你的项目在法律上就不是开源的!
  • 行为准则:该文件概述了任何决定以任何方式参与项目的人的规则、规范、可接受做法和责任(包括当有人违反任何规则时会发生什么)。贡献者公约 是一个很好的示例,它是开源的(采用知识共享许可协议)。
  • 自述文件(README):这个文件向新用户介绍你的项目。在很多 Git 托管网站上,比如 GitLab、GitHub 和 Codeberg,自述文件会显示在仓库的初始文件列表下。这里通常会提供文档,以及其他必要文档的链接。
  • 文档(Documentation):这是一个包含所有本项目文件资源的文件或目录,包括指南、API 参考、教程等。
  • 贡献指南(Contributing):包含一份说明如何为项目做出贡献的文件,包括安装指南、配置等。
  • 安全(Security):包括一个解释如何提交漏洞报告或安全问题的文件。

此外,一个项目通常有用于议题、支持和协作的网页。

大致包括:

  • 议题或错误报告:用户可以报告错误的地方。该页面还为开发人员提供了一个地方,让他们可以分配自己的任务来修复一个或多个错误。
  • 拉取或合并请求:提供功能增强建议和错误解决方案的地方。这些补丁可以由任何人创建,由维护者审核,然后合并到项目代码中。
  • 讨论:维护者、贡献者和用户讨论开源项目的地方。它可以是一个专门的网站,也可以是协作编码网站中的一个论坛。

大多数项目还通过在线聊天的形式为社区成员之间的对话和互动提供交流渠道。

许可证

许可证 也许是创建开源项前需要考虑的最简单但也是最重要的标准。许可证定义了允许使用、修改和共享项目源代码和其他组件的条款和条件。

许可证包含大量的法律术语,很多人并不完全理解。我使用 choosealicense.com,它可以帮助你根据你的目标社区、你从使用你的代码的人那里获得补丁的愿望,或者你允许别人使用你的代码而不分享他们对你的代码所做的改进来选择许可证。

图片由: (Bolaji Ayodeji, CC BY-SA 4.0)

这为何时使用 MIT 许可或 GNU GPLv3 许可提供了指导。它还建议为社区做出贡献的人们使用该社区所偏好的许可证。该图表还指出,还有更多许可证可供选择。网站 choosealicense.com 有一个基于文本的版本,可以链接到更详细的信息。

创建一个开源项目的 13 个阶段

现在是关键问题:如何开始开源软件项目?

以下是我所认为的开源项目的各个阶段。

  1. 集思广益,撰写提纲,妥善记录。
  2. 开始根据你的想法进行开发。这通常包括确定要使用的正确工具和技术栈、编写一些代码、对代码进行版本控制、调试、喝点咖啡、在 StackOverflow 上闲逛、使用其他开源项目、睡觉、构建一些东西来解决确定的问题 —— 或者只是为了好玩!
  3. 在本地测试项目,根据需要编写一些单元测试和集成测试,根据需要设置 CI/CD 管道,创建一个暂存分支(在合并到主分支之前测试代码的测试分支),并完成部署项目所需的其他工作。
  4. 编写 良好有效的文档。这应该包括你的项目是做什么的,为什么它是有用的,如何开始使用它(使用、安装、配置、贡献),以及人们在哪里可以得到支持。
  5. 确保记录所有你希望使用的代码约定。使用诸如 代码检查工具 Linter 、代码格式化工具、Git 钩子和 注释规范化工具 Commitizen 命令行工具等工具来执行这些约定。
  6. 选择合适的许可证并创建自述文件。
  7. 在互联网上发布项目(可能最初是一个私有的资源库,在这一步将其公开)。
  8. 建立发布和记录更新日志的流程(你可以使用 Changesets 等工具)。
  9. 向全世界推广项目!你可以在社交媒体上发帖、创办新闻简讯、私下与朋友分享、进行产品发布、现场直播或其他任何你知道的传统营销策略。
  10. 使用任何可用的融资平台寻求资金支持,如 Open Collective、GitHub Sponsors、Patreon、Buy me a Coffee、LiberaPay 等。当你在这些平台上创建账户时,请在项目文档和网站中添加相关链接。
  11. 围绕你的项目建立一个社区。
  12. 在必要时,考虑引入工作组,将项目管理分成合理的部分。
  13. 不断实施新理念,维持项目背后的资源和人员。

随着项目的进展,对项目的不同部分进行评估非常重要。这将为你提供可用于评估和未来发展战略的数据。

现在开始一个项目吧!

我希望这篇文章能帮助你推进你一直在考虑的项目。

你可以将其用作指南,并在构建你的一流开源软件项目时填补我遗漏的任何空白。

(题图:MJ/a22b4011-9b1e-41e6-a73f-bdeac4858007)


via: https://opensource.com/article/22/9/build-open-source-project

作者:Bolaji Ayodeji 选题:lkxed 译者:wcjjdlhws 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

作为一个开源项目的成员,你可以做很多事情来帮助新手找到为项目作出贡献的方式。

当有人刚开始为开源做贡献时,最好从对新手友好的故障和议题开始。但在他们修复故障之前,他们必须要能够找到这类问题。作为一个开源项目的成员,你可以做很多事情来帮助新手找到为项目贡献的方式。

鉴于此,AnitaB.org 开源社区 优先考虑让我们的社区做到对新手友好。我们提倡包容性,确保不同经验和水平的贡献者都可以参与进来,并且他们的贡献不止限于跟编程有关。

我最近在 Upstream 2021,即 Tidelift 活动中介绍了我们在 AnitaB.org 上所做的一些社区工作,该活动启动了“维护者周”,这是一个为期一周的开源维护者庆祝活动。在活动中我讨论了我们策略的三个主要部分:

  • 我们如何沟通
  • 项目和议题
  • 开源项目

我们如何沟通

透明度是开源的重要组成部分,我们将透明度原则应用于我们的沟通方式。实际上,这意味着我们所有的社区会议都是公开进行的,并且影响我们设置 Zulip 聊天的方式以及我们提供文档的方式。

开放会议

任何人都可以加入我们的会议,并讨论与我们社区相关的话题。他们可以参与讨论或者旁听。会议相关信息在我们的社区日历中都可以找到。在这些通话中我们通常只使用语音聊天,我们发现这可以让人们在参与时感觉更自在。

我们举办以项目为中心的会议和一些分类的会议。会议上,来自不同领域的人们可以讨论同一个项目并帮助改进我们的流程。偶尔,我们会有“ 自由提问 Ask Me Anything (AMA)”会议,任何人都可以来问任何与开源相关的问题。

所有会议我们都会在共享文档中进行记录,并在 我们的 Zulip 中共享摘要和文档链接。

我们的 Zulip 聊天

开源 Zulip 聊天平台是我们的主要社区交流渠道,虽然我们也在 Github 的评论区讨论议题和 拉取请求 Pull Request (PR)。一般来说,我们禁用了私人消息以确保我们尽可能透明。对于这条规则,我们只有少数例外,那些私人聊天是管理员在处理我们运行程序的后勤工作所用的。我们发现这种方法更受欢迎,它还使我们能够更清楚公共聊天中的违规行为。

我们在 Zulip 聊天室分享所有会议摘要,包括讨论的要点、行动项目和文档。这些听起来好像是些显而易见的要求,但我一直惊讶于很多开源项目并不提供会议笔记,所以 Zulip 可以让那些没有参加会议的人也随时了解情况。

在 Zulip上,我们讨论项目路线图,回答社区的问题和疑问,并积极促进人们通过不同的方式方法和在不同的场景下做出自己的贡献。有时我们为贡献者的成就而庆祝 —— 无论是为了突出他们测试或者审查的第一个拉取请求,还是强调我们志愿者所做的出色工作。

文档

我们尽量保持关于我们流程的开放文档,例如常见问题解答,以便这些社区成员可以按照自己的节奏和时间了解社区。这是为了让他们在联系我们之前了解我们的工作方式以及我们从事的工作类型。

项目和议题

关于我们的项目和议题管理,我们鼓励通过多种方式做出贡献,我们为新手专门创建特定的议题,并尝试让项目的设置变得简单。

多种贡献的方式

我们努力创建需要不同贡献的问题,例如文档、测试、设计和外展。这是为了让任何人 —— 无关他们的经验水平和兴趣领域 —— 都能做出贡献。这样能够帮助社区参与进来,而且我们发现它使成员能够从一些省力但有价值的任务开始一步步做出贡献。

我们提倡的贡献类型有:

  • 不同复杂性的编程任务。
  • 质量保证任务 —— 贡献者可以测试我们的应用程序或拉取请求并报告错误。
  • 社区成员可以参与讨论的设计会议。此外,创建模型和重新设计我们应用程序某些部分的机会,并探索改进用户体验。
  • 外展任务,我们主要在 Zulip 上推广,我们建议在我们的 Medium 出版物上发表博客,介绍他们的开源经验和他们的贡献。
  • 文档任务,可以包括一般社区文档或我们在 Docusaurus 上的项目文档。

仅限新手的问题

我们将一些议题标记为“仅限新手”。这些问题适用于尚未为议题存储库做出贡献的人。为议题做标签还使我们能够让人们在贡献者大量涌入时开始他们的开源之旅,例如,在 谷歌编程之夏(GSoC) 申请期间。

有时,这些可能是“唾手可得的果实”,可以让他们熟悉作出贡献和提交拉取请求的过程。

简单的项目设置

我们也很在意为我们的项目提供新手友好的安装设置。我们注意到最活跃的项目通常是最容易设置的。我们知道,为你不熟悉的项目做出贡献可能需要付出很多努力并且关乎贡献体验的成败。

我们尝试提供有关如何在多个操作系统上运行我们项目的说明。在过去,我们有一些项目有单独的说明,可以在 Unix 环境下运行,我们注意到贡献者在 Windows 上运行这些项目有些困难。自那以后我们不断进行改进,以避免贡献者在 Zulip 上寻求帮助时出现混乱。

我们根据贡献者的经验,一直在改进我们最活跃的项目之一 mentorship-backend 的自述文件。新手在这个项目中遇到的困难之一是设置与配置电子邮件帐户相关的部分环境变量,以使后台功能能够发送电子邮件。但是,由于此功能对于本地开发并不重要,因此默认情况下,我们将电子邮件设置设为可选,以便将电子邮件打印到终端,而不是发送给用户。这种方法仍然使贡献者可以看到这些电子邮件。与此更改类似,我们将 SQLite 数据库 作为本地开发的默认设置,以避免对 Postgres 数据库进行额外设置,虽然我们在部署版本中会使用到 Postgres。

我们注意到,一些贡献者在为我们的 bridge-in-tech-backend 项目做出贡献时觉得很困难,该项目的设置很复杂,并且包含的步骤比 mentorship-backend 多得多。自从我们在一个开源项目中注意到这一点以来,我们一直在探索如何改进其结构。

对于我们的大多数项目,我们还提供应用程序的实时体验版本或打包版本,以便贡献者无需设置即可测试项目。这有助于我们为那些对开发设置不感兴趣或不熟悉的贡献者提供一种方式,来尝试我们应用程序的最新版本,并通过报告发现的任何错误来做出贡献。我们在 质量保证指南 中放了这些应用程序的链接。

开源计划

我们在社区中组织了两个主要计划:开源黑客(OSH)(一个为期一个月的项目)和 Open Source Ambassadors(一个为期六个月的项目)。

开源黑客(OSH)

在此计划中,我们在多个类别的贡献中创建议题 —— 文档、编码、外展、测试和设计(类似于 谷歌的 Code-in 竞赛)。 参与者可以为每个类别至少贡献一次并获得电子证书。一个议题可能包含多个类别,并且无需合并拉取请求也能使贡献有效。

我们为这个计划选取几个项目,请导师们集思广益为参与者创造议题。项目开始后参与者可以认领议题并开始作出贡献。导师们会支持帮助并审查他们的贡献。

这种方法鼓励贡献的多样性,并欢迎任何人,无论他们的编码能力如何,都可以在友好和不怕出错的环境中做出贡献。

开源大使

在此计划中,我们从社区中选择大使,理想情况下他们将涵盖我们旨在促进的每一类贡献。至今该计划已启动了两次。

该计划旨在让成员通过回答社区的议题、协助贡献者参与并为他们指定的类别宣传来帮助管理项目和计划。

第一个计划举行时我们接受了所有的申请者。我们评估了社区成员的兴趣所在,并为那些想要做出贡献但最初不敢踏出第一步的人提供了一个体系。

第一个计划的举办给了我们很多启发。因为我们的活动中既有经验丰富的开源贡献者和社区成员,也有初来乍到缺乏经验的新手,因此项目的执行要求管理员进行大量的管理工作。一些社区大使信心十足准备好进一步采取新措施,而其他大使则需要更多支持。到了第二个,我们决定缩减该计划,只接受那些已经熟悉社区、可以领导倡议和项目并帮助我们培训新人的贡献者。

第二个计划中形成了正反馈循环。那些在第一个计划中还是新手的大使们,通过为上一个项目做出贡献并且从项目经验中学习之后能够做到轻松带领项目。

这种方法的改变使管理员能够更加专注于支持大使团队,帮助他们传播我们的使命,并继续让我们的社区对新手友好,并指导更多人做出贡献。

总结

这些计划帮助我们提高了对开源贡献和回馈的不同方式的认识。通过它们,我们发现志愿者通过管理项目和举办公开会议来提供帮助,这有助于管理社区并为我们的贡献者提供指导。

尽管我们得到了贡献者的良好反响,并帮助人们做出了他们的第一个贡献,但我们仍有很大的改进空间。我们将继续改进我们项目的设置和贡献指南,以改善贡献者的体验。我们还将继续专注于确保我们的组织始终拥有并推动不同类别的问题,促进包容性,以便任何有意愿做出贡献的人都能出自己的一份力。


via: https://opensource.com/article/21/8/beginner-open-source-community

作者:Isabel Costa 选题:lujun9972 译者:XiaotingHuang22 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是一种帮助开源开发者获得报酬的令人兴奋的方式。

Tea 筹集了 890 万美元,推出了一个帮助开源开发者获得报酬的新协议

Tea 是一个开源的统一软件包管理器,被全球许多开发者使用。

顺便说一句,Tea 是 Homebrew 的创建者的一个新项目。

在最近的一份公告中,他们宣布已经筹集了 890 万美元的种子资金,并计划推出一个新的 Web3 协议,帮助开源开发者为他们的工作获得报酬。

我是通过 TechCrunch 上发表的一篇文章看到的,他们对 Tea 的创始人进行了访谈。

让我们来看看 Tea 的发展情况。

Tea 提出的一项新协议

它是什么?

简而言之: 该协议将帮助软件包维护者获得不可伪造的代币(NFT),作为他们对带有 Tea 支持的开源项目的贡献的奖励。

展开来说就是,这是一个 Web3 协议,将帮助软件包维护者以不可伪造的通证(NFT)的形式获得报酬。

当维护者完成了一个软件包的提交,他们将收到一个不可伪造的通证(NFT),可以作为他们工作和贡献的证据。

现有的维护者也将能够通过将软件包的 NFT 转让给其他开发者来转移软件包的维护所有权。

这些 NFT 是 Tea 计划奖励其用户的核心。

实施这一点还将涉及被称为“包支持者”和“赞助者”的实体。

这些人包括组织、软件包用户、慈善家和企业家,他们使用开源软件来构建商业产品,并希望支持这样一个生态系统。

他们还提到:

为了提供最广泛的覆盖面,我们认为奖励不能依靠跟踪安装或卸载这样简单的概念,而是要依靠激励机制,鼓励提交高质量的软件包和报告邪恶或高风险的软件包。

**到目前为止,Tea 只发布了他们所说的 “同类 CLI(命令行界面)工具应具备的基本功能”。

到目前为止,还没有提到这个新协议的具体发布日期,他们对这个协议发布的最佳估计是“2023 年的某个时候”。

他们补充说:

就像等到 11 月才发布我们的 CLI一样,我们会在了解它应该如何最好地构建并在内部经历了试验和错误之后才发布。

我们要慢慢来,确保这个工具本身对开发者非常有用和有价值。

它有什么帮助?

根据 Tea 公司的说法: 这应该有助于他们为所有开源软件创建一个开放、公开和稳定的注册中心。

反过来,鼓励项目独立发布版本,而不是依赖第三方,因为第三方会不可预测地收集他们的数据,导致大量的分立和经常重复的系统。

以下是他们对该协议的目标的描述:

Tea 的目标是通过 Tea 通证的独特用例来实现去中心化的激励机制,让 Tea 社区的任何成员为开源的永久可持续性和持续增长作出贡献。

包的支持者和赞助者可以根据他们的工作、信仰或任何影响他们决定的标准和尺度,自由决定他们要支持哪些包或包维护者。

在我看来: 这是一个令人兴奋的方法,可以奖励那些经常被忽视的开源贡献者,即使他们为各种开源项目贡献了很多。

然而,考虑到 NFT 在最近一段时间获得了很多批评。这可能会或可能不会有好的结果。

如果你想了解更多,你可以深入研究它的官方 白皮书 上的协议。


via: https://news.itsfoss.com/tea-open-source-new-protocol/

作者:Sourav Rudra 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Firefox OS 复活

Firefox OS 是 Mozilla 在 2013 年创建的安卓替代品,并于 2016 年放弃了它。2018 年,在 Firefox OS 基础上曾出现了一个令人失望的 KaiOS,主要针对功能机市场的商业操作系统,但它是封闭的,还会跟踪用户并且有广告。现在,Capyloon 项目决定复活 Firefox OS,将其带到现代 Linux 智能手机上。该项目还处于早期阶段。它能运行旧的 Firefox OS 应用。目前可以在安卓设备上通过启动谷歌通用系统镜像(GSI)测试其 UI。

消息来源:Tux Phones
老王点评:本来可能成为 Mozilla 的一个基石型项目,非常可惜被放弃了,我认为放弃 Firefox OS 是 Mozilla 的一大败笔。不过,新的复活计划是否能真正复活 Firefox OS,还需要拭目以待,毕竟,时代不同了。

国产编译器项目 LambdaChip 捐赠给 HardenedLinux

开放硬件整体方案 LambdaChip 是为数不多的国产编译器项目,其背后的公司正式破产清算,将其项目改名为 Animula,并正式捐赠给 HardenedLinux 社区。LambdaChip 是一个野心勃勃的国产项目,试图在 10KB 内存的单片机上同时支持 Scheme、Lua 5.2 和 Python3 等语言,已经有了一些不错的进展。HardenedLinux 自嘲其“是否成为商业失败的开源项目的集散地的结论为时尚早”,并对此类项目表示了欢迎。

消息来源:Solidot
老王点评:看来 HardenedLinux 成为了一个孤儿项目摇篮。不过,确实需要一些组织来负责照料这些因为种种原因被放弃的项目。

Linux 内核 6.1 放弃火线串口驱动,删除了 4000 行代码

Linux 的 fwserial 驱动程序允许通过 IEEE-1394(火线接口)连接 TTY,以实现对等体之间的有线高速串行连接。但自从该驱动程序在 2012 年被合并以来,没有人负责维护该驱动程序。而且,现在有更好的连接方式,苹果的火线接口越来越没有人使用了。因此,它在 Linux 内核 6.1 中被删除,为内核减少了约 4000 行代码。

消息来源:Phoronix
老王点评:作为一个发展了 30 年的软件项目,其中肯定充斥着大量过时或无用的驱动和代码,因此时不时清理一下也是好的。不过,我觉得或许应该有更明确的规则对内核的各个组成部分设置不同的生命周期。

这是许多事情的第一步

 title=

有一个普遍的误解,那就是对开源做出贡献是一件很难的事。你可能会想,“有时我甚至不能理解我自己的代码;那我怎么可能理解别人的?”

放轻松。直到去年,我都以为是这样。阅读和理解他人的代码,然后在他们的基础上写上你自己的代码,这是一件令人气馁的任务;但如果有合适的资源,这不像你想象的那么糟。

第一步要做的是选择一个项目。这个决定是可能是一个菜鸟转变成一个老练的开源贡献者的关键一步。

许多对开源感兴趣的业余程序员都被建议从 Git 入手,但这并不是最好的开始方式。Git 是由许多有着多年软件开发经验的超级极客维护的。它是寻找可以做贡献的开源项目的好地方,但对新手并不友好。大多数对 Git 做出贡献的开发者都有足够的经验,他们不需要参考各类资源或文档。在这篇文章里,我将提供一个对新手友好的特性的列表,并且给出一些建议,希望可以使你更轻松地对开源做出贡献。

理解产品

在开始贡献之前,你需要理解项目是怎么工作的。为了理解这一点,你需要自己来尝试。如果你发现这个产品很有趣并且有用,它就值得你来做贡献。

初学者常常选择参与贡献那些他们没有使用过的软件。他们会失望,并且最终放弃贡献。如果你没有用过这个软件,你不会理解它是怎么工作的。如果你不理解它是怎么工作的,你怎么能解决 bug 或添加新特性呢?

要记住:尝试它,才能改变它。

确认产品的状况

这个项目有多活跃?

如果你向一个暂停维护的项目提交一个 拉取请求 pull request ,你的请求可能永远不会被讨论或合并。找找那些活跃的项目,这样你的代码可以得到即时的反馈,你的贡献也就不会被浪费。

这里介绍了怎么确认一个项目是否还是活跃的:

  • 贡献者数量: 一个增加的贡献者数量表明开发者社区乐于接受新的贡献者。
  • 提交 commit 频率: 查看最近的提交时间。如果是一周之内,甚至是一两个月内,这个项目应该是定期维护的。
  • 维护者数量: 维护者的数量越多,你越可能得到指导。
  • 聊天室或 IRC 活跃度: 一个繁忙的聊天室意味着你的问题可以更快得到回复。

新手资源

Coala 是一个开源项目的例子。它有自己的教程和文档,让你可以使用它(每一个类和方法)的 API。这个网站还设计了一个有吸引力的界面,让你有阅读的兴趣。

文档: 不管哪种水平的开发者都需要可靠的、被很好地维护的文档,来理解项目的细节。找找在 GitHub(或者放在其它位置)或者类似于 Read the Docs 之类的独立站点上提供了完善文档的项目,这样可以帮助你深入了解代码。

 title=

教程: 教程会给新手解释如何在项目里添加特性 (然而,你不是在每个项目中都能找到它)。例如,Coala 提供了 小熊编写指南 (进行代码分析的 代码格式化 linting 工具的 Python 包装器)。

 title=

分类的 讨论点 issue 对刚刚想明白如何选择第一个项目的初学者来说,选择一个讨论点是一个更加困难的任务。标签被设为“难度/低”、“难度/新手”、“利于初学者”,以及“ 触手可及 low-hanging fruit ”都表明是对新手友好的。

 title=

其他因素

 title=

  • 维护者对新的贡献者的态度: 从我的经验来看,大部分开源贡献者都很乐于帮助他们项目里的新手。然而,当你问问题时,你也有可能遇到一些不太友好的人(甚至可能有点粗鲁)。不要因为这些人失去信心。他们只是因为在比他们经验更丰富的人那儿得不到发泄的机会而已。还有很多其他人愿意提供帮助。
  • 审阅过程/机制: 你的拉取请求将经历几遍你的同伴和有经验的开发者的查看和更改——这就是你学习软件开发最主要的方式。一个具有严格审阅过程的项目使您在编写生产级代码的过程中成长。
  • 一个稳健的 持续集成 continuous integration 管道: 开源项目会向新手们介绍持续集成和部署服务。一个稳健的 CI 管道将帮助你学习阅读和理解 CI 日志。它也将带给你处理失败的测试用例和代码覆盖率问题的经验。
  • 参加编程项目(例如 Google Summer Of Code): 参加组织证明了你乐于对一个项目的长期发展做贡献。他们也会给新手提供一个机会来获得现实世界中的开发经验,从而获得报酬。大多数参加这些项目的组织都欢迎新人加入。

7 对新手友好的组织

关于作者

Palash Nigam - 我是一个印度计算机科学专业本科生,十分乐于参与开源软件的开发,我在 GitHub 上花费了大部分的时间。我现在的兴趣包括 web 后端开发,区块链,和 All things python。


via: https://opensource.com/article/18/4/get-started-open-source-project

作者:Palash Nigam 译者:lonaparte 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在忙碌的生活中抽出时间回馈给你关心的项目。

 title=

人们不给开源做贡献(或不能做更多贡献)的最常见的原因之一是缺乏时间。人艰不拆,有这么多的优先的事情争夺你有限的注意力。那么,如何才能在忙碌的生活中为你关心的开源项目抽出时间呢?

为了充分披露,我需要提醒你,我延误了把这篇文章给编辑的时间,因为我抽不出时间写它,所以是否接受我的建议,请自行承担风险。

找出你所关心的

贡献的第一步是弄清楚你正在做些什么。你有一个你自己的为之努力的项目吗?有没有一个你想要帮助的具体项目?或者你只是想做某个事情?弄清楚你正在做的事情将帮助你决定你的生活中的优先事项。

找出其他的方法贡献

编写新功能可能需要数小时的设计、编码和测试。这对于那种只有几分钟时间就得离开,然后再从原来的地方重新开始的情况下并不容易。如果你没有办法进行长于 30 分钟的无中断工作,当你试着完成一个大的任务时,你或许会感到沮丧。

但还有或许可以满足你的需求的其它贡献方式,可以让你利用起来空闲的时间。其中一些可以通过智能手机快速完成,这意味着人们可以避免在通勤上浪费时间,并将其用于开源贡献。以下是可以在小块时间中完成的一些事情列表:

  • Bug 分类: 所有的 bug 报告都有必要的信息来诊断和解决它们么?它们是否妥善提交(给出正确的范围,正确的严重程度等)了么?
  • 邮件列表支持: 用户或其他贡献者在邮件列表中提出了问题?也许你可以帮忙。
  • 文档修补: 文档经常(但不总是)可以比代码用更小块的时间来处理。也许有几个地方你可以补充一下,或者也许是时候浏览一下文档并确保它们仍然准确了。
  • 营销: 在社交媒体上谈论你的项目或者社区。写一篇快速入门博文。在新闻聚合里投票和评论。

与你的老板交谈

你可能会认为在上班时间里你不能在开源项目上工作,但是你有问过么? 特别是如果这个项目以某种方式与你的日常工作相关,那你或许可以和你的老板谈谈,让你可在工作时做出贡献。请注意,这可能存在一些知识产权问题(例如,谁拥有你在工作时间内提供的代码的权利),因此首先做一下研究并以书面形式获得授权。

设置最后期限

我所学到的最佳时间管理建议可以归纳为两个规则:

  1. 如果要完成,它必须有一个截止日期
  2. 可以更改最后期限

这篇文章有一个最后期限。它没有特别的时间敏感性,但最后期限意味着我定义了什么时候想完成它,并给编辑一个什么时候可以提交的感觉。是的,如上所述,我错过了最后期限。但你知道发生了什么事么?我设定了一个新的期限(二手才最棒!)。

如果有些事时间敏感的,在你需要返工一两次时,设置最后期限也可以给你一些空间。

将它放到你的日程上

如果你使用日历安排你的生活,那用它安排一些时间来开展你的开源项目,可能是完成此项工作的唯一方法。你计划多少时间取决于你自己,但即使你每周只用一小时作为开源时间,这仍会给你每周一小时的开源时间。

这有一个秘密:有时候,如果你需要时间去做别的事情,或者什么都不想做,那么可以自己取消它。

开拓未使用的时间

你在通勤中感到无聊吗?你晚上睡觉困难么?也许你可以利用这个时间来贡献。现在我认为“每周完全投入工作 169 个小时”的生活方式是一件非常可怕的事情。也就是说,有些夜晚你不能入睡。也许你已经意识到了可以做贡献,而不是躺在床上看看你的 Twitter 上的朋友在世界的另一边做了什么(如我做的)。但是不要养成放弃睡眠的习惯。

停止

有时,贡献最好的方式是一点不贡献。你是一个忙碌的人,不管你是多么的棒,你不能避开你的生理和心理的需要,它们会找上你。花点时间来休息,这也许可以提高你的生产力,使你的工作更快,突然间你就有时间去做那些你一直想做的开源贡献了。

说“不”

我不擅长这个,所以我做的并不好。但是没有人能做到任何想做的事情。有时候,你可以做的最好的事情是停止贡献,就像以前一样,或者没有贡献(参见上文)。

几年前,我领导了 Fedora 文档团队。团队的传统是,在每次发布结束时, 领导会主动提出下台。我已经做了一两次,没有人想要替代我,所以我继续保持着这个角色。但是在我的第二或第三次发布之后,我明确表示,我不会继续担任团队领导了。我还是很喜欢这份工作,但我有一份全职的工作,而且在研究生读到一半时,我的妻子怀了我们的第一个孩子。我没有办法做到始终如一的努力,所以我退出领导了。我继续做出贡献,但是在要求较低的能力的位置中。

如果你正在努力抽出时间来满足你的义务(自我强加的或者不是),那么也许现在是重新考虑你的角色了。这对于你自己创建的或者已经大量投资的项目来说很困难,但有时你不得不这么做——为了你自己好以及项目本身。

其他还有什么?

你如何找到时间作出贡献? 让我们在评论中知道。

(题图: opensource.com)


作者简介:

Ben Cotton - Ben Cotton 是一个培训过的气象学家和一个职业的高效计算机工程师。 Ben 在 Cycle Computing 做技术传教士。他是 Fedora 用户和贡献者,合作创办当地的一个开源集会,是一名开源倡议者和软件自由机构的支持者。他的推特 (@FunnelFiasco)


via: https://opensource.com/article/17/6/find-time-contribute

作者:Ben Cotton 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出