Wikimedia Engineering/2012-13 Goals

'''This page is the beginning of a template for the 2012-13 engineering goals of the Wikimedia Foundation's tech department. It's still in the early developmental stages.'''

Each section should include the following:


 * Goal statement (what are we trying to achieve)
 * Rationale (how does this project relate to our overall strategy)
 * Resources (broad outline of current and additional resources assigned to this project, including % allocation for partially allocated or part-time staff)
 * Activities (what concrete work will be undertaken through this project)
 * Outputs and outcomes (what will the delta be to current state as a result of this project, in terms of metrics, new functionality, new process, and ultimately towards our strategic goals)
 * Timeline (when will major milestones of this project be hit, with focus on the 2012-13 fiscal year)
 * Interdependencies (do we need help from other departments/individuals to successfully reach this goal)

Big Goals

 * Keeping the lights on
 * Improving the engineering process
 * Reversing the editor decline
 * Increasing mobile access and mobile contribution
 * Strengthening Community-Engineering communication

Site operations
Goals/Budget team: CT Woo (budget owner), project owners (for CapEx), Mark Bergsma (architect, CapEx plan), ops team

Main Functions:


 * Operational Support
 * Shell requests/extension deployment and review
 * RT support
 * Data Center duties


 * Capacity Growth
 * storage growth expected to be 100 - 200%
 * site traffic (page views) growth expected to be 30 %
 * network traffic growth expected to be 50%
 * existing projects (e.g., Analytics & Labs)


 * Site Availability
 * server refresh
 * deployment process improvement
 * disaster recovery and backups


 * Site Security
 * infrastructure security vulnerabilites e.g patches
 * applications maintenance


 * New Projects & non-core (non-mediawiki) services support
 * mobile projects
 * Community projects (.e.g. CRM )
 * Engineering tools (e.g. Mingle, Bugzilla, Git, TestSwarm)
 * WikiData
 * Analytics
 * FundRaising

Site architecture
Goals/Budget team: CT, RobLa, Security engineer, Tim, MarkB, Terry, Roan


 * provide a cost effective hot-failover /disaster-recovery site (West Coast)


 * Failover Site / Site Move (TPA to IAD)
 * network
 * applications
 * platform
 * ensure better response times for users/readers accessing out web properties  by redirecting users to the nearest server cluster
 * AMS, IAD, TPA & SJC
 * more Caching Centers around the world
 * Asia
 * S. America


 * build a data archive service to ensure backups are performed, archived and tested for correctness
 * setup and deploy backup infrastructure and process for archives and offsite


 * simply and strengthen our infrastructure security practices and technologies


 * leverage the various Application stack instances (load-balancing)
 * Application stack seamless cross-site failover @ mediawiki application level infrastructure and system level
 * Archives for Community (e.g. XML Dumps)


 * Search?


 * Intersection with features (e.g., messaging, notifications)?


 * infrastructure security architecture
 * access (sudo, ssh open ports, more access control segregation & EOL process etc)


 * standardization

Rationale

 * There is certainly a relationship between site performance and response and overall editor engagement and activities

Interdependencies

 * Site Architecture
 * Site Operations

Editor engagement features
Goals/Budget team: Howie, Fabrice, Ian, Terry, team

This team is focused on medium-sized infrastructure improvements which help us engage new and retain existing contributors.

Goal
Reverse the editor decline by making foundational improvements on Wikpedia.

Rationale

 * The Editor Trends Study
 * Board feels that editor retention is the most important focus for the Foundation.

Resources

 * Existing team (Fabrice, Ian B., Kaldari, Benny S., Andrew G. [part time], Brandon, Dario T.)


 * 2012-13:
 * Additional Development Team:
 * Front-end engineer
 * Back-end engineer
 * UX (shared)
 * Other
 * Data Analyst (if Dario works with E3 team)

