📜  如何开始为 DuckDuckGo 的开源社区做贡献

📅  最后修改于: 2021-10-19 04:46:48             🧑  作者: Mango

先决条件:提出你的第一个开源拉取请求 | GitHub

如果你刚接触开源并想为它做出贡献,你一定已经阅读了数十篇关于初学者如何开始使用开源的不同文章,但你仍然没有对任何开源组织做出任何贡献,你仍然就像您第一次开始阅读此类文章时一样被它吓倒。
如果您可以与上面提到的任何内容相关联,那么您应该阅读这篇文章。

为什么你应该阅读这篇文章?

在我开始之前,我想告诉你,我以前也处于同样的情况,这篇文章不会成为那些通用文章之一。
这篇文章特别是关于一个名为 DuckDuckHack 的组织,在我看来,它最适合初学者开始,希望在完成本文后的几个小时内,您将记录并提交您的第一个 Pull Request。

组织

DuckDuckHack 是一个致力于开发 DuckDuckGo 的开源社区。 DuckDuckGo 是一个互联网搜索引擎,强调保护搜索者的隐私并避免个性化搜索结果的过滤气泡。它不会对其用户进行概要分析,而是针对给定的搜索字符串向所有用户显示相同的搜索结果,而不是为每个用户创建个性化的搜索结果。重点是返回最佳搜索结果。

使命

DuckDuckHack 社区的使命是使 DuckDuckGo 成为最好的搜索引擎,社区需要帮助。帮助可以采用即时答案(或 IA)的形式。例如,一个 GCD 计算器,用户输入 2 个数字和字符串“gcd”,而不是去另一个网站寻找答案,他们就在 DuckDuckGo 上得到答案。

投资顾问的类型:

根据 DuckDuckHack Docs,有四种类型的 IA

  • 好东西
  • 香料
  • 黑头
  • 长尾巴

我们将专注于好东西 IA,因为其余的都是基于 API 的,可能不适合初学者。最简单的好东西是备忘单。例如,你想要一个快速的 c++ 参考,那么你所要做的就是去 DuckDuckGo 并输入以下“c++ 备忘单”并搜索。它将如下所示。

备忘单可以是任何内容,从电影和视频游戏秘籍到 Linux 发行版备忘单,您只需要一个想法,其余的都很简单。

入门

本节是在假设您熟悉 git 和 github 的情况下编写的,如果不熟悉,那么您可能应该查看此链接。

设置开发环境:

  1. 转到 GitHub 并 forkduckduckgo/zeroclickinfo-goodies。这是包含好东西 IA 的主要存储库,其中还包括备忘单
  2. 现在你在你的 github 配置文件上有一个他们的存储库的副本,这个分支将是你的源,而你已经分支的主存储库将是你的上游(这些术语将在后面解释)
  3. 我们将使用名为 codio 的在线开发环境,而不是将此存储库克隆到您的计算机上
  4. 在 codio 上注册或仅使用您的 github 帐户注册
  5. 加入 DuckDuckGo 组织。 Codio 对 DuckDuckHack 社区成员免费。
  6. 现在转到此链接,通过单击项目选项卡并选择 fork 选项,在您的 codio 配置文件中创建项目。
  7. 现在会出现一个弹出窗口,选择“Box & Project”选项。
  8. 现在,首先转到 codio 项目页面并选择“DuckDuckGo”项目,将您的 github fork(来源)克隆到您的 codio 上
  9. 现在打开工具->终端类型
    git clone .git (your github URL is your fork on github)
  10. 输入您的 github 凭据并按 Enter

现在您将拥有 github fork 的文件树,您可以查看所有文件。现在我们将进入贡献部分。

做出你的贡献

在开始编辑现有文件或创建新文件之前,我们需要设置我们的遥控器,以便我们可以从 codio 拉取和推送更改。
设置遥控器:

  1. 通过在终端中执行以下命令切换到工作目录
    cd zeroclickinfo-goodies
  2. 通过执行以下操作将您的第一个遥控器添加到 GitHub 上的主 DuckDuckGo 存储库
    git remote add upstream https://github.com/duckduckgo/zeroclickinfo-goodies.git
  3. 由于您已经将您的 GitHub fork 克隆到您的 codio 机器上,它已经为您的 GitHub fork 设置了一个远程源,或者您仍然可以这样做以确保
    git remote add origin https://github.com/your_username/zeroclickinfo-goodies.git

