= Project Information
* Name of tool/project: mediawiki-services-chromium-render
* Project home page: https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/services/chromium-render
* Name of team requesting review: Readers Web
* Primary contact: @phuedx
* Target date for deployment: Q2 FY2017-2018
* Link to code repository / patchset: https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/services/chromium-render
* Programming Language(s) Used: JavaScript (targetting Node.js)
== Description of the tool/project / Description of how the tool will be used at WMF
#services maintain [[ https://github.com/wikimedia/mediawiki-services-electron-render | the Electron-based PDF rendering service ]]. Under its current load, the service hangs regularly after consuming a large amount of memory and can also fail to restart gracefully (see T174916, T159922, and T172815 for additional context and discussion).
Electron, a Node.js based desktop application development platform, is based on headless Chromium. By driving headless Chromium directly, rather than via a high-level binding it, we believe that we can make the service simpler and easier to maintain.
We (Readers Web and, eventually, Readers Infra) aim to build a POC replacement for the Electron-based render service, using puppeteer to programmatically control a firejailed headless Chromium process for rendering PDFs. We intend to slave the replacement service to the existing service in order to determine whether it's a suitable replacement.
== Dependencies
1. [[ https://github.com/GoogleChrome/puppeteer/tree/v0.11.0 | GoogleChrome/puppeteer ]]
- GoogleChrome/puppeteer is a high-level JavaScript (targetting Node.js) binding to the Chromium DevTools protocol. It allows a developer to programmatically control headless (or not!) Chromium.
== Has this project been reviewed before? ==
No.
Note well that #services, who are currently responsible for the Electron-based render service, will also be providing concept review for the project.
== Working test environment ==
http://chromium-pdf.wmflabs.org/
=== Example URLs
1. http://chromium-pdf.wmflabs.org/en.wikipedia.org/v1/pdf/Berlin/Letter
= Post-deployment
Readers Web will be responsible for the service immediately after its deployment and while it's evaluated. If, after evaluation, the headless Chromium based renderer supersedes the current Electron-based renderer, then Readers Infrastructure will take over responsibility.
== Contacts
| Team | Contact |
| --- | --- |
| Readers Web | @phuedx |
| Readers Infra | @Fjalapeno |