Activities

 * Page Triage (in process)
 * Article Feedback (in process)
 * Article Creation Workflow (in process)
 * Notifications
 * Profile
 * Affiliation
 * Messaging
 * Curation processes

Outputs and Outcomes

 * Quantitative metrics TBD; but aim to have an active editors target for this team

Timeline

 * Ongoing
 * Second Team: Terry, can you let me know when you think this second team would be in place?

Interdependencies

 * Mobile
 * E3 team

Editor engagement experiments
This team is focused on smaller, daily or weekly experiments which demonstrate measurable impact on editor numbers and can be productized

Goals/Budget team: Karyn, Howie, Alolita, Zack, community team ..

Goal
Reverse the editor decline by experimenting with smaller features. The output of these experiments has to be measurable and needs supporting metrics gathering.

Rationale

 * The rational for Editor engagement in general applies here also.
 * There is the opportunity to grab a bunch of "low hanging fruit" to move the needle on editor engagement with small changes.

Activities

 * Lots of small fun stuff. Some examples…
 * User warning templates
 * Size, wording, location, color of buttons
 * Microtasks as new engagement strategy

Output and Outcomes
There was currently no project last fiscal year.

Interdependencies

 * Analytics to be able to "close the loop" on testing

Multimedia participation
Goals/Budget team: Erik, Howie, Terry, Alolita

Goals:
 * Enable multimedia contributions in a more user-friendly and seamless manner
 * Improve display of multimedia content
 * Support curation resulting from new contribution streams
 * currently almost "orphaned" (very little development going on)

Rationale

 * For editor engagment (above), Wikimedia Commons is an area of actual editor growth
 * With 1.19 and Swift, there is finally infrastructure to act aggressively on this space

Resources

 * Product Manager
 * Front-end engineer
 * Back-end engineer

Activities

 * WP/Commons integration
 * WP displays of MM content
 * Mobile photo upload
 * Associated curation
 * Potential: support for WikiLovesMonuments (?)
 * support for diff file types (?)

Output and Outcomes

 * Target: xx commons contributors/month

Timeline

 * Being work Q4 (calendar quarter) 2012

Interdependencies

 * Mobile drives a lot of need
 * Will drive a lot of storage load on Site Operations

Visual Editor
Goals/Budget team: Howie, Terry, Trevor, Gabriel, Roan, Rob

Goal Statement
To create a reliable rich-text editor that allows for editing underlying wikitext on multiple platforms (including mobile) and facilitate a possible future implementation of real-time collaborative editing.

Rationale
This relates directly to the editor retention issue:
 * The | decline in new contributor growth is the single most serious challenge facing the Wikimedia movement since 2007.
 * Board feels that editor retention is the most important focus for the Foundation.

How the visual editor addresses the above problem:
 * Removing the avoidable technical impediments associated with Wikimedia's editing interface is a necessary precondition for increasing the number of Wikimedia contributors.
 * Many key features for Editor Engagement are dependent on a working two-way parser that the project is building (e.g. GoogleDoc-like annotation collaboration/talk page replacement).
 * Other key features for Editor Engagement are dependent on a working visual editor (e.g. messages in an abbreviated wikitext)

Activities

 * 1) Make the new parser feature-complete
 * 2) Make the user interface of the editor configurable on the wiki
 * 3) Research how to handle difficult parts of pages like images and tables
 * 4) Possible further research into collaboration-based features (through 3rd party or GSoC)

Outputs and outcomes

 * A feature complete parser that passes all the unit tests:
 * Should not break existing content
 * Some obscure wikitext patterns may need to be renormalized and converted to fix the above goal, but the target behavior is to have the parser without the above
 * Should mark output content so bi-directional roundtripping does not modify the original wikitext
 * Will hopefully become the canonical description for the underlying wikitext (folded into platform)
 * A working parser allows for two-way interaction between the user interface and the underlying wikitext
 * Ability to load and save an entire wiki page using the visual editor
 * Ability to extend the user interface with user-created and/or wiki-specific features

