This session provides a high-level overview of the many technical areas in Wikimedia in which you can contribute, the infrastructure tools used to work on code, and the communication venues used in our technical community.
Do you look for some ideas and inspiration?
Or are you curious and want to get an overview?
Join the session!
Date and Time: Wednesday, 22 June, 11:00, Lecture Space / Newcomer Track.
Etherpad: https://etherpad.wikimedia.org/p/Hackathon-2016-Tech-Intro
Content of the session and pages shown:
* **Areas:**
** **WebAPI**: https://www.mediawiki.org/wiki/API:Main_page //(Reuse and remix for your own needs.)//
** **Labs and Tool Labs**: https://wikitech.wikimedia.org/wiki/Help:Tool_Labs //(Virtual machine hosting environment for community developers working on tools and bots that help users maintain and use wikis. Examples for projects running on Tool Labs: https://tools.wmflabs.org/ )//
** **Bots**: https://www.mediawiki.org/wiki/Manual:Bots (e.g. based on the Pywikibot framework at https://www.mediawiki.org/wiki/Manual:Pywikibot ) //(many programming languages; more than 1000 bots. External programs which use the API to automatically process/change and analyze content. Example areas: Importing, typos, vandalism.)//
*** //(Simplified: Compared to Bots, Tools always run, also when you're not around)//
** Native **Mobile applications**: https://www.mediawiki.org/wiki/Wikimedia_Apps //(Objective-C, Java)//; there is also an unofficial Commons App.
** **MediaWiki Core**: Not recommended for beginners - huge and sometimes old code base and hard to find your way //(mostly PHP; also JavaScript, CSS, LESS and other languages; more than 0.5 million lines of code)//
** **MediaWiki extensions**: https://www.mediawiki.org/wiki/Manual:Extensions //(Extending MediaWiki Core functionality. PHP and JS. More than 2000 extensions available; nearly 100 used on Wikimedia sites)//
** User scripts and **Gadgets** (=popular user scripts): https://www.mediawiki.org/wiki/Gadget_kitchen //(JavaScript etc. on wiki pages which allows personalizing the individual experience of each user)//
** **Templates**: https://www.mediawiki.org/wiki/Help:Templates //(Lua; logic to process some content, controlled from within the same wiki)//
** **MediaWiki Skins**: https://www.mediawiki.org/wiki/Manual:Skins //(CSS/LESS/HTML; changes the appearance of a wiki)//
** **External desktop applications for interacting with Wikimedia content** //(like vandalism, requires knowing how Wikimedia works)//: Huggle (C++) at https://meta.wikimedia.org/wiki/Huggle , AutoWikiBrowser (C#) at https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser , WPCleaner (Java) at https://en.wikipedia.org/wiki/Wikipedia:WPCleaner , ...
** **Offline applications**: [[m:Offline_Projects/Tech_Development|https://meta.wikimedia.org/wiki/Offline_Projects/Tech_Development]] E.g. KiwiX (C++) at http://www.kiwix.org/
*** //Related:// **XML and SQL dumps** for offline usage: https://meta.wikimedia.org/wiki/Data_dumps
** **Testing / QA**: https://www.mediawiki.org/wiki/Quality_Assurance //(Ruby and Cucumber; QA and Browser test automation)//
** Wikimedia **Site operations and technical infrastructure**: https://phabricator.wikimedia.org/diffusion/OPUP/ , https://wikitech.wikimedia.org/wiki/Puppet_coding //(e.g. Puppet; design, configuration and maintenance of the Wikimedia cluster of services)//
** Variety of **Programming languages**: PHP, JavaScript, Lua, HTML, CSS/LESS, Python, Objective-C, Java, C++, C#, Ruby, ...
* **Infrastructure and tools for development collaboration**
** Communication: **on-wiki, IRC chat** (common among developers), **mailing lists**: https://www.mediawiki.org/wiki/Communication
** Tracking and discussing tasks, bugs, enhancement requests in **Phabricator**: https://www.mediawiki.org/wiki/Phabricator
** Source code repositories in **Git** and Code review in **Gerrit**: https://www.mediawiki.org/wiki/Gerrit
* **Helpful pages to get started**
** High-level overview of MediaWiki development: https://www.mediawiki.org/wiki/Developer_hub
** Introduction to developing MediaWiki: https://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker
** Find something to get started! Easy tasks: https://www.mediawiki.org/wiki/Annoying_little_bugs
** Get inspired by what's going on by subscribing to https://meta.wikimedia.org/wiki/Tech/News //(A weekly summary of highlights happening in technical areas)//
** Apart from code: https://www.mediawiki.org/wiki/How_to_contribute