新开发者
本页介绍了如何开始作为一個想要为維基媒體技术项目做出贡献的开发人员。
欢迎!
维基媒体的技术社群永遠欢迎新的贡献者。
成为全域社群的一员,然後帮助每个人更轻松地获取自由的知识!
如何開始貢獻
下列的步驟是一個通用的概述,說明如何開始貢獻:
- 了解維基媒體開源軟體計劃是如何工作的基本知識。
- 閱讀溝通的指引方針.
- 創立帳戶:建立一個開發者帳戶。依你想要貢獻的種類不同有所不同,你可能也需要在Phabricator和Git and Gerrit創立帳戶。
- 选择一个软件项目。
- 选择并解决一個任务(编写及测试你的代码)。
- 提交您更改的代码以供審核。 依照讓你的代碼得到審核的指引以及提交一個補丁。
本指南的其余部分提供了有关这一过程的其他细节。
维基媒体软件项目如何运作的基础知识
维基媒体在许多不同领域有許多软件项目。
每个软件项目的维护者都可以选择他们喜好的基础结构。通常,大多数软件项目都具有:
- 一個任务追踪的工具,用于提报、管理和讨论软件bug和改善请求。例如维基媒体的Phabricator、GitHub、或维基媒体的GitLab。
- 一个源代码存储库,裏面的源代码可以讓每个人「試試看」。例如维基媒体的Gerrit、GitHub、或维基媒体的GitLab。
- 一个代码審核工具,可以讓提出的代码更改(補丁)在這裏得到讨论和改进。例如維基媒體的Git/Gerrit、GitHub、或GitLab。你提出的補丁被核准並被合併到代码存储库裏之後,你更改的代码就變成每个人都可以使用。
- 一般的软件项目、帮助、和支持的讨论地方。这些地方可以是邮件列表、IRC聊天频道、wiki页面、或其他地方。确切的地方取决于每个项目。
在任何时候,如果你遇到问题或需要帮助,请提出要求。在合适的地方提出好的问题,你可以照著“溝通小技巧”做。
技术领域概述
关于维基媒体技术的概述和开发者可以贡献的主要领域的例子,请拜訪维基媒体技术生态系统简介。
为MediaWiki的软件做贡献
您是MediaWiki维基的用户,希望添加功能或修复其中的错误吗? 请参阅如何成为MediaWiki开发者 以了解如何查找您正在寻找的MediaWiki软件项目部分并为其做出贡献。
选择一個软件项目
以下项目提供资源、指导,并正在寻找可以贡献給他们的新开发人员們。 选择下列项目之一并按照项目的帮助文档去配置您的开发环境、选择一个任务去做、解决该任务、然後提交您更改的代码以供審查。 您可以自由地为这些项目或任何您感兴趣的与维基媒体相关的其他项目做出贡献。 大多数可以通过在Phabricator 或网上搜索找到。
一個为没有互联网的人提供的离线阅读器
- 所需技能: Java/Kotlin (Android), Swift (iOS), Qt (desktop), NodeJS (mediawiki offliner), C++, Python (WP1)
- 取得联系: Mailing list / Slack
- 获取源代码: GitHub
- 阅读通用文档和相应项目的README.md文件
- 查看推荐执行的任务: Android, iOS, JS, mwoffliner on GitHub
- 导师: Matthieu Gauthier, Emmanuel Engelhart, Stephane Coillet-Matillon
适用于安卓的维基共享资源应用程序
一個适用于安卓设备的应用程序,用于将您的图片上传到维基共享资源
- 所需技能: Java
- 取得联系: Google Groups
- 获取源代码: GitHub
- 阅读文档
- 查看推荐执行的任务: GitHub
- 导师: Josephine Lim
Pywikibot
一個在MediaWiki网站上自动化工作的 Python函式庫和脚本集合。
- 所需技能: Python
- 取得联系: #pywikibot 連線 on irc.libera.chat / Mailing list
- 获取源代码: 使用git以获取源代码
- 阅读文档還有API reference
- 檢視推薦執行的任務: Phabricator
- 导师: xqt
影片切剪工具
一个用于编辑维基共享资源上的视频的工具。
- 所需技能: React JS, Node JS.
- 取得联系: #VideoCutTool in Zulip
- 获取源代码: See link in description in Phabricator
- 阅读文档
- 檢視推薦執行的任務: Phabricator
- 导师: Gopa Vasanth
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.
- Skills required : JS, web extension, OOjs
- Get in touch: contact Yug or on GitHub
- Get the source code: GitHub
- Read the documentation: m:Lingua Libre/SignIt
- Check the recommended tasks to work on: Good first issues on GitHub »
- Mentor(s): Yug
您作为一名维护者,希望您的项目包含在上面的软件项目列表中吗? 了解更多并加入!
外联计划和单一任务
除了上面推荐的软件项目之外,还有更多方法可以选择要从事的项目或任务:
外展计划
合適的首次任务
只是,这些任务可能没有导师,并且您提出的补丁可能不会得到快速审核。
交流的小技巧
这些技巧能让你有效地与他人沟通,得到社区中其他成员的帮助。
高效率地使用Phabricator任务
当您准备着手处理一个Phabricator 任务时:
- 无需请求许可: 您无需请求任何人将任务分配给您即可开始进行任务。 不存在谁能分配任务或是需要先问谁的权威人士。
- 如果一个任务在Gerrit中已经有了一个最近的补丁,请选择一个不同的任务作為替代。
- 如果Gerrit中的一个现有补丁還没有被合并,而且很长时间都没有任何改动,你可以根据Gerrit裏和任务裏的反馈,改进那個现有补丁。
- 自行研究: 当您考虑进行某个任务时,在开始敲代码前先研究一番。仔細看看代码,試著去理解这些代码本该达到什么目的,閱讀相關的文件,然后尽量找到应该作出修改的地方。
- 在一個Phabricator 任务中,使用侧边栏中的项目标签,找到任务的代码库。
- 如果您对修复某个漏洞的办法毫无头绪,考虑先找个更简单的。
- 你不需要在开始工作之前宣佈你的计划,但你应该传达你正在进行的任务。
- 当你开始工作时,通过点击Phabricator中的「编辑任务...」将自己设置为任务分配人,并在「分配给」字段中设置你的Phabricator用户名。 这就向其他人传达了你正在工作,所以他们不会重复工作。
- 当你的计划或兴趣改变时: 如果你不再从事某项工作,请将你自己作为该任务的分配人删除。 这告诉其他人,他们可以从事这项工作,而他们不会期望你仍然在从事这项工作。
- 遵守Phabricator礼仪.
- 在Phabricator任务中,只讨论有关该任务主题的具体问题。 別拿Phabricator来问一般的问题,比如如何建立一个开发环境或如何修复Gerrit的问题。
撰写好的问题
- 不要讓他人還要從你的提問裏面再提問...只要讓他人看你的提問一次就好!。
- 要具体,并提供來龍去脈: 不要只是简单地问:「你能给我更多信息吗?」、「请指导我」、或「请告诉我如何开始」,而是在你的问题中包括以下信息:
- 你想要达到什么?
- 你已經試過什麼? 复制和粘贴你的命令和它们的输出(如果不是太长),而不是用你自己的话进行转述。
- 在你的研究中,你已经发现了什么? 包括代码的链接、文档的链接、或其他你已经咨询过的资源的链接。
- 在你的通信中使用具体的标题和主题行。 「提案的草案」或「我需要帮助」并不具体。
- 保持对话的可读性: 当你在Zulip、Phabricator任务或邮件列表中回复时,只引用与你的回复相关的先前评论部分。 如果你引用一整個「完整的」以前的评论,它使线程难以阅读。
遵循沟通政策與最佳做法
在你发送或张贴你的问题之前:
- 阅读并遵守维基媒体技术空间行为守则。
- 使用inclusive language : 不要使用假定性别身份的字眼(如「兄弟」、「夫人」或「先生」),而是應該使用人的姓名。
在正确的地方提问
- 公开询问:如果你谈话的主题不是什麼秘密,就不要发送私人信息。 私人信息对他人没有作用。
- 在最好的地方提问和讨论:
请耐心等待
在你发布你的问题之后:
- 不要在单独的信息中要求别人进行代码审查。 人们会收到Gerrit和Phabricator的通知,并会在他们可以的时候做出回应。
- 在征求意见和评论时,特别是在周末和节假日,你可能需要等到恢复工作时间。 在像IRC这样的聊天频道中:如果没有人回答,在不同的时间再试一次;別这样就放弃了。
- 如果你在等待和耐心等待之后仍然没有得到答案,请考虑其他沟通渠道是否是一个更好的地方来提出你的问题。
額外的資源
- 维基媒体技术生态系统简介提供了一个关于维基媒体技术的概述,專注在开发者可以作出贡献的主要领域。
- 如何贡献列出了许多的贡献方式,其中包括了文档、测试等领域。
- 如何成为MediaWiki的黑客:适用于希望在MediaWiki核心或MediaWiki扩展上工作的开发人员。
- Newbie guide for the Web team
- 开发者中心:为已建立的维基媒体开发者提供更多资源。
- 想要提出您的问题并加入一般性讨论,请查看 聯繫交流 上列出的位置。
- Wikimedia tutorials:维基媒体技术栈中各种语言、API和框架的教程索引。
- Supporting newcomers at hackathons
- Newcomer support at hackathons and the associated mentor guide
- Newcomers section of the Hackathons Handbook, as well as the Mentoring Tips page
- How-to page for newcomers at the Wikimedia Hackathon 2022