This page is a translated version of the page New Developers and the translation is 84% complete.

本页介绍了如何开始作为一個想要为維基媒體技术项目做出贡献的开发人员。

欢迎!

 
Wikimedia Hackathon 2019 的参与者

维基媒体的技术社群永遠欢迎新的贡献者。

成为全域社群的一员,然後帮助每个人更轻松地获取自由的知识!

如何開始貢獻

下列的步驟是一個通用的概述,說明如何開始貢獻:

  1. 了解維基媒體開源軟體計劃是如何工作的基本知識
  2. 閱讀溝通的指引方針.
  3. 創立帳戶:建立一個開發者帳戶。依你想要貢獻的種類不同有所不同,你可能也需要在PhabricatorGit and Gerrit創立帳戶。
  4. 选择一个软件项目
  5. 选择并解决一個任务(编写及测试你的代码)。
  6. 提交您更改的代码以供審核。 依照讓你的代碼得到審核的指引以及提交一個補丁

本指南的其余部分提供了有关这一过程的其他细节。

维基媒体软件项目如何运作的基础知识

维基媒体在许多不同领域有許多软件项目。

每个软件项目的维护者都可以选择他们喜好的基础结构。通常,大多数软件项目都具有:

  • 一個任务追踪的工具,用于提报、管理和讨论软件bug和改善请求。例如维基媒体的Phabricator、GitHub、或维基媒体的GitLab
  • 一个源代码存储库,裏面的源代码可以讓每个人「試試看」。例如维基媒体的Gerrit、GitHub、或维基媒体的GitLab
  • 一个代码審核工具,可以讓提出的代码更改(補丁)在這裏得到讨论和改进。例如維基媒體的Git/Gerrit、GitHub、或GitLab。你提出的補丁被核准並被合併到代码存储库裏之後,你更改的代码就變成每个人都可以使用。
  • 一般的软件项目、帮助、和支持的讨论地方。这些地方可以是邮件列表、IRC聊天频道、wiki页面、或其他地方。确切的地方取决于每个项目。

在任何时候,如果你遇到问题或需要帮助,请提出要求。在合适的地方提出好的问题,你可以照著“溝通小技巧”做。

技术领域概述

关于维基媒体技术的概述和开发者可以贡献的主要领域的例子,请拜訪维基媒体技术生态系统简介

为MediaWiki的软件做贡献

您是MediaWiki维基的用户,希望添加功能或修复其中的错误吗? 请参阅如何成为MediaWiki开发者 以了解如何查找您正在寻找的MediaWiki软件项目部分并为其做出贡献。

选择一個软件项目

以下项目提供资源、指导,并正在寻找可以贡献給他们的新开发人员們。 选择下列项目之一并按照项目的帮助文档去配置您的开发环境、选择一个任务去做、解决该任务、然後提交您更改的代码以供審查。 您可以自由地为这些项目或任何您感兴趣的与维基媒体相关的其他项目做出贡献。 大多数可以通过在Phabricator 或网上搜索找到。

 

 

一個为没有互联网的人提供的离线阅读器

适用于安卓的维基共享资源应用程序

 

一個适用于安卓设备的应用程序,用于将您的图片上传到维基共享资源

Wiki教育仪表板

 

一个用于维基百科教育作业的web应用程序,为教师和学生提供数据和课程管理

  • 所需技能: Ruby, JavaScript
  • 取得联系: #wikimedia-ed connect或irc.libera.chat
  • 获取源代码: GitHub
  • 阅读文档
  • 查看推荐执行的任务: GitHub
  • 导师: Sage Ross

  Pywikibot

 

一個在MediaWiki网站上自动化工作Python函式庫和脚本集合。

  Scribe

 

Scribe为第二语言学习者提供基于Wikidata的键盘。其功能包括翻译、动词時態变化和名词性别注释。这个项目对那些想学习所需语言和如何使用维基数据的人来说是非常开放的!

  影片切割工具

 

一个用于编辑维基共享资源上的视频的工具。

  SignIt Firefox Extension

 

Lingua Libre SignIt web-browser extension translates selected written word via an elegant pop up so you learn sign language while reading online. You can add a signed video using Lingualibre.org by selecting a signed language, then video recording yourself while signing.

您作为一名维护者,希望您的项目包含在上面的软件项目列表中吗? 了解更多并加入!

