蚊章汇 - 开源项目
type: channel
link: https://linuxcn.bwsl.wang/tag/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/
items: 构建成功的开源项目的重要建议
items: 管理对新手友好的开源社区的三个步骤
items: Tea 筹集了 890 万美元，推出了一个帮助开源开发者获得报酬的新协议
items: 硬核观察 #788 Firefox OS 复活
items: 在开源项目中做出你的第一个贡献
items: 8 种在你没有时间的时候为开源做贡献的方式
items: 给非英语母语的人从事开源项目的若干建议
items: 如何从参与开源项目的过程中获取自信
items: 2016 年十大顶级开源项目
items: 2015 年度开源项目新秀榜

构建成功的开源项目的重要建议
type: item
date: 2023-07-14T22:56:53+08:00
description: 使用这些步骤来为你的第一个或接下来的项目打下坚实的基础。开源 是一个蓬勃发展且有益的生态系统，它通过分散模式和社区贡献开发的软件，公开解决社区和行业问题。随着这个生态系统的爆炸式发展，许多开发者想要参与并且构建新的开源项目。问题是：如何成功实现这一目标呢？这篇文章将会揭秘开源项目的生命周期与结构。给你一个对开源项目内部运作的概述，并根据我个人的经验，向你展示如何构建一个成功和可持续发展的项目。对开源的简单概述 开源促进会 Open Source Initiative （OSI）提供了对“ 开源 Open Source ”的正式、详细的定义，但是维基百科提供了一个很好的总结：开源软件是指根据许可证发布的计算机软件，版权持有人授予用户使用、研究、更改和向任何人、为了任何目的分发软件和它的源代码的权利。开源软件通常在网络上有公开的代码，它由多人合作或一人开发。这就需要与来自不同地区、不同文化和不同技术背景的人合作，而且往往是远程合作。开源项目的构成就像人类的身体，一个开源项目由多个结构组成，这些结构构成了整个系统。我认为它们是两个分支：人员（微观）和文档（宏观）。分支一：人员通常，一个开源项目包括以下人群：创建者：创建项目的人维护者：积极管理整个项目的人贡献者：为项目做贡献的人（像你一样的人！）用户：使用这个项目的人，包括开发者和非技术客户工作组：将贡献者分成特定领域的小组，专注于围绕特定主题领域（如文档、指引、测试、DevOps、代码审查、性能、研究等）的集合。赞助人：为项目提供资金支持的人当你准备构建一个新项目时，你需要考虑以上列表中的每一个群组。你对他们每个人有什么计划？对于维护者，请确定任用维护者的标准。通常，积极的贡献者就是最适合的维护者。对于用户和贡献者，你需要准备可靠的文档、引导流程和他们使用你的项目取得成功所需的一切。对于工作组，请确定你是否需要它们，以及你的项目将来如何有逻辑地拆分。最后，对于赞助人，你必须提供足够的数据和有关你项目的信息，以便他们选择赞助你。你不必在你项目的起始阶段解决上面所有问题。然而，在早期阶段思考它们是很明智的，这样你就能打下正确的基础，确保未来的扩建项目能够站稳脚跟并取得成功。分支二：文档开源项目通常包括下列文档，通常为纯文本或 markdown 格式：许可证（License）： 这份法律文件解释了如何以及在何种程度上可以自由使用、修改和共享本项目。OSI 网站上有 OSI 认可的许可证列表。如果没有明确的许可证，你的项目在法律上就不是开源的！行为准则：该文件概述了任何决定以任何方式参与项目的人的规则、规范、可接受做法和责任（包括当有人违反任何规则时会发生什么）。贡献者公约 是一个很好的示例，它是开源的（采用知识共享许可协议）。自述文件（README）：这个文件向新用户介绍你的项目。在很多 Git 托管网站上，比如 GitLab、GitHub 和 Codeberg，自述文件会显示在仓库的初始文件列表下。这里通常会提供文档，以及其他必要文档的链接。文档（Documentation）：这是一个包含所有本项目文件资源的文件或目录，包括指南、API 参考、教程等。贡献指南（Contributing）：包含一份说明如何为项目做出贡献的文件，包括安装指南、配置等。安全（Security）：包括一个解释如何提交漏洞报告或安全问题的文件。此外，一个项目通常有用于议题、支持和协作的网页。大致包括：议题或错误报告：用户可以报告错误的地方。该页面还为开发人员提供了一个地方，让他们可以分配自己的任务来修复一个或多个错误。拉取或合并请求：提供功能增强建议和错误解决方案的地方。这些补丁可以由任何人创建，由维护者审核，然后合并到项目代码中。讨论：维护者、贡献者和用户讨论开源项目的地方。它可以是一个专门的网站，也可以是协作编码网站中的一个论坛。大多数项目还通过在线聊天的形式为社区成员之间的对话和互动提供交流渠道。许可证许可证 也许是创建开源项前需要考虑的最简单但也是最重要的标准。许可证定义了允许使用、修改和共享项目源代码和其他组件的条款和条件。许可证包含大量的法律术语，很多人并不完全理解。我使用 choosealicense.com，它可以帮助你根据你的目标社区、你从使用你的代码的人那里获得补丁的愿望，或者你允许别人使用你的代码而不分享他们对你的代码所做的改进来选择许可证。这为何时使用 MIT 许可或 GNU GPLv3 许可提供了指导。它还建议为社区做出贡献的人们使用该社区所偏好的许可证。该图表还指出，还有更多许可证可供选择。网站 choosealicense.com 有一个基于文本的版本，可以链接到更详细的信息。创建一个开源项目的 13 个阶段现在是关键问题：如何开始开源软件项目？以下是我所认为的开源项目的各个阶段。…

