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:30, Lecture Space / Newcomer Track at Theater.
Etherpad: https://etherpad.wikimedia.org/p/Hackathon-2016-Tech-Intro
Content of the session and pages shown:
- Areas:
- WebAPI and Rest API: https://www.mediawiki.org/wiki/API:Main_page and https://en.wikipedia.org/api/rest_v1/?doc (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: 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)
- T135422: Wishlist tasks suggested for the Wikimania Hackathon 2016
- 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