User:01tonythomas/Hackathons/ExtensionHack

This short guide helps you to build a working extension on the Mediawiki platform. This doc is written to help run the talk on 'Developing a working Mediawiki extension in 80 minutes' talk at FOSSASIA Summit 2017, Singapore.

Prerequisites
Its always better if you have the following things covered up/done. Please do not worry if you do not have anything setup - we can even help you from the scratch during the workshop - good luck!

Recommended

 * 1) Attend Srishti Seth's talk http://2017.fossasia.org/tracks.html#2948 on 18th March on The Wikimedia free software community: Learn ways to get involved.
 * 2) Attend Srishti Seth's workshop on 19th March titled 'A beginner-level workshop on how to get started with MediaWiki development' - http://2017.fossasia.org/tracks.html#2947

Required Prerequisites
We can even help you out to get this done, but it would be loads better if we can have this done before the workshop! The rest of the document assumes that the participant would be using a Linux machine. The same can be done via other OS too, but we are not covering the instructions here.
 * 1) Have LAMP stack installed in your Linux distro. You can find the instructions here for Ubuntu - https://help.ubuntu.com/community/ApacheMySQLPHP
 * 2) Have PHPstorm or another working IDE in your machine. PHPstorm has Mediawiki extensions, which can make your development life easy. Find instructions here - https://www.jetbrains.com/help/phpstorm/2016.2/installing-and-launching.html
 * 3) Follow Gerrit tutorial at Gerrit/Tutorial topdown until Gerrit/Tutorial. You would probably need to create accounts in gerrit.wikimedia.org/ and https://wikitech.wikimedia.org as part of the tutorials. Please also consider installing `git`, `git-review` and other packages. Uploading your SSH keys can get complicated, but its doable (we can debug this during the session as well).
 * 4) Clone `mediawiki-core` - using the instructions at Gerrit/Tutorial. This is the main Mediawiki project, and we will be later developing an extension to add to it.

Vagrant or LAMP stack ?
Well - some tutorials ask you to just setup Mediawiki development environment using vagrant, following MediaWiki-Vagrant - but you can even have similar stuff by installing LAMP stack and manual clone of project repositories. Setting up vagrant can take couple of hours and high speed internet, so just select between your best options. I would recommend LAMP stack + project clone due to the time constraint.

Developing your new extension
Now that you have your working clone of Mediawiki, we can start with the extension development.