管理对新手友好的开源社区的三个步骤
type: item
date: 2023-02-13T06:28:34+08:00
description: 作为一个开源项目的成员，你可以做很多事情来帮助新手找到为项目作出贡献的方式。当有人刚开始为开源做贡献时，最好从对新手友好的故障和议题开始。但在他们修复故障之前，他们必须要能够找到这类问题。作为一个开源项目的成员，你可以做很多事情来帮助新手找到为项目贡献的方式。鉴于此，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-bac…

Tea 筹集了 890 万美元，推出了一个帮助开源开发者获得报酬的新协议
type: item
date: 2022-12-11T21:50:27+08:00
description: 这是一种帮助开源开发者获得报酬的令人兴奋的方式。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中国 荣誉推出

硬核观察 #788 Firefox OS 复活
type: item
date: 2022-10-14T01:57:36+08:00
description: 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 年的软件项目，其中肯定充斥着大量过时或无用的驱动和代码，因此时不时清理一下也是好的。不过，我觉得或许应该有更明确的规则对内核的各个组成部分设置不同的生命周期。

在开源项目中做出你的第一个贡献
type: item
date: 2018-07-03T19:09:48+08:00
description: 这是许多事情的第一步有一个普遍的误解，那就是对开源做出贡献是一件很难的事。你可能会想，“有时我甚至不能理解我自己的代码；那我怎么可能理解别人的？”放轻松。直到去年，我都以为是这样。阅读和理解他人的代码，然后在他们的基础上写上你自己的代码，这是一件令人气馁的任务；但如果有合适的资源，这不像你想象的那么糟。第一步要做的是选择一个项目。这个决定是可能是一个菜鸟转变成一个老练的开源贡献者的关键一步。许多对开源感兴趣的业余程序员都被建议从 Git 入手，但这并不是最好的开始方式。Git 是由许多有着多年软件开发经验的超级极客维护的。它是寻找可以做贡献的开源项目的好地方，但对新手并不友好。大多数对 Git 做出贡献的开发者都有足够的经验，他们不需要参考各类资源或文档。在这篇文章里，我将提供一个对新手友好的特性的列表，并且给出一些建议，希望可以使你更轻松地对开源做出贡献。理解产品在开始贡献之前，你需要理解项目是怎么工作的。为了理解这一点，你需要自己来尝试。如果你发现这个产品很有趣并且有用，它就值得你来做贡献。初学者常常选择参与贡献那些他们没有使用过的软件。他们会失望，并且最终放弃贡献。如果你没有用过这个软件，你不会理解它是怎么工作的。如果你不理解它是怎么工作的，你怎么能解决 bug 或添加新特性呢？要记住：尝试它，才能改变它。确认产品的状况这个项目有多活跃？如果你向一个暂停维护的项目提交一个 拉取请求 pull request ，你的请求可能永远不会被讨论或合并。找找那些活跃的项目，这样你的代码可以得到即时的反馈，你的贡献也就不会被浪费。这里介绍了怎么确认一个项目是否还是活跃的：贡献者数量： 一个增加的贡献者数量表明开发者社区乐于接受新的贡献者。 提交 commit 频率： 查看最近的提交时间。如果是一周之内，甚至是一两个月内，这个项目应该是定期维护的。维护者数量： 维护者的数量越多，你越可能得到指导。聊天室或 IRC 活跃度： 一个繁忙的聊天室意味着你的问题可以更快得到回复。新手资源Coala 是一个开源项目的例子。它有自己的教程和文档，让你可以使用它（每一个类和方法）的 API。这个网站还设计了一个有吸引力的界面，让你有阅读的兴趣。文档： 不管哪种水平的开发者都需要可靠的、被很好地维护的文档，来理解项目的细节。找找在 GitHub（或者放在其它位置）或者类似于 Read the Docs 之类的独立站点上提供了完善文档的项目，这样可以帮助你深入了解代码。教程： 教程会给新手解释如何在项目里添加特性 （然而，你不是在每个项目中都能找到它）。例如，Coala 提供了 小熊编写指南 （进行代码分析的 代码格式化 linting 工具的 Python 包装器）。分类的 讨论点 issue ： 对刚刚想明白如何选择第一个项目的初学者来说，选择一个讨论点是一个更加困难的任务。标签被设为“难度/低”、“难度/新手”、“利于初学者”，以及“ 触手可及 low-hanging fruit ”都表明是对新手友好的。其他因素维护者对新的贡献者的态度： 从我的经验来看，大部分开源贡献者都很乐于帮助他们项目里的新手。然而，当你问问题时，你也有可能遇到一些不太友好的人（甚至可能有点粗鲁）。不要因为这些人失去信心。他们只是因为在比他们经验更丰富的人那儿得不到发泄的机会而已。还有很多其他人愿意提供帮助。审阅过程/机制： 你的拉取请求将经历几遍你的同伴和有经验的开发者的查看和更改——这就是你学习软件开发最主要的方式。一个具有严格审阅过程的项目使您在编写生产级代码的过程中成长。一个稳健的 持续集成 continuous integration 管道： 开源项目会向新手们介绍持续集成和部署服务。一个稳健的 CI 管道将帮助你学习阅读和理解 CI 日志。它也将带给你处理失败的测试用例和代码覆盖率问题的经验。参加编程项目（例如 Google Summer Of Code）： 参加组织证明了你乐于对一个项目的长期发展做贡献。他们也会给新手提供一个机会来获得现实世界中的开发经验，从而获得报酬。大多数参加这些项目的组织都欢迎新人加入。7 对新手友好的组织coala (Python)oppia (Python, Django)DuckDuckGo (Perl, JavaScript)OpenGenus (JavaScript)Kinto (Python, JavaScript)FOSSASIA (Python, JavaScript)Kubernetes (Go)关于作者Palash Nigam - 我是一个印度计算机科学专业本科生，十分乐于参与开源软件的开发，我在 GitHub 上花费了大部分的时间。我现在的兴趣包括 web 后端开发，区块链，和 All things python。…

