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 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
- 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
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 | @Jhernandez |