新开发者
本页面解释了如何开始做一名維基媒體技术项目做出贡献的开发者。
欢迎!
维基媒体的技术社群永遠欢迎新的贡献者。
成为全域社群的一员,然後帮助每个人更轻松地获取自由的知识!
如何開始貢獻
下列的步驟是一個通用的概述,說明如何開始貢獻:
- 了解維基媒體開源軟體計劃如何工作的基本知識。
- 閱讀溝通的指引方針。
- 建立帳戶:创建一個開發者账号。根据你想要作出的贡献类别,你可能也需要在Phabricator创建账号并建立Git和Gerrit。
- 选择一个软件项目。
- 选择并解决一個任务(编写及测试你的代码)。
- 提交您更改的代码以供審核。 遵守指引讓你的代碼得到審核并提交補丁。
本指南的其余部分提供了有关这一过程的其他细节。
维基媒体软件项目如何运作的基础知识
维基媒体在许多不同领域有許多软件项目。
每个软件项目的维护者都可以选择他们喜好的基础结构。通常,大多数软件项目都具有:
- 一個任务追踪的工具,用于提报、管理和讨论软件bug和改善请求。例如维基媒体的Phabricator、GitHub、或维基媒体的GitLab。
- 一个源代码存储库,裏面的源代码可以讓每个人「試試看」。例如维基媒体的Gerrit、GitHub 、和维基媒体的GitLab。
- 一个代码審核工具,可以讓提出的代码更改(補丁)在這裏得到讨论和改进。例如維基媒體的Git/Gerrit、GitHub、或GitLab。你提出的補丁被核准並被合併到代码存储库裏之後,你更改的代码就變成每个人都可以使用。
- 为软件项目、帮助和支持设立的一般讨论场合。这些场合可以是邮件列表、IRC聊天频道、wiki页面、或其他场合。确切的场合取决于各个项目。
在任何时候,如果你遇到问题或需要帮助,请提出要求。在合适的地方提出好的问题,你可以照著"溝通小技巧"做。
技术领域概述
关于维基媒体技术的概述和开发者可以贡献的主要领域的例子,请拜訪维基媒体技术生态系统简介。
为MediaWiki的软件做贡献
您是MediaWiki维基的用户,希望添加功能或修复其中的错误吗? 请参阅如何成为MediaWiki黑客 以了解如何查找您正在寻找的MediaWiki软件项目部分并为其做出贡献。
选择一個软件项目
以下项目提供资源、指导,并正在寻找可以贡献給他们的新开发人员們。 选择下列项目之一并按照项目的帮助文档去配置您的开发环境、选择一个任务去做、解决该任务、然後提交您更改的代码以供審查。 您可以自由地为这些项目或任何您感兴趣的与维基媒体相关的其他项目做出贡献。 大多数可以通过在Phabricator 或网上搜索找到。
Kiwix
一個为没有互联网的人提供的离线阅读器
- 所需技能: Java/Kotlin (Android), Swift (iOS), Qt (desktop), NodeJS (mediawiki offliner), C++, Python (WP1)
- 取得联系: 邮件列表 / Slack
- 获取源代码: GitHub
- 阅读通用文档和相应项目的README.md文件
- 查看推荐执行的任务: GitHub上的Android、iOS、JS、mwoffliner
- 导师: Matthieu Gauthier, Emmanuel Engelhart, Stephane Coillet-Matillon
适用于安卓的维基共享资源应用程序
一個适用于安卓设备的应用程序,用于将您的图片上传到维基共享资源
- 所需技能: Java
- 取得联系: Google Groups
- 获取源代码: GitHub
- 阅读文档
- 查看推荐执行的任务: GitHub
- 导师: Josephine Lim
Wiki教育仪表板
一个用于维基百科教育作业的web应用程序,为教师和学生提供数据和课程管理
Logo Pywikibot
一個在MediaWiki网站上自动化工作的 Python函式庫和脚本集合。
- 所需技能: Python
- 取得联系: #pywikibot 在线 on irc.libera.chat / Mailing list
- 获取源代码: 使用git以获取源代码
- 阅读文档還有API reference
- 檢視推薦執行的任務: Phabricator
- 导师: xqt
Scribe Scribe
Scribe为第二语言学习者提供基于Wikidata的键盘。其功能包括翻译、动词時態变化和名词性别注释。这个项目对那些想学习所需语言和如何使用维基数据的人来说是非常开放的!
- 需要的技能:Scribe-iOS的Swift;Scribe-Android的Kotlin;Python和/或維基數據的查询服务的我们的Scribe-Data语言数据提取CLI
- 取得联系:GitHub或email
- 获取源代码:GitHub
- 阅读貢獻指南:Scribe-iOS、Scribe-Android或Scribe-Data
- 檢視推薦的任務:Scribe-iOS、Scribe-Android或Scribe-Data
- 导师:Andrew McAllister
Logo 影片切剪工具
一个用于编辑维基共享资源上的视频的工具。
- 所需技能: React JS, Node JS.
- 取得联系: Zulip的#VideoCutTool频道
- 获取源代码: 见Phabricator描述中的链接
- 阅读文档
- 檢視推薦執行的任務: Phabricator
- 导师: Gopa Vasanth, Varun Shrivastava, Punith B Nayak
您作为一名维护者,希望您的项目包含在上面的软件项目列表中吗? 了解更多并加入!
外联计划和单一任务
除了上面推荐的软件项目之外,还有更多方法可以选择要从事的项目或任务:
交流的小技巧
这些技巧能让你有效地与他人沟通,得到社区中其他成员的帮助。
高效率地使用Phabricator任务
当您准备着手处理一个Phabricator 任务时:
- 无需请求许可: 您无需请求任何人将任务分配给您即可开始进行任务。 不存在谁能分配任务或是需要先问谁的权威人士。
- 如果一个任务在Gerrit中已经有了一个最近的补丁,请选择一个不同的任务作為替代。
- 如果Gerrit中的一个现有补丁還没有被合并,而且很长时间都没有任何改动,你可以根据Gerrit裏和任务裏的反馈,改进那個现有补丁。
- 自行研究: 当您考虑进行某个任务时,在开始敲代码前先研究一番。仔細看看代码,試著去理解这些代码本该达到什么目的,閱讀相關的文件,然后尽量找到应该作出修改的地方。
- 在一個Phabricator 任务中,使用侧边栏中的项目标签,找到任务的代码库。
- 如果您对修复某个漏洞的办法毫无头绪,考虑先找个更简单的。
- 你不需要在开始工作之前宣佈你的计划,但你应该传达你正在进行的任务。
- 当你开始工作时,通过点击Phabricator中的"编辑任务..."(Edit Task...)将自己设置为任务受派人,并在"分派给"(Assigned To)字段中设置你的Phabricator用户名。 这就向其他人传达了你正在工作,所以他们不会重复工作。
- 当你的计划或兴趣改变时: 如果你不再从事某项工作,请将你自己从任务的受派人删除。 这告诉其他人,他们可以从事这项工作,而他们不会期望你仍然在从事这项工作。
- 遵守Phabricator礼仪。
- 在Phabricator任务中,只讨论有关该任务主题的具体问题。 別拿Phabricator来问一般的问题,比如如何建立一个开发环境或如何修复Gerrit的问题。
- 不要发表"请审核我的补丁"或"我提交了一个补丁,链接在此"之类的评论。 如果你的提交消息有正确的格式 ,补丁就会自动链接到任务,而且发表补丁已经隐含了审核请求,所以显式陈述请求添不了任何作用。
撰写好的问题
- 别问能不能问问题......直接问问题!。
- 要具体,并提供來龍去脈: 不要只是简单地问:「你能给我更多信息吗?」、「请指导我」、或「请告诉我如何开始」,而是在你的问题中包括以下信息:
- 你想要达到什么?
- 你已經試過什麼? 复制和粘贴你的命令和它们的输出(如果不是太长),而不是用你自己的话进行转述。
- 在你的研究中,你已经发现了什么? 包括代码的链接、文档的链接、或其他你已经咨询过的资源的链接。
- 在你的通信中使用具体的标题和主题行。 「提案的草案」或「我需要帮助」并不具体。
- 保持对话的可读性: 当你在Zulip、Phabricator任务或邮件列表中回复时,只引用与你的回复相关的先前评论部分。 如果你引用一整個「完整的」以前的评论,会使讨论串难以阅读。
遵循沟通政策與最佳做法
在你发送或张贴你的问题之前:
- 阅读并遵守维基媒体技术空间行为守则。
- 使用包容性语言 : 不要使用假定性别身份的字眼(如「老哥」、「夫人」或「先生」),而是應該使用人的名字。
在正确的地方提问
- 公开询问:如果你谈话的主题不是什麼秘密,就不要发送私信。 私信帮不到其他人。
- 在最好的地方提问和讨论:
请耐心等待
在你发布你的问题之后:
- 不要在单独的信息中要求别人进行代码审查。 人们会收到Gerrit和Phabricator的通知,并会在他们可以的时候做出回应。
- 在征求意见和评论时,特别是在周末和节假日,你可能需要等到恢复工作时间。 在像IRC这样的聊天频道中:如果没有人回答,在不同的时间再试一次;別这样就放弃了。
- 如果你在等待和耐心等待之后仍然没有得到答案,请考虑其他沟通渠道是否是一个更好的地方来提出你的问题。