New Developers

''This page is a simple and guided landing page for new Wikimedia developers. It is part of the Onboarding new developers initiative. For other options to get involved, see How to contribute.''

Welcome!
You want to work on Wikimedia code and need ideas where to start? Wikimedia's technical community always welcomes new contributors to our projects. Become part of a global community and help making access to free knowledge easier for everybody!

Contributing to Wikimedia is a four-step process:
 * 1) Choose a software project
 * 2) Set up your development environment
 * 3) Choose and solve a task (write and test your code)
 * 4) Submit your code changes

Some basics to know
You can skip this section if you are already used to free and open source software culture.

Wikimedia has hundreds of software projects in many different areas. if you want to get an overview.

The maintainers of each software project are pretty free to choose the infrastructure they prefer. In general, basically all software projects have
 * a task tracking tool where software bugs and enhancement requests are reported, managed and discussed. Examples are Wikimedia Phabricator, GitHub, or Sourceforge.


 * a code repository where the source code can be "checked out" to everybody. Examples are Wikimedia Git/Gerrit, GitHub, or Sourceforge.
 * a code review tool where proposed code changes (so-called patches) get discussed and improved. Examples are Wikimedia Git/Gerrit, GitHub, or Sourceforge. Once your proposed patch is good and is merged into the code repository, your code changes will become available to everybody. (You could read more about good practices for code review here.)
 * general places for discussion of the software project and/or for receiving help and support. Those places can be mailing lists or IRC chat channels or wiki pages or other places. The exact places depend on each project. You could also contact specific mentors via "Email this user" on their user pages, but note that "questions asked in private don't help others".

At any point, if you run into problems or need help, please ask. If you want to ask good questions in the right places, we recommend you read the section "Feedback, questions and support".

Choose a software project
This is the recommended way to start. Choose one of the following projects and follow the project's documentation to set up your development environment, choose a task to work on, solve the task, and submit your code changes for review:



  An anti-vandalism desktop application for Wikimedia projects
 * Skills required: C++ with Qt
 * Get in touch: Mailing list / Chat in on irc.freenode.net
 * Get the source code: GitHub
 * Read the user and programmer documentation
 * Check the recommended tasks to work on: Phabricator
 * Mentor(s): Peter Bena

  An offline reader for Wikipedia web content
 * Skills required: Java (Android app), Swift (iOS app)
 * Get in touch: Mailing list / Chat in on irc.freenode.net
 * Get the source code: GitHub
 * Read the general documentation and the README.md file of the corresponding project
 * Check the recommended tasks to work on: Android, iOS, JS on GitHub
 * Mentor(s): Matthieu Gauthier, Emmanuel Engelhart, Stephane Coillet-Matillon

 MediaWiki Newsletter extension Subscribe to newsletters and publish newsletters for other wiki users
 * Skills required: PHP
 * Get the source code: Wikimedia Git
 * Read the documentation. You will need to have MediaWiki installed.
 * Check the recommended tasks to work on: Phabricator
 * Mentors: Tony Thomas

 Commons App for Android An app for Android devices to upload your pictures to Wikimedia Commons
 * Skills required: Java
 * Get in touch: Google Groups
 * Get the source code: GitHub
 * Read the documentation
 * Check the recommended tasks to work on: GitHub
 * Mentor(s): Josephine Lim

 Wiki Education Dashboard A web application that supports Wikipedia education assignments, provides data and course management for instructors and students
 * Skills required: Ruby, JavaScript
 * Get in touch: on irc.freenode.net
 * Get the source code: GitHub
 * Read the documentation
 * Check the recommended tasks to work on: GitHub
 * Mentor(s): Sage Ross

  ORES

A web service and API that provides machine learning as a service for Wikimedia projects. Machine predictions are used to catch vandalism, measure article quality, and support other wiki work.
 * Skills required
 * Translation and language assets: Speak and write any non-English Language
 * Front-end development: HTML, Javascript, CSS
 * Back-end development: Python, Redis, Postgress
 * Modeling: Python, Scikit-learn
 * Extension: PHP (mediawiki), MariaDB
 * Get in touch: Mailing list / Chat in on irc.freenode.net
 * Get the source code: wiki-ai/ores, wiki-ai/revscoring, wiki-ai/wikilabels
 * Read the documentation.
 * Check the recommended tasks to work on: Phabricator
 * Mentor(s): Aaron Halfaker & Adam Wight

 Library Card platform A tool allowing Wikimedia contributors to apply for free access to paywalled resources.
 * Skills required: Python, Django
 * Get in touch: on irc.freenode.net / wikipedialibrary@undefinedwikimedia.org
 * Get the source code: GitHub
 * Read the documentation
 * Check the recommended tasks to work on: Phabricator
 * Mentor(s): Sam Walton

''Are you a maintainer and want your project to be included in the list of software projects above? Find out more and join!''

Outreach programs and single tasks
Apart from the recommended software projects above, there are more ways to choose a project or task to work on:

 <div style="padding:1.125em; display:inline-block; border:1px solid #a2a9b1; vertical-align:top; border-radius:2px; position:relative; box-shadow:0px 2px 2px rgba(0,0,0,0.1);"> <div class="boxtitle" style="font-size:1.35em; padding-bottom:0.5625em; font-weight:bold; text-align:left; border-bottom: 1px solid #c9c9c9"> Outreach programs Wikimedia offers internships in programs such as Google Summer of Code and Outreachy. And if you are a high school student, you can participate in Google Code-in. Find out more.

<div style="padding:1.125em; display:inline-block; border:1px solid #a2a9b1; vertical-align:top; border-radius:2px; position:relative; box-shadow:0px 2px 2px rgba(0,0,0,0.1);"> <div class="boxtitle" style="font-size:1.35em; padding-bottom:0.5625em; font-weight:bold; text-align:left; border-bottom: 1px solid #c9c9c9"> Annoying little bugs There are many single tasks (across many software projects) which are suitable for newcomers. However, you are more on your own here: We cannot guarantee that mentors are available or that your proposed patches will receive fast reviews. Find out more.

Looking for additional resources?

 * How to become a MediaWiki hacker: For potential new developers who want to specifically work on MediaWiki core or MediaWiki extensions.
 * Developer hub: Resources to more documentation and information for established Wikimedia developers.
 * Do you have questions?
 * Feel free to ask your developer questions on https://discourse-mediawiki.wmflabs.org
 * Join the 'technical advice' chat meetings every Wednesday from 15:00 to 16:00 UTC in the channel on Freenode IRC and ask any questions you have.

Want to contribute something else?

 * How to contribute lists many more ways to contribute, also in non-technical areas.