User:AKlapper (WMF)/Talks

Those two talks that Andre sometimes gives at conferences. And anybody else can do that do!

Overview to Wikimedia Tech
Text based on T106753; adjusted after giving several such talks.

An Introduction to and an Overview of Wikimedia Tech: Technical areas (coding, compared to e.g. readers and authors), Infrastructure, and Communication.


 * This talk only provides pointers and ideas. This presentation is not "hands-on". It's up to you to explore and create. Happy to answer questions, happy to connect you to people.
 * Wikimedia is big - many projects/sites, many languages, many areas to contribute to.
 * Content and code is free - it can also be used outside of the Wikimedia movement. Your technical contributions may benefit this wide community of communites, not just Wikimedia.
 * (If there are people in the room who are knowledgeable in an area, point them out!)
 * Overview graphic of areas: https://commons.wikimedia.org/wiki/File:Wm_technical_areas.svg


 * Areas:
 * WebAPI and Rest API: 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: 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
 * Explore, create, share, collaborate, have fun!
 * What do you plan to work on? And how can we help you?

List of potential links to open in the web browser
(List needs reordering and clearer focusing.)


 * https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Wm_technical_areas.svg/1280px-Wm_technical_areas.svg.png
 * https://en.wikipedia.org/wiki/MediaWiki
 * https://tools.wmflabs.org/
 * https://phabricator.wikimedia.org/
 * https://gerrit.wikimedia.org/r/#/q/status:open,n,z
 * https://www.mediawiki.org/wiki/Starter_kit

Introduction to Wikimedia Phabricator
This is an outline for a 50-60min talk/presentation to introduce Phabricator. It is based on 102195. Before the talk, optionally prepare a web browser bookmarks folder to quickly open any tabs. Concentrate on these aspects: Find, follow, file/report.


 * Social and organizational introduction:
 * Developers needs tools: Code repository browsing (which code we currently have), Code change Review (for proposed code changes; Gerrit; soon in Phab), Bugs and feature requests ("tasks"; the main topic here), on-wiki, IRC, mailing lists (~Tech 101 talk)
 * Different roles ("stakeholders"?) of people collaborating in Phab: Users like readers, authors, translators, devs/engineers, designers, doc writer, rel mgmt/testers, product managers. Different people have different views, e.g. on setting priorities.
 * Content of talk:
 * What Phabricator does, how Phabricator is used, Questions+Answers. Lots of information ahead, as Phabricator is pretty powerful.
 * Frontpage and Login
 * Phabricator
 * Phabricator frontpage -> Several applications on the left -> Maniphest, Diffusion, Differential (Forge, well-integrated applications)
 * Ask audience: Hands up: Who has seen Phab before / has an account? Register now if you have a device!
 * Create/log into account -> mw.org, done via SUL/OAuth (no separate password!)
 * Log into Phab; in the upper right corner
 * Finding and following
 * Imagine that you see a technical problem on Wikipedia, e.g. a broken thumbnail. That is a misbehavior of the software (MediaWiki and extensions) on Wikimedia sites, hence a bug to report in Phabricator.
 * e.g. go to https://commons.wikimedia.org/wiki/File:USBLS_Bulletin_2316;_Technological_Change_and_Its_Labor_Impact_in_Four_Industries_%281988%29.pdf
 * Go to global Phabricator search in upper corner
 * Phabricator search scope dropdown on the left of search: Choose "Tasks" only
 * Search for "thumbnail"
 * Get many results
 * Following your personal interests (1): On search results; "Save custom query"/search -> Stored by default on top in the left pane.
 * Order of searches in the left pane: First one is default view
 * By default the first item are tasks assigned to myself
 * Show my personal assigned tasks, as first one is default view on https://phabricator.wikimedia.org/maniphest/ (make sure beforehand that no private tasks are on my list)
 * You can share URLs of custom query/saved searches
 * Try again by going to global Phabricator search in upper corner
 * Phabricator search scope: "Tasks" only
 * now search for "File:USBLS_Bulletin_2316;_Technological_Change_and_Its_Labor_Impact_in_Four_Industries_(1988).pdf" in Phabricator
 * hopefully get a list (one entry) of search results with T127914 in the results
 * Open that task
 * Task view
 * Look at task and explain its meta fields, e.g. 'assignee', 'priority' (set by team or developer or works on it); but cover "Projects" later below
 * Following your personal interests (2): I'm interested in updates/progress on that task, hence I click "Subscribe" on that task
 * Notifications via email or in web (upper corner); settings for it are fine-grained - following stuff you are interested in
 * Add a comment that makes sense, e.g. "I just tried on en.wp and cannot reproduce this anymore" and change status to "declined" or "resolved" - cf. Bug_management/How_to_triage
 * (optional and advanced more stuff:) Who is that person? User pages in Phabricator
 * Projects
 * Have a single task open.
 * Task can be in several projects at the same time
 * Projects are Tags, Baskets to organize work; e.g. by code repository, or by functionality parts, or by a team
 * Click "Project": That goes to workboard (Make sure there is one - some projects have no or empty workboards)
 * Most Projects have workboards with columns
 * A task is shown as a card here
 * Fields like Priority (color on the side) and Assignee (small image) are shown here too!
 * Can change/filter which tasks are shown and their order in the upper corner
 * Usecases for managing a project, if you maintain yourself: Workboard and no emails or spreadsheet/table or talk page, task tracking search, collaboration with others.
 * Phabricator/Project management
 * Example: https://phabricator.wikimedia.org/tag/developer-relations/
 * Following your personal interests (3): Projects have Members -> Get notifications for all changes of tasks in that project -> Watch etc -- if you are a very interested user, developer, or maintainer of that project
 * (optional and advanced:) Herald rules: Advanced notifications with conditions/criteria
 * Following your personal interests (4): List of specific tasks that I'm interested in, subjective and personal criteria: "Flags" like bookmarks, Watchlist-alike. But: Finding those tasks that I have flagged again is not obvious, need to know https://phabricator.wikimedia.org/flag/ or need to have added it to my side bar.
 * File (create) a task
 * Imagine our thumbnail problem was not reported yet
 * Go to task creation form in the upper right corner by clicking the "Plus"
 * On task creation form, click top link to How to report a bug (to just show that)
 * Enter Summary and Steps to reproduce, Actual outcome, Expected outcome
 * Try to add tags / projects by guessing
 * Entering "Thumbnail" does not show any dropdown proposals
 * Try "File" or "Media" to find "media-storage" or "file-management" proposed in the dropdown
 * Click "Create task" or not (if you do, merge it as a duplicate later please or close as invalid)
 * Misc other stuff (only mention, do not show?)
 * (optional and advanced more stuff:) Future plans: Code browsing in Diffusion: https://phabricator.wikimedia.org/diffusion/
 * (optional and advanced more stuff:) Future plans: Code review in Differential (proposed change is linked from its related task); once merged that commit is also available in Diffusion (Code browsing) and also linked; right now done in "Gerrit"
 * (optional and advanced more stuff:) "Conpherence" application for private or public conversation rooms (similar to on-wiki discussions on talk pages);
 * (optional and advanced more stuff:) Tokens and memes for some fun;
 * (optional and advanced more stuff:) "Spaces" for security / private projects - default access restrictions
 * Customize your frontpage workboard by adding/creating dashboards and default items in the left pane; example: https://phabricator.wikimedia.org/dashboard/manage/125 by Reading Web Team
 * Show Phabricator/Help