User:Bawolff/MediaWiki developer tutorial

This is a work in progress Learning to be a MediaWiki developer

Welcome! This is an opinionated tutorial on writing MediaWiki extensions. It is meant to guide people towards writing their first extension.

There are lots of different approaches to this topic. This tutorial takes the following:
 * Avoid overwhelming people with lots of choices. Instead just talk about one way to do things even if there are multiple valid choices
 * Keep things simple by avoiding helper tools that add layers of complexity
 * Assuming you are using Debian or Ubuntu. Either directly or in a virtual machine. You can certainly complete this tutorial in other operating systems, but you will be expected to translate the instructions to your OS yourself.

Prerequisites
Before starting this tutorial, it is expected you are familiar with the following:
 * Basic unix command line shell. You don't need to be an expert, but you should know how to change directories, move files, delete files, grep files, edit files in a text editor, etc. If you're unfamiliar with this, there are several tutorials on the internet. intro(1) is a good starting point.
 * Basic use of the git command line. You should understand how git works, how to clone, what is a branch, what is a commit, etc.
 * You should know how to program in an object oriented programming language. Ideally you know how to program in PHP. Again you do not need to be an expert, but you should understand the basic concepts: classes, methods, objects, the difference between a static and a non-static method, namespaces, if-statements, loops, exceptions etc. If you're not familiar with this topic, consider reviewing a different tutorial online, such as this one.
 * You should have a reasonably good understanding of the basics of how MediaWiki works from a user perspective. You don't need to know how everything works, but you should know how to edit pages, what your help:Watchlist is, what help:Recentchanges is, etc. If you're new to MediaWiki, skim through Help:Contents.

Getting help
You don't have to go through this tutorial alone. If you get stuck, don't be afraid to ask for help. The best place to ask is on IRC in the channel on libera. Even if you don't have any questions, consider hanging out on irc to make connections with other people who work on MediaWiki. You can also ask questions on the talk page of this tutorial. There are some other communication options listed at Communication.