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.

Before giving the talk, try to find out who is attending the event and has knowledge in specific areas. Mention names for each area. Be able to either point to these people if in the audience, or try to find and show photos of these people, to make it easier for attendees to find the people to talk to for a certain area.

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