在编写备忘单之前,您需要使用您的 GitHub 帐户登录到 IAs 页面,并以与备忘单的名称相同的名称创建一个新的 IA 页面,例如我写了一个 lolcode 备忘单作为我的第一个贡献,所以我命名为IA 页面 Lolcode Cheat Sheet,我添加了描述和源描述。来源只是一个网站,我在那里找到了有关 Lolcode 关键字和转义序列的基本信息,其余的只是复制粘贴。

写备忘单

Duckduckgo 备忘单只是一个单独的 json 文件,其中的信息以键值对的形式存储。所有备忘单都存储在

zeroclickinfo-goodies/share/goodie/cheat_sheets/json

.因此,继续我的 lolcode 备忘单示例,让我们开始编写它。

  1. 制作 IA 页面后,您需要返回 codio.com 并打开终端并切换到您的工作目录
    cd zeroclickinfo-goodies
  2. 在做出任何贡献之前,您应该创建自己的分支,该分支稍后将与上游存储库的主分支合并。为此,请执行以下操作
    git checkout -b lolcode

    您的分支名称可以是任何名称,但因为我使用的是我的示例,所以我使用了 lolcode。请记住始终创建一个新分支,并且永远不要在主分支中进行更改,否则您最终可能会惹恼很多人。

  3. 现在我们将通过执行以下操作来生成样板 json 文件:
    duckpan new --cheatsheet. 

    它会提示您输入名称,您将输入名称并按回车键。例如,让我们命名备忘单 lolcode 并按回车键。您将在文件树中看到一个名为 lolcode.json 的新 json 文件

  4. 单击您的样板文件,它将在新选项卡中打开,现在您可以开始编辑它。
  5. 如您所见,大部分工作已经为您完成,您需要做的就是编辑一些字符串。从添加元数据开始
    "id": "lolcode_cheat_sheet",
    "name": "lolcode",
    "description": "lolcode keywords and how to use them",
    
    "metadata": {
            "sourceName": "Esolang wiki",
            "sourceUrl": "http://www.your-source-url/"
    },
    
  6. 现在填写别名。这些是用户将查找的搜索字符串,例如,如果我搜索“cpp 备忘单”或“c++ 备忘单”,cpp 和 c++ 是别名,备忘单是触发器。
    例如,对于 lolcode 备忘单,我们将只有 1 个别名。

    "aliases": [
            "lolcode"
       ],
    
  7. 如果您要制作编程备忘单,请选择代码模板
  8. 现在我们填写不同的部分,信息将以键值对的形式填写,假设我的 lolcode 备忘单有一个数据类型部分,我想显示一个数据类型及其定义,那么数据类型将是“键”和定义将是“值”,节名称将是数据类型
    "sections": {
            "Data Types": [
                {
                    "val": "It is an integer",
                    "key": "NUMBR"
                }, {
                    "val": "It is a float",
                    "key": "NUMBAR"
                }
            ]
           }
                
  9. 您还必须给出部分顺序,例如
    "section_order": ["Data Types", "Escape Sequences"]

验证备忘单

您可以使用 JSON 验证器来验证您的 json,并将您的 JSON 复制粘贴到验证器中。
现在在终端中使用以下命令验证您的备忘单代码

duckpan test CheatSheets

如果您没有收到警告,则意味着您的备忘单没有问题。

测试你的备忘单

  1. 转到终端并输入
    cd zeroclickinfo-goodies
  2. 现在输入
    duckpan server

    然后按回车

  3. 现在单击屏幕顶部的 DuckPAN 服务器按钮,这将打开一个带有 DuckDuckGo 主页的新浏览器选项卡
  4. 现在搜索您的备忘单,例如 lolcode 备忘单,您将看到类似这样的内容。

推动你的改变

现在您需要提交并将您的更改推送到您的分支。

  1. 返回 codio 并检查您是否仍在工作目录中 zeroclickinfo-goodies
  2. 现在通过执行添加并提交所有更改的文件
    git add

    按回车

    git commit -m "Description of your changes"

    按回车

  3. 现在通过执行将您的更改推送到您的 GitHub 分支
    git push origin branch_name

    输入您的 GitHub 用户名和密码后,系统将提示您输入您的分叉将被更新。

起草你的拉取请求

  1. 转到您的 GitHub 分支并检查您的备忘单是否已更新。如果是,那么您已准备好提出拉取请求
  2. 点击绿色的“New pull request”按钮
  3. 查看更改并单击“创建拉取请求”
  4. 输入拉取请求的标题和描述以及 IA 页面链接,例如“New Lolcode Cheat Sheet”
  5. 最后点击创建拉取请求

结论

如果您已成功完成上述步骤,那么恭喜您做出了第一个开源贡献。现在你必须记住一些事情,备忘单是最低优先级的任务,可能需要几个月的时间才能合并,所以你必须等待。