8 种在你没有时间的时候为开源做贡献的方式
type: item
date: 2017-07-15T00:32:33+08:00
description: 在忙碌的生活中抽出时间回馈给你关心的项目。人们不给开源做贡献（或不能做更多贡献）的最常见的原因之一是缺乏时间。人艰不拆，有这么多的优先的事情争夺你有限的注意力。那么，如何才能在忙碌的生活中为你关心的开源项目抽出时间呢？为了充分披露，我需要提醒你，我延误了把这篇文章给编辑的时间，因为我抽不出时间写它，所以是否接受我的建议，请自行承担风险。找出你所关心的贡献的第一步是弄清楚你正在做些什么。你有一个你自己的为之努力的项目吗？有没有一个你想要帮助的具体项目？或者你只是想做某个事情？弄清楚你正在做的事情将帮助你决定你的生活中的优先事项。找出其他的方法贡献编写新功能可能需要数小时的设计、编码和测试。这对于那种只有几分钟时间就得离开，然后再从原来的地方重新开始的情况下并不容易。如果你没有办法进行长于 30 分钟的无中断工作，当你试着完成一个大的任务时，你或许会感到沮丧。但还有或许可以满足你的需求的其它贡献方式，可以让你利用起来空闲的时间。其中一些可以通过智能手机快速完成，这意味着人们可以避免在通勤上浪费时间，并将其用于开源贡献。以下是可以在小块时间中完成的一些事情列表：Bug 分类： 所有的 bug 报告都有必要的信息来诊断和解决它们么？它们是否妥善提交（给出正确的范围，正确的严重程度等）了么？邮件列表支持： 用户或其他贡献者在邮件列表中提出了问题？也许你可以帮忙。文档修补： 文档经常（但不总是）可以比代码用更小块的时间来处理。也许有几个地方你可以补充一下，或者也许是时候浏览一下文档并确保它们仍然准确了。营销： 在社交媒体上谈论你的项目或者社区。写一篇快速入门博文。在新闻聚合里投票和评论。与你的老板交谈你可能会认为在上班时间里你不能在开源项目上工作，但是你有问过么？ 特别是如果这个项目以某种方式与你的日常工作相关，那你或许可以和你的老板谈谈，让你可在工作时做出贡献。请注意，这可能存在一些知识产权问题（例如，谁拥有你在工作时间内提供的代码的权利），因此首先做一下研究并以书面形式获得授权。设置最后期限我所学到的最佳时间管理建议可以归纳为两个规则：如果要完成，它必须有一个截止日期可以更改最后期限这篇文章有一个最后期限。它没有特别的时间敏感性，但最后期限意味着我定义了什么时候想完成它，并给编辑一个什么时候可以提交的感觉。是的，如上所述，我错过了最后期限。但你知道发生了什么事么？我设定了一个新的期限（二手才最棒！）。如果有些事是时间敏感的，在你需要返工一两次时，设置最后期限也可以给你一些空间。将它放到你的日程上如果你使用日历安排你的生活，那用它安排一些时间来开展你的开源项目，可能是完成此项工作的唯一方法。你计划多少时间取决于你自己，但即使你每周只用一小时作为开源时间，这仍会给你每周一小时的开源时间。这有一个秘密：有时候，如果你需要时间去做别的事情，或者什么都不想做，那么可以自己取消它。开拓未使用的时间你在通勤中感到无聊吗？你晚上睡觉困难么？也许你可以利用这个时间来贡献。现在我认为“每周完全投入工作 169 个小时”的生活方式是一件非常可怕的事情。也就是说，有些夜晚你不能入睡。也许你已经意识到了可以做贡献，而不是躺在床上看看你的 Twitter 上的朋友在世界的另一边做了什么（如我做的）。但是不要养成放弃睡眠的习惯。停止有时，贡献最好的方式是一点不贡献。你是一个忙碌的人，不管你是多么的棒，你不能避开你的生理和心理的需要，它们会找上你。花点时间来休息，这也许可以提高你的生产力，使你的工作更快，突然间你就有时间去做那些你一直想做的开源贡献了。说“不”我不擅长这个，所以我做的并不好。但是没有人能做到任何想做的事情。有时候，你可以做的最好的事情是停止贡献，就像以前一样，或者没有贡献（参见上文）。几年前，我领导了 Fedora 文档团队。团队的传统是，在每次发布结束时, 领导会主动提出下台。我已经做了一两次，没有人想要替代我，所以我继续保持着这个角色。但是在我的第二或第三次发布之后，我明确表示，我不会继续担任团队领导了。我还是很喜欢这份工作，但我有一份全职的工作，而且在研究生读到一半时，我的妻子怀了我们的第一个孩子。我没有办法做到始终如一的努力，所以我退出领导了。我继续做出贡献，但是在要求较低的能力的位置中。如果你正在努力抽出时间来满足你的义务（自我强加的或者不是），那么也许现在是重新考虑你的角色了。这对于你自己创建的或者已经大量投资的项目来说很困难，但有时你不得不这么做——为了你自己好以及项目本身。其他还有什么？你如何找到时间作出贡献？ 让我们在评论中知道。（题图： opensource.com）作者简介：Ben Cotton - Ben Cotton 是一个培训过的气象学家和一个职业的高效计算机工程师。 Ben 在 Cycle Computing 做技术传教…