Timeline

 * By the start FY 2012-2013:
 * Complete migration from EditSurface to ContentEditable.
 * Most unit tests of the parser pass.
 * First demo of editor able to edit and save a subset of real-life articles (open-edit-save)
 * Late Summer to early Fall 2012 (Difficult to specify because team is currently operating without a product analyst):
 * First opt-in user-facing production site (many parts will not be editable in visual mode)
 * Spec and complete other in-between deployment steps: new page creation, sentence editing, mobile editing
 * Begin work on other Editor Engagement touchpoints: "Edit-in-place" capability, readable diffs, …
 * End of FY 2012-2013 (Difficult to specify because team is currently operating without a product analyst): Some of the following visual editor features may be addressed:
 * table editing
 * lists editing
 * images and captions editing?
 * visual editing of templates?
 * visual diffs (change playback)
 * integration of collaborative editing work from GSoC student, if applicable

Resources

 * Trevor Parscal
 * Brion and Neil originally assigned to this, but were re-assigned elsewhere
 * Gabriel Wicke (parser - 20 hours starting late Oct 2011)
 * After February 1, 2012 established most of full team:
 * Rob Moen (moved from editor engagement per Feb 1, 2012)
 * Roan Kattouw (moved to the US in Feb 2012; 65ish%, other time split with other projects)
 * Audrey Tang (parser - 5 hrs since Feb 1, 2012)
 * Open reqs filled by FY 2011-2012:
 * Parser engineer
 * Product Analyst to be hired in FY2011-12

System resources:
 * Currently no need for additional resources
 * When in production, it may be possible that there is a need for some node.js infrastructure (this is not finalized). Though this is likely to be contained by repurposing existing parser infrastructure with the more efficient parser.
 * If collaboration feature is added, there might be a need for additional resource infrastructure

Interdependencies
Cooperation with Wikia:
 * Inez Korczynski
 * Christian Williams (started around Feb 1st)

Editor Engagement Team. At some point there needs to be sync up:
 * Assist in UI problems (how to edit tables)
 * Social aspect of visual editor (multiple contributors)
 * Editor engagement usage of the parser and the visual editor

Ops assistance:
 * Review node.js infrastructure developed in Labs

Mobile (VE acts as a provider of resources to mobile):
 * Current design should support mobile editing (Android ICS and iOS 5) which should facilitate adoption by the mobile team

Mobile Contribs
This team is under the Mobile team below.

Site performance
Goals/Budget team: RobLa?, CT, Tim Starling, Asher, Preilly, MarkB, Terry


 * Lua
 * HipHop(VM)
 * bring data/information closer to users
 * new technologies (e.g. Flash Drives, varnish)
 * Profiling, Analysing and Targeting
 * Mediawiki improvements

Mobile
Goals/Budget Team: Tomasz (budget owner), Phil Chang (product manager), Patrick Reilly (sr engineer), Jon Robson (front end dev), mobile team

Goal

 * To facilitate contributions on mobile devices

Rationale

 * Our mobile page growth continues to be 5-15% every month but these users can't contribute. In order to reverse the trend of editor decline we need to capture new users coming online primarily (and sometimes only) on mobile devices.
 * Board feels that we should be focusing more attention on mobile contributions.

Resources

 * Jon
 * Front end Dev (open)
 * + 2 (new request)
 * Arthur
 * Yuvi (currently contractor)
 * Phil
 * Lindsey (currently contractor)

Activities

 * Media (Upload Wizard) - Commons continues to grow as a user community and mobile can help to accelerate and sipmplify media contributions.
 * Image Curation - If our mobile projects succeed then we'll have to address how were going to review the wealth of content coming into our pejects
 * Better tablet support
 * Simple Editing - We have to start supporting editing functionality on mobile devices. This is the key source of contribution and our mobile users can't be treated as second class contributors.
 * Micro Tasks - We need to reach out past edits if we want to tap into the full potential of mobile devices. Simple contributions as adding GPS coordinates can be done on mobile and can work as a new editor on ramp
 * AFT - Article feedback is a simple micro task that any mobile user can do.