外联计划和单一任务

除了上面推荐的软件项目之外,还有更多方法可以选择要从事的项目或任务:

  外展计划

维基媒体提供Google Summer of Code和Outreachy等项目的实习机会。

  合適的首次任务

有许多的单项任务(跨多个软件项目)适合新手。
只是,这些任务可能没有导师,并且您提出的补丁可能不会得到快速审核。

交流的小技巧

这些技巧能让你有效地与他人沟通,得到社区中其他成员的帮助。

高效率地使用Phabricator任务

当您准备着手处理一个Phabricator任务时:

  • 无需请求许可: 您无需请求任何人将任务分配给您即可开始进行任务。 不存在谁能分配任务或是需要先问谁的权威人士。
    • 如果一个任务在Gerrit中已经有了一个最近的补丁,请选择一个不同的任务作為替代。
    • 如果Gerrit中的一个现有补丁還没有被合并,而且很长时间都没有任何改动,你可以根据Gerrit裏和任务裏的反馈,改进那個现有补丁
  • 自行研究: 当您考虑进行某个任务时,在开始敲代码前先研究一番。仔細看看代码,試著去理解这些代码本该达到什么目的,閱讀相關的文件,然后尽量找到应该作出修改的地方。
    • 在一個Phabricator 任务中,使用侧边栏中的项目标签,找到任务的代码库。
    • 如果您对修复某个漏洞的办法毫无头绪,考虑先找个更简单的。
  • 你不需要在开始工作之前宣佈你的计划,但你应该传达你正在进行的任务。
    • 当你开始工作时,通过点击Phabricator中的「编辑任务...」将自己设置为任务分配人,并在「分配给」字段中设置你的Phabricator用户名。 这就向其他人传达了你正在工作,所以他们不会重复工作。
    • 当你的计划或兴趣改变时: 如果你不再从事某项工作,请将你自己作为该任务的分配人删除。 这告诉其他人,他们可以从事这项工作,而他们不会期望你仍然在从事这项工作。
  • 遵守Phabricator礼仪.
    • 在Phabricator任务中,只讨论有关该任务主题的具体问题。 別拿Phabricator来问一般的问题,比如如何建立一个开发环境或如何修复Gerrit的问题。

撰写好的问题

  • 不要讓他人還要從你的提問裏面再提問...只要讓他人看你的提問一次就好!
  • 要具体,并提供來龍去脈: 不要只是简单地问:「你能给我更多信息吗?」、「请指导我」、或「请告诉我如何开始」,而是在你的问题中包括以下信息:
    • 你想要达到什么?
    • 你已經試過什麼? 复制和粘贴你的命令和它们的输出(如果不是太长),而不是用你自己的话进行转述。
    • 在你的研究中,你已经发现了什么? 包括代码的链接、文档的链接、或其他你已经咨询过的资源的链接。
  • 在你的通信中使用具体的标题和主题行。 「提案的草案」或「我需要帮助」并不具体。
  • 保持对话的可读性: 当你在Zulip、Phabricator任务或邮件列表中回复时,只引用与你的回复相关的先前评论部分。 如果你引用一整個「完整的」以前的评论,它使线程难以阅读。

遵循沟通政策與最佳做法

在你发送或张贴你的问题之前:

在正确的地方提问

  • 公开询问:如果你谈话的主题不是什麼秘密,就不要发送私人信息。 私人信息对他人没有作用。
  • 在最好的地方提问和讨论:
    • 在Phabricator任务中,只讨论有关该任务主题的具体问题。
    • 联系交流 列出的地方裏面询问一般的技术问题,例如:如何建立一个开发环境或如何解决Gerrit的问题。
    • 如果你参加了拓展计划,那么Zulip是用来讨论关于拓展计划本身的问题。

请耐心等待

在你发布你的问题之后:

  • 不要在单独的信息中要求别人进行代码审查。 人们会收到Gerrit和Phabricator的通知,并会在他们可以的时候做出回应。
  • 在征求意见和评论时,特别是在周末和节假日,你可能需要等到恢复工作时间。 在像IRC这样的聊天频道中:如果没有人回答,在不同的时间再试一次;別这样就放弃了。
  • 如果你在等待和耐心等待之后仍然没有得到答案,请考虑其他沟通渠道是否是一个更好的地方来提出你的问题。

額外的資源