Compilation of tech articles, videos and links

For internal development purposes.

Webrenderer

Curated content about WR


FirefoxGraphics github org

There are standup notes with links to some tech documents, and other interesting stuff related to webrender & firefox.

https://github.com/FirefoxGraphics


The whole web at maximum FPS: How WebRender gets rid of jank

Amazing intro to Webrenderer by Lin Clark.

https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank/


Entering the Quantum Era—How Firefox got fast again and where it’s going to get faster

How Webrenderer fits into Firefox by Lin Clark

https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/


Nicolas Silva — WebRender: a sneak peek into Firefox Quantum's future (Rust Hungary #2, 2017-10-24)

Useful for understanding WR architecture.

https://youtu.be/oXF-uyPIKcc?t=485


Meeting notes from Mozlando 2018.

https://github.com/servo/webrender/wiki/2018-Mozlando

Quote from WR API roadmap:

Rewrite WR API to accept 3 trees instead of a single display list:

  • spatial tree (reference, scroll and sticky frames)
  • clip tree (tree of clip nodes, with a clip chain defined by a path to the tree root)
  • item tree (with nodes being the stacking contexts only, and leafs being items)

Which can be relevant for the project


Meeting notes from Toronto 2019

https://github.com/servo/webrender/wiki/2019-Toronto


clipping & positioning (design)

https://github.com/servo/webrender/blob/e16ab884672151fbdebc149479f9bfdecd1da216/webrender/doc/CLIPPING_AND_POSITIONING.md



ReactNative

There is an effort within the react native community that aims to achieve several goals:

  1. Make react-native core smaller in terms of number of components
  2. move to import {View} from 'react-native'. Which can potentially be used with other bundlers.
  3. Simplify architecture 3 threads -> 2 threads model with sync interactions. aka React Fabric
  4. Make other platforms 1st class citizens (windows + macOS + web?). That involves rewriting a lot of native code in c++

A combination of all of these ideas might make react-native a potentially appealing direction to explore once all these pieces are in place. Or alternatively use this project as a basis for a react-native platform implementation.

NOTE: currently there is no plans to implement react-native backend within this project.

Relevant links:


Make the RN core lean

https://github.com/react-native-community/discussions-and-proposals/issues/6


Cross plat strategy for react-primitives

discussion about the future of react-primitives

https://github.com/lelandrichardson/react-primitives/issues/54


Supporting Third-party Platforms in RNPM + Metro Bundler

discussion about supporting 3rd party platforms as 1st class

https://github.com/react-native-community/discussions-and-proposals/issues/21


Unify RN platforms issue

discussion about the way to handle 3rd party platforms like windows. Also handling API extensions (like adding the mouse support)

https://github.com/react-native-community/discussions-and-proposals/issues/50