Output

 * Mobile will finally provide its 2 billion pages views a month with a simple and easy set of contributory pipelines. Since mobile is seeing the biggest rise in readership it only makes sense to start funneling those users into contributors. This can immensly solve our editor retention problem.

Timeline

 * Upload Wizard - Q1 Fiscal 2012
 * Micro Contributos - Q2 Fiscal 2012
 * Simple Editng - Q3 Fiscal 2013

Interdependencies

 * Visual Editor
 * New Editor engagement team

Alternate Access Methods
Goals/Budget Team: Tomasz (budget owner), Phil Chang (product manager), Patrick Reilly (sr engineer), Kul Wadhwa, mobile team

Goal

 * Lower the global barrier for access to our projects by providing low cost and low tech solutions to access Wikipedia.

Rationale

 * Data charges and technological barriers should not impede access to our projects. There are easy ways that we can reach a significant amount of people if we are innovative with how they can access Wikipeida.

Resources

 * Partner Support Engineer
 * +1 (new request)
 * + Emmanuel

Activities

 * Zero Partnerships
 * Vumi (SMS/USSD)
 * J2ME
 * Performance Improvements / Resource loader
 * OpenZim+PhoneGap

Outputs

 * Broadending global reach
 * Capacity support for Zero build out

Timeline

 * 5 - 10 new country launches every two months

Interdependencies

 * Operations
 * Tech Support Manager (Global Dev)

Goal

 * To broaden the reach of the Wikimedia Mobile projects through developer training, conference outreach, user testing of betas, and general evangeslim

Rationale

 * Our mobile projects have the potential to have a lot of developer interaction. Currently were engaging with a small developer base but we could be doing so much more. Given someone focused on outreach we could increase the number of mobile developers, increase the knowledge of the open mobile web and include more non developers in our projects

Resources

 * Community Liason
 * Tomasz

Activities

 * Crowd Sourcing organization for beta test
 * App developer outreach to better understand what our API can't do
 * Brazil Hackathon
 * Conferences
 * Open Mobile Web evangelism

Outputs

 * More volunteer particiaption within mobile

Interdependencies

 * Global Dev
 * TL;DR

Infrastructure
Goal: Evolving the infrastructure that powers mobile

Rationale

 * Our mobile projects have been extremely successfull thus far but can't continue to scale at our growth rate unless we better integrate them into the core of MediaWiki, simplify our data sets, build a stronger API, and get better analytics. We have to merge the common functions of MobileFrontend into core so that we can work with non mobile developers to develop mobile solutions for our organizational goals.

Resources

 * Patrick
 * Brion (consulting)
 * Arthur
 * Jon
 * Max (currently contractor)


 * Andre (currently contractor)

Activities

 * Moving MF into Core - We need to remove the need to reparse page content
 * API - We've already started to build on the Mobile API but can still do more
 * OAuth
 * WikiData/GPS - WikiData
 * Open Street Maps - OPS
 * More mobile analytics (convert position to full time in global dev)
 * QA (convert position to full time)

Output

 * Mobile as part of MW core
 * Increased number of mobile project releases due to improved QA support
 * Faster API due to mobile optimizations
 * GPS read/write API

Interdependencies

 * Platform
 * Features
 * Analytics

Internationalization
Goals/Budget team: Alolita (budget owner), Siebrand (product manager), team, +consultation with engineering/product leads


 * Input methods / Onscreen keymaps
 * Fonts
 * Language settings/selection
 * Translation
 * Search?
 * Dictionaries for translation tools, Wikisource
 * Mobile I18n support
 * Visual Editor I18n support/integration
 * Metrics/measurement stats
 * Language support tool APIs (for 3rd party use)
 * (data on impact?)
 * Improve QA / testing
 * Incorporate community feedback loop for I18n tools
 * Improve RTL support