给非英语母语的人从事开源项目的若干建议
type: item
date: 2017-06-18T18:56:00+08:00
description: 大多数的开源项目的主要语言都是英语，但是开源项目的用户和贡献者却遍布全球。非英语母语的人在参与这个生态系统时会面临许多沟通和文化上的挑战。在这篇文章中，作为不以英语为母语的 OpenStack 的贡献者的我们将会分享一些所面临挑战——如何去克服它们，还有一些好的方案，它们能够减轻不以英语为母语且刚开始从事的人的焦虑。我们的总部在日本、巴西和中国，每天都会与世界各地的大型 OpenStack 社区合作。OpenStack 的官方语言是英语，这意味着我们是作为非英语为母语的人士来进行交流。挑战非英语为母语的人士在开源社区工作时会面临具体沟通挑战：它们与有限的语言技能和文化差异有关。语言技能让我们来关注在阅读、写作、听力和口语背后的具体语言技能。阅读：这是最简单也是最重要的技能。最简单是因为：如果你不明白写了什么，你有机会再次阅读它，或者需要的话可以多次阅读。如果你遇到了一个不常见的短语、表达式或者缩写，你可以使用一个词典或者翻译器。在另一方面，它是最重要的技能是因为：对大多数开源项目而言，主要的交流方式都是邮件列表和 IRC。写作：英语语法是一个问题，尤其是对句子结构不同的语言而言。这可能会在用电子邮件进行通信和通过 IRC 频道进行通信时产生问题。对一些人来说，写出又长又漂亮的句子比较困难，而普遍依赖于简单句子，这是因为这些易于书写和理解。听力：这对非英语为母语的人来说比阅读和写作更加困难。通常，英语为母语的人之间的对话在非常快的，这就使得那些仍然处于刚从事阶段的人很难理解他们的讨论，同时也限制了他们参与到讨论当中。此外，试图理解一个遍布全球的社区的各种口音也增加了复杂性。有意思的是，美国人的发音往往比其他的容易理解。口语：口语比听力更加的困难，因为参与者的词汇量可能会比较有限。而且，英语的音素和语法通常与那些母语不是英语的人的母语相差很大，这就使得互动更加的难以理解。文化差异在开源社区与其他人交流时，每种文化都有它自己不同的规范。例如，日本人通常不会明确的说好的或者不，他们认为这是尊重别人的一种方式，可以避免彼此间的争论。这通常与其他的文化大不一样，可能会对所表达的内容造成误解。在中国文化中，人们倾向于只是说好的，而不是说不，或者试图商讨。在一个像 OpenStack 这样的分布于全球的社区里，这通常会导致在表达意见时缺乏自信。另外，中国人喜欢首先列出事实，然后在后面给出结论，而这会对来自其他文化中的人造成困惑，因为这不是他们所期望的。例如，巴西人可能会认为讨论是以类似的方式进行的；然而，其他文化的反应会很直接和简短，这听起来可能会有点粗鲁。克服障碍语言技能方面的挑战要比文化差异方面的挑战容易克服。文化差异需要被受到尊重，然而英语技能却总是可以被改善的。为了刷新你的语言技能，你应该尽可能多地接触该语言。不要担心你的局限，只管尽自己所能，你终将会得到改善。尽可能多的阅读，因为这有助于你积累词汇。通过日常的聊天和邮件列表进行交流也很有帮助。一些工具，如实时字典和翻译器，对这些平台非常有用。与别人或者你自己交谈可以帮助你更自如地频繁地说话。进行一对一的对话来表达你的想法比在更大的群体中讨论更容易。新手的融入来自新手和母语者的一些举措可能会对学习过程产生积极的影响。新手说出和写下你的意见，并且提出你的问题；参与其中总是一个练习你的英语的很好的机会。不要害怕。对于会议，确保你提前准备过，这样你将会对会议主题比较熟悉，而且会对自己要表达的意见更加的自信。与英语为母语的人结交朋友，多和他们讨论来提高你的英语技能。用英语写博客和技术文章也是不错的主意。给英语为母语的人士的建议请说话慢一点儿，同时使用一些简单的单词和句子。如果你发现了非英语为母语的人使用英语中的一些错误请不要嘲笑他们，尝试鼓励新来的人表达自己的意见，让他们非常舒适地表达意见。这篇文章由 Masayuki Igawa、Dong Ma 和 Samuel de Medeiros Queiroz 共同协作完成，可以在 Hobart 的 linux.conf.au 2017(#lca2017)：开源社区中的非英语母语者：一个真实的故事中了解更多（ 题图：opensource.com）作者简介：Masayuki Igawa 是一名拥有 15 年大量软件项目经验的软件工程师，目前正在开发与 Linux 内核和虚拟化相关开源软件。自 2013 年起，他就一直是一名活跃的 OpenStack 项目贡献者。他是像 Tempest 和 subunit2sql 这样一些 OpenStack QA 项目的核心成员。他目前就职于 HPE 的 Upstream OpenStack 团队，该团队目的是使 OpenStack 更适合所有人。他以前曾在 OpenStack 峰会上发表演讲。via: https:/…

如何从参与开源项目的过程中获取自信
type: item
date: 2017-06-10T16:59:00+08:00
description: 随着大脑的发育，你渐渐学会了这世上什么事情可以/应该做，以及什么事情不能/不应该做。你所有的行为都受到周围大众的影响，很多时候，阻碍你参与某事的原因就是你缺乏自信。纵观我们的生活，我们都或多或少的受到了世俗和社会行为的“教条”影响。我们可能从小就被这样教育：演说家说的都是真理、CEO 都是有远见的、警察维护社会秩序，尊重别人代表着静听让人把话说完，如果人家说错了，你要看场合轻柔的指出来 —— 好吧，这有点复杂。当你决心参与到开源项目之中去的时候，自信将扮演重要角色。开源社区有其固有的参与性。参与就相当于开源世界的流通货币，持有该货币的量取决于你的自信。你的参与性越高、技能越高、分享你的想法和简洁次数越多，你就越能通过自己的 提交 （ commit ） 来改善某一个项目。所有这些都需要你有很强的信念 —— 你有值得分享的事情 —— 并且你会常常思考自己要做什么、分享什么。这里不得不说说这样一个事实：我们每一个人都一些值得分享的事情。但是你要找出这个值得分享的事情是什么，以及在哪个位置分享它才能把这个分享推向最积极、最有意义的一面。认真思考一下三点，这将增强你的自信，并能让你在开源社区中更容易取得进步。没有人会站在你的角度来看待你你要时刻谨记着：你是完全独立的个人，他人对你做出的评论就像是不存在一样，只有这样才能更好的获得自信。我们都习惯了这样认知，周围的人都是根据我们的行为来做出评判的。这一习惯是学习如何更像社会群体一样生活的副产品。而且很可能在我们的童年，父母根据我们的行为设置的奖励机制时，这个习惯就根植我们心底。到了青春期，老师们对我们的表现来评价，给我们划分等级和分数，拿我们和身边的小伙伴对比。这样的动力和奖励机制给我们的大脑建立了一个包括自我反思在内的反馈回路。我们需要预测自己能否得到回报，并要为那些可能发生的事情做好应对。现今的我们都有这样第一个疑惑：身边的人是如何看我的？然而，真相是多数人都不会花太多时间来对你进行正确客观的评价。我们所有人只是关注自己的回报，我们有自己热衷于某件事的的热情、有大量急待解决的问题。也有一些人忙于关心他们自己如何影响身边的人，他们并不会在身上花费时间。他们根本不会注意到你是否出错、大声谈话还是像他们的背景音乐一样。所有的那些疑惑都只是在你自己的脑海中而已，而非在其他任何人脑中。我们需要被人们所接受的愿望也是人生意义的一部分，但是这类受我们所遇之人的一时兴起。这些人可能对我们缺乏全面认识，比如我们叫什么、我们来自哪里、形成我们认知的经历，等等。我们能否为人们所接受是一件不受我们自身控制的事情。但是，我们是可以通过与之交流来改变的。在开源的社区化世界里，记住这一点是非常重要的：人们是不会过多的考虑你的感受的。因为你的同事和导师都在忙于其它项目或则社区成员。一旦你认知了这一点，通过积极地沟通来热情拥抱这个世界吧。寻求帮助、告知他人你的需求、指出你的贡献、让人们知道你和他们在一起努力、你也是这个社区中的活跃分子。当人们向你靠拢 ——而非相反 —— 时，你的开源可信度和自信会得到极大的提高。所有人都热衷于分享自己熟知的事情任何成功的开源社区都是一个包含教和学的社区。为沐浴在开源中，你不仅需要用到自身的已有知识，还需要不断的吸收消化其他人提供课程中的知识。幸运的是，人们都普遍热衷于分享他们熟悉的事情。思考一下，当他人问及你的观点时，你是什么感受。得知他人认可了你所说的观点，对你的本我和自我是多么美好的一件事。在儿童期时，我们的大脑并没有那么发达，无法为我们容纳现实世界中大量的信息量。我们曾一度认为自己是世界的中心。在六岁以前，我们的认知一直在不断成长。在此期间，我们的父母会因我们哭泣而做出回应，周围的成年人都会满足我们要求。这会在我们心底形成自己在世界上最重要的证据。我们的神经回路在此期间建立完成，我们的性格也在此期间形成。随着我们学会参与社会和城市的生活，我们逐渐的认识到自己并非世界的中心。然而，最初形成并深植我们心底那种意识并不会因此马上就消除掉。正确理解我们在整个社会氛围中的个人意识将有助于你与他人建立连接并融洽相处。在团结协作中慢慢积累学习经验可以很好的磨练自己、发展自己社会关系和提高自身技能。想要进军开源的世界，不断地学习是不可或缺的。那么，这些和自信有些什么关系呢？通过表明你重视他人的知识和付出，你提高的不仅是他们的自信，还有你自己的自信。那时你将会感到更加灵活。有些时候，你不得不承认自己也有不懂的地方。自信的人也许会说“是的，我不知道”，但却不会因此而沮丧。一分耕耘，一分收获你一定听过“不懂装懂，永远是饭桶”。这样说吧，自信就像其他很多的心理现象。积极地提示自己：我很聪明、有趣、引人关注、极富天赋、健谈、是一个很好的伙伴、独一无二、知识面广、学习能力强、常常自省的思想者，或者是其他你想…

2016 年十大顶级开源项目
type: item
date: 2017-02-14T17:08:00+08:00
description: 在我们今年的年度顶级开源项目列表中，让我们回顾一下作者们提到的几个 2016 年受欢迎的项目，以及社区管理员选出的钟爱项目。我们持续关注每年新出现的、成长、改变和发展的优秀开源项目。挑选 10 个开源项目到我们的年度顶级项目列表中并不太容易，而且，也没有哪个如此短的列表能够包含每一个应该包含在内的项目。为了挑选 10 个顶级开源项目，我们回顾了作者们 2016 年涉及到的流行的开源项目，同时也从社区管理员收集了一些意见。经过管理员的一番推荐和投票之后，我们的编辑团队选定了最终的列表。它们就在这儿， 2016 年 10 个顶级开源项目：AtomAtom 是一个来自 GitHub 的 可魔改的 （ hackable ） 文本编辑器。Jono Bacon 在今年的早些时候为它的“简单核心”写了一篇文章，对该开源项目所给用户带来的选择而大加赞赏。“Atom 带来了大多数用户想要的主要核心特性和设置，但是缺失了一些用户可能想要的更加高级或独特的特性。……Atom 提供了一个强大的框架，从而允许它的许多部分都可以被改变或扩展。”如果打算开始使用 Atom， 请先阅读这篇指南。如果想加入到用户社区，你可以在 GitHub、Discuss 和 Slack 上找到 Atom 。Atom 是 MIT 许可的，它的源代码托管在 GitHub 上。Eclipse CheEclipse Che 是下一代在线集成开发环境（IDE）和开发者工作区。Joshua Allen Holm 在 2016 年 11 月为我们点评了 Eclipse Che，使我们可以一窥项目背后的开发者社区，Eclipse Che 创新性地使用了容器技术，并且开箱即用就支持多种流行语言。“Eclipse Che 集成了 就绪即用 （ ready-to-go ） 的 软件环境 （ stack ） 覆盖了绝大多数现代流行语言。这包括 C++、Java、Go、PHP、Python、.NET、Node.js、Ruby on Rails 和 Android 开发的软件环境。 软件环境仓库 （ Stack Library ） 如果不够的话，甚至还提供了更多的选择，你可以创建一个能够提供特殊环境的定制软件环境。”你可以通过网上的托管账户、本地安装，或者在你常用的云供应商上测试 Eclipse Che。你也可以在 GitHub 上找到它的源代码，发布于 Eclipse 公开许可证之下。FreeCADFreeCAD 是用 Python 写的，是一款电脑辅助设计工具（或叫电脑辅助起草工具），可以用它来为实际物体创建设计模型。 Jason Baker 在 3 款可供选择的 AutoCAD 的开源替代品一文中写到关于 FreeCAD ：“FreeCAD 可以从各种常见格式中导入和导出 3D 对象，其模块化结构使得它易于通过各种插件扩展基本功能。该程序有许多内置的界面选项，这包括从草稿到渲染器，甚至还有一个机器人仿真能力。”FreeCAD 是 LGPL 许可的，它的源代码托管在 GitHub 上。GnuCashGnuCash 是一个跨平台的开源桌面应用，它可以用来管理个人和小型商业账户。 Jason Baker 把 GnuCash 列入了我们针对个人金融的 Mint 和 Quicken 的开源替代品的综述列表中：GnuCash “具有多项记账的特性，能从多种格式导入数据，处理多重汇率，为你创建预算，打印支票，创建定制计划报告，并且能够直接从网上银行导入和拉取股票行情。”其发布于 GPL 版本 2 或版本 3 许可证下，你可以在 GitHub 上找到 GnuCash 的源代码。一个值得一提的 GnuCash 可选替代品是 KMyMoney，它也得到了该列表的提名，是另一个在 Linux 上管理财务的好选择。KodiKodi 是一个开源媒体中心应用，之前叫做 XBMC，它能够在多种设备上工作，是一个用来 DIY 播放电影、TV、音乐的机顶盒的工具。 Kodi 高度可定制化，它支持多种皮肤、插件和许多遥控设备（包括它自己定制的 Android remote 应用）。尽管今年我们没有深入地报道 Kodi， 但依旧出现在许多关于创建一个家用 Linux 音乐服务器、媒体管理工具的文章中，还出现在之前的一个关于最喜爱的开源视频播放器的投票中（如果你在家中使用 Kodi，想要写一些自己的体验，请让我们知道）。其发布于 GPLv2 许可证下，你可以在 GitHub 上找到 Kodi 的源代码。MyCollabMyCollab 是一套针对顾客关系管理（CRM）、文档管理和项目管理的工具。社区管理员 Robin Muilwijk 在他的综述 2016 年 11 个顶级的项目管理工具一文中详细阐述了 MyCollab-Projec…

2015 年度开源项目新秀榜
type: item
date: 2015-06-27T16:50:00+08:00
description: 黑鸭（Black Duck）软件公布了一份名叫“年度开源项目新秀”的报告，介绍了由全球开源协会发起的10个最有趣、最活跃的新项目。年度开源项目新秀每年都有上千新的开源项目问世，但只有少数能够真正的吸引我们的关注。一些项目因为利用了当前比较流行的技术而发展壮大，有一些则真正地开启了一个新的领域。很多开源项目建立的初衷是为了解决一些生产上的问题，还有一些项目则是世界各地志同道合的开发者们共同发起的一个宏伟项目。从2009年起，开源软件管理公司黑鸭便发起了年度开源项目新秀这一活动，它的评选根据Open Hub网站（即以前的Ohloh）上的活跃度。今年，我们很荣幸能够报道2015年10大开源项目新秀的得主和2名荣誉奖得主，它们是从上千个开源项目中脱颖而出的。评选采用了加权评分系统，得分标准基于项目的活跃度，交付速度和几个其它因数。开源俨然成为了产业创新的引擎，就拿今年来说，和Docker容器相关的开源项目在全球各地兴起，这也不恰巧反映了企业最感兴趣的技术领域吗？最后，我们接下来介绍的项目，将会让你了解到全球开源项目的开发者们的在思考什么，这很快将会成为一个指引我们发展的领头羊。2015年度开源项目新秀: DebOpsDebOps收集打包了一套Ansible方案和规则（Ansible是一种自动化运维工具），可以从1个容器扩展到一个完整的数据中心。它的创始人Maciej Delmanowski将DebOps开源来保证项目长久进行，从而更好的通过外部贡献者的帮助发展下去。DebOps始创于波兰的一个不起眼大学校园里，他们运营自己的数据中心，一切工作都采用手工配置。有时系统崩溃而导致几天的宕机，这时Delmanowski意识到一个配置管理系统是很有必要的。以Debian作为基础开始，DebOps是一组配置一整个数据基础设施的Ansible方案。此项目已经在许多不同的工作环境下实现，而创始者们则打算继续支持和改进这个项目。2015年度开源项目新秀: Code Combat传统的纸笔学习方法已近不能满足技术学科了。然而游戏却有很多人都爱玩，这也就是为什么CodeCombat的创始人会去开发一款多人协同编程游戏来教人们如何编码。刚开始CodeCombat是一个创业想法，但其创始人决定取而代之创建一个开源项目。此想法在社区传播开来，很快不少贡献者加入到项目中来。项目发起仅仅两个月后，这款游戏就被接纳到Google’s Summer of Code活动中。这款游戏吸引了大量玩家，并被翻译成45种语言。CodeCombat希望成为那些想要一边学习代码同时获得乐趣的同学的风向标。2015年度开源项目新秀: StorjStorj是一个点对点的云存储网络，可实现端到端加密，保证用户不用依赖第三方即可传输和共享数据。基于比特币block chain技术和点对点协议，Storj提供安全、私密、加密的云存储。云数据存储的反对者担心成本开销和漏洞攻击。针对这两个担忧，Storj提供了一个私有云存储市场，用户可以通过Storjcoin X(SJCX) 购买交易存储空间。上传到Storj的文件会被粉碎、加密和存储到整个社区。只有文件所有者拥有密钥加密的信息。在2014年举办的Texas Bitcoin Conference Hackathon会议上，去中心化的云存储市场概念首次被提出并证明可行。在第一次赢得黑客马拉松活动后，项目创始人们和领导团队利用开放论坛、Reddit、比特币论坛和社交媒体增长成了一个活跃的社区，如今，它们已成为影响Storj发展方向的一个重要组成部分。2015年度开源项目新秀: Neovim自1991年出现以来，Vim已经成为数以百万计软件开发人员所钟爱的文本编辑器。 而Neovim就是它的下一个版本。在过去的23年里，软件开发生态系统经历了无数增长和创新。Neovim创始人Thiago de Arruda认为Vim缺乏当代元素，跟不上时代的发展。在保留Vim的招牌功能的前提下，Neovim团队同样在寻求改进和发展这个最受欢迎的文本编辑器的技术。早期众筹让Thiago de Arruda可以连续6个月时间投入到此项目。他相信Neovim社区会支持这个项目，激励他继续开发Neovim。2015年度开源项目新秀: CockroachDB前谷歌员工开发了一个开源的大型企业数据存储项目CockroachDB，它是一个可扩展的、跨地域复制且支持事务的数据存储的解决方案。为了保证在线的百万兆字节流量业务的质量，Google开发了Spanner系统，这是一个可扩展的，稳定的，支持事务的系统。许多参与开发CockroachDB的团队现在都服务于开源社区。就像真正的蟑螂（cockroach）一样，CockroachDB可以在没有数据头、任意节点失效的情况下正常运行。这…