Wikimedia Product Infrastructure team/Push Notifications Infrastructure

Background
The Wikimedia product teams have a long-standing desire to leverage push notification technology to drive user engagement and retention. Product Infrastructure is working on designing and building a push notifications platform for Wikimedia.

Initial R&D: Q3 FY 2019-2020 (January - March 2020)

 * Initial product use cases and cross-team prioritization [Link to google doc, or move google doc table to wiki?]
 * Technical planning and investigation
 * Technology department consultation
 * TechCom RFC submitted

Phase 1: Native Echo
Initial use cases are mentioned in the TechCom RFC and revolve around forwarding Echo notifications as push notifications for the native apps.

Clients supported: iOS App, Android app

Use cases supported:


 * Echo can push existing messages received by a user to the user via native apps for Android and iOS
 * App users can subscribe and unsubscribe to receive Echo notifications
 * App and web users can subscribe and unsubscribe to be pushed specific message types (adding a column to delivery preferences for "Push Notifications"
 * App users can manage their subscriptions via the native apps
 * The system can limit the rate and volume of messages to prevent server overload
 * The platform has a Push Notification service for managing these needs in a shared platform competent
 * Users who can no longer be reached after repeat attempts are removed from the service on a regular cycle
 * Product Infrastructure and SRE can monitor basic service usage via a standard dashboard

April

 * Incorporate RFC feedback
 * Finalize Phase 1 implementation plans
 * Start repository and begin exploratory implementation of the required services

May

 * Initial service development

June-July

 * Clients able to connect to initial development environment (e.g., Wikimedia Cloud Services)
 * Client engineers develop prototypes against initial implementations on staging

August-September

 * Android to port existing polling of Echo (large scale)


 * iOS client to port existing polling of revert messages (limited use)

Sept-Oct

 * Maintenance and bugfix iteration based on needs from late summer roll ou
 * iOS adds all echo cases not currently supported

Technology approvals required:

 * SRE machine allocation (for launching on k8s)
 * Performance review
 * Security review
 * DBA review

Phase 2: Open Echo
Phase 2 is focused on extending the push system to allow pushes to browsers via the Web Notifications API Clients supported: iOS App, Android app, web Service Worker

Use cases supported:


 * As a browser user I can receive my Echo notifications as browser notifications
 * As a browser user I can be prompted to enable notifications in context where that in meaningful (ie. not just because I land on our domain)
 * As a web feature team I can implement subscription prompts in context where that in meaningful (ie. not just because I land on our domain)
 * App and web users can subscribe and unsubscribe to be pushed specific message types (adding a column to delivery preferences for "Push Notifications")
 * As an Echo developer I can add a new notification type and have it be available for push delivery

Competent
There is currently no estimated timeline for Phase 2 and beyond. Please check for future iterations on this page once those plans become firmer. However, we do know the basic components that require development for this phase, and a rough order of operations for their implementation.


 * Initial case defined by a web feature team (most likely Editing or Growth)
 * Define initial client browser target and extend push service to push to the selected platform(s)
 * Web service worker implementation
 * Implement/update sign-up and subscription UIs for web

Phase 3: Other Than Echo
The final envisioned stage of development is the creation of new types of notifications by client teams to serve specialized use cases. Planned cases, include:


 * Re-engagement and encouragement of new or "lapsed" editors ("We haven't seen you in a while")
 * New feature and software update announcements
 * Campaigns and fundraising announcements ("Add a reference today to be part of #1Lib1Ref!")
 * Updates and recommendations for topics or portals of interest to a reader
 * Other News or Current events related content suggestions

Although these cases are envisioned and should not be precluded by earlier phases of development, which will be developed and by whom will be dependent on the needs of the teams and their target users.

Architecture and design decisions
See the Design decisions page.

Source

 * Push Service (Node.js): in Gerrit

Links

 * TechCom RFC
 * Dependencies Questionnaire