Analytics
Goals/Budget team: Diederik, Howie, RobLa, team, PMs, Terry

Goal: ?
 * Report card
 * Operational analytics (support for E2/E3 experimentation teams)
 * Click-tracking
 * Edit/account creation tagging
 * Fix stuff deep in the stack
 * Other Projects TBD
 * MediaWiki community statistics

Goal statement
To maintain and improve donation pipleine reliability, privacy and security compliance, and to begin to provide business with better analytics they need to reach the Foundation’s fundraising goals.

Rationale
Fundraising is the source to the rest of Wikimedia's sink.

Resources

 * Katie Horn- Technical Lead
 * Jeremy P. - Fundraising Engineer
 * Jeff Green - 50% - Operations Engineer
 * + 2 full-time reqs TBD by end of FY 2012
 * (non-Engineering, Peter Gehres - Fundraiser Production)

[ current system resources allocation to be provided by ops ]

Activities

 * Maintain all pieces of the current donation pipeline
 * DonationInterface extension
 * Anti-fraud measures
 * Additional payment gateways
 * Maintain integration with third parties
 * Ensure security (in progress)
 * Improve redundancy and logging to aid in the event of unforeseen circumstances
 * CentralNotice extension
 * FundraiserStatistics extension
 * FundraiserLandingPage extension
 * ContributionTracking extension
 * CiviCRM (customer relationship database) maintenance and improvements for bare usability. Currently there are major bugs and scalability issues that WMF has run up against.
 * ActiveMQ (queuing)
 * Research into alternatives for ActiveMQ
 * Code changes in most other parts of the pipeline when we find one
 * Improvements to reliability of donation pipeline
 * CentralNotice extension: needs better A/B testing support within the same geolocation bucket
 * Third-party service automatic health check system
 * Upgrade payments cluster to more recent version of MediaWiki (try to keep it near-ish to the version on the cluster
 * Code coverage (unit tests)
 * Documentation of the existing systems.
 * Bulk mailing infrastructure (CiviCRM can't handle it, current structure was done with ad hoc scripts)
 * Greater level of PCI (Data privacy and security) compliance
 * Improve the current analytics system to allow for real-time reporting as well as increase scalability, security and transparency
 * Donation auditing - Many numbers are required by finance and global dev throughout the year. Tools that exist to get these numbers must be written and maintained.
 * Improve the methods used to build "missing" data from our payment processors, logs, and contribution tracking data.

Outputs and outcomes

 * Payment metrics
 * New payment methods
 * Additional payment processors (required for some new payment methods as well as redundancy)
 * Redundant payments clusters between pmtpa and eqiad with failover
 * CiviCRM metrics
 * If it is still running without crashing or frustating business (too much).
 * Higher certifications level measures PCI compliance
 * Code coverage for testing is measureable against the total code base
 * Payments cluster version lag versus current MediaWiki is currently 2 behind 1.19.
 * Better caching configuration for donatewiki
 * Health and Alert System for health (or lack thereof) of the pipeline for high-traffic times, capable of notifying us when immediate action is necessary
 * API for CentralNotice allowing for automated checking of banner allocations and alerts
 * Automated disabling of payment methods for down payment processors (currently very time consuming and error-prone)
 * Selenium testing for banners and landing pages to ensure that changes to templates and JavaScript do not have negative effects
 * Improved transparency to donors with regard to donations and other fundraiser metrics
 * Improved analytics system that allows fundraising creative and production teams to iterate rapidly with near real-time information
 * Fix CiviCRM or improve mass-mailing infrastructure to send emails to current and past donors

Timeline

 * Start of FY 2012-2013 - fundraising tech fully staffed
 * Late summer/Early fall 2012 - Freeze for new payment providers
 * Fall 2012 - Freeze for new payment methods for existing payment providers
 * Nov/Dec 2012 - Annual fundraiser
 * Jan/Feb 2013 - Wrap up of 2012 fundraiser
 * Feb/March 2013 - Kick-off of 2013 fundraiser campaign and planning

Interdependencies
The fundraising tech team works closely with the fundraising production and fundraising creative teams that are part of the Community Department. The team also works with LCA to ensure compliance with various privacy policies, execution of contracts with payment providers, as well as community support.

Any security engineer that we hire will work closely with the FR-tech team to ensure that our systems are secure.

Analytics - There is currently nobody dedicated to fundraiser analytics.

Wikimedia Labs
Goals/Budget team: CT, RyanL, Sumana, RobLa?, team

Q1

 * Upgrade and stabilize current infrastructure and software
 * Upgrade to Ubuntu 12.4
 * Upgrade to Nova Essex release
 * Change OpenStackManager to use Nova API, rather than EC2
 * Push OpenStackManager changes to filter projects
 * Push OpenStackManager changes to automatically reformat or reject SSH keys in the incorrect format
 * Push OpenStackManager changes to show SSH fingerprints for instances
 * Add Gluster support to Nova
 * Add DNS support to Nova (in essex, but we must migrate to using it)

Q2

 * Move to Cisco hardware in pmtpa
 * Upgrade and stabilize current infrastructure and software
 * Add Puppet support to Nova
 * Add MediaWiki support to Nova
 * Create a second zone in eqiad
 * Create an http reverse proxy service, that acts like an OpenStack service, to lessen public IP usage
 * Create a turnkey MediaWiki puppet class

Q3

 * Add Tool Labs features
 * Database replication from production
 * User databases
 * Puppetize deployment-prep (likely more of a community goal)

Q4 or beyond

 * Development support function ("cross functional support") vs. community experiments
 * Enable automated testing for infrastructure, using Jenkins
 * Wishlist

MediaWiki platform
Goals/Budget team: RobLa, TimS, Sumana, Chad, Brion, Roan, team


 * API improvements?
 * Continued code maintenance and review of new changes
 * Database-backed session handling
 * Configuration management
 * Gadgets/ResourceLoader improvements?
 * Wikidata support? Interwiki transclusion?

MediaWiki development process
Goals/Budget team: RobLa, Erik, Tim, Chad, Antoine, Terry


 * Git/Gerrit/Gitorious/.... tools & process improvements
 * Releases / dev process
 * 20% time and other ways to keep code review in check
 * CI improvements

QA
Goals/Budget team: RobLa, Chris, Tomasz, Alolita, Antoine, MarkH ...


 * Test automation
 * Test plan standards etc.
 * Community testing
 * Mobile testing <-- biggest pain point for mobile devs now
 * I18n testing <-- the dev team is the QA team right now - so need to address this
 * Bug triages, etc.

Wikimedia technical community
Goals/Budget team: Sumana, RobLa, Tomasz, Alolita, Guillaume


 * Ops volunteering
 * Goal: Many people can puppetize packages, and do so. They don’t need to whine as much to get things done.


 * Documentation / Wranglers
 * Goal: a team of on-call documenters, and multiple volunteers reliably updating project documentation and MediaWiki documentation


 * Finding bugs, reporting bugs, and triaging bugs
 * Goal: squads of good testers whom we can call upon to test at particular moments or on particular components/tools, so we can do strategic outreach


 * Software development
 * Goal: Facilitate the intake and growth of volunteer developers and their ability to contribute software, and align them to the movement priorities.

Activities

 * Bug squad
 * Gerrit migration
 * QA training
 * Patch review, extensions review, and code review
 * Events
 * In-person developer outreach events (tutorials)
 * In-person developer inreach events (expert collaboration)
 * Encouraging small regional events
 * mentorship/training
 * API sandbox
 * Installer documentation
 * Strategic collaboration with other large orgs and communities; developer engagement/evangelism
 * Teaching/leading interested nontechnical activists to do product management work (harnessing mailing list & IRC energy!)