# Apps Using Web Engines @ WEHF
log (correct inline as you see fit)
* Intros
* Igalia, Tauri, Socket Supply, Bloomberg, Protocol Labs (more i'm sure, add yourself!)
* agenda
* devtools
* polyfilling missing features
* styling/theming/os
* ipc perf
* linux
* cross vendor compat
* don't want to build everything from scratch
* leverage huge amount of work from other projects/vendors
* webviews on every os
* problem which electron avoids: have to deal w/ multiple engines and api surfacii
* tauri has to deal w/ three
* many parties involved, many api surfaces
* messaging between webviews and native code
* different on each
* dynamically change function calls
* little details and also bigger things
* bloomberg has downstream changes
* must use fixed version that's validated
* how many apps are ok w/ lower quality/reliability of using system default?
* trade-off: stability
* fixed version not a solution for many projects
* if want to embed and don't have stable api, could make a shared api? standard?
* that would be great for apps which use older parts of web platform
* polyfilling
* deno - not polyfilling but has to add platform stuff
* interop/compat/baseline projects - perhaps relevant to creating more "stable" web platform to support across multiple "unstable" surface areas (OS, engines, etc)
* servo - switching out engine for servo
* subset of stuff you have certainty about
* webviews ~~wg~~ cg at w3c
* https://www.w3.org/community/webview/
* images - tradeoffs - don't want to ship source-sets
* need to raise awareness around those trade-offs
* pain: integrating w/ OS styles
* "is it really native?" if doing webviews
* hard to fit into OS styling
* maybe system-ui css improving this
* some opposite movement too, eg open ui
* looks same across all platforms
* consistent product experience
* hackernews always be mad either way
* Mozilla invested in CSS+XUL/(X)HTML OS styling for many years and moved to native controls
* WebExtension API for native-or-not styling: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles
* Tauri looking to port CEF to Linux
* for performance
* web-rtc
* games in kiosk mode
* graphics in webkit gtk
* electron + chromium
* webkit gtk expects abs paths in some places
* tauri shares prob w/ servo, lots of dependencies
* plans for wpe? webgl game perf
* angle, minibufs, gpu -> accel webgl content
* no guarantees on perf
* then composition (piles more on gpu)
* if output view handled well, decent perf
* but gtk
* limited options in how efficient it can be rn
* gpu resource you have to interleave into gtk window
* window is just once instance - repaint gets view output and resamples
* webgl @ full hd ->
* composer (could be optimized tho) ->
* gtk does another comp incorporating view output ->
* but maybe smart gtk could optimize that better
* linux recent gtk much better perf + feature set
* but takes ages to go through distros
* wpe 2x release annually, every 6mos
* deb packager, certain channels get immediately
* flatpak
* tech preview on epiphany - unstable releases
* multiple release channels (but unclear of packaging unstable)
* have to compile everything if you want unstable, ideally you use a packaged solution
* check your targets - gpu, recent mach, etc
* some work to unify pipeline, available at some point, on roadmap
* how to inspect - often hidden away
* build more tools to make easier to access?
* devtools for web, but not for native code
* obscure quickly
* any tools for this? eg profiling
* for wpe, having privilege of being inside web engine
* dive into or even under
* cpu, mem of specific process
* under webgl, map to native api
* eg what goes into openshell
* partly is implementation and partly debugging technique
* often running in embedded envs
* but easier to do on desktop
* but not for everyone
* limitations like closed source gl drivers
* try and improve high level tooling
* aim for best experience for web app devs
* otherwise, bug reports
* try and repo
* maybe more we could in angle
* get more info there, provide it
* unclear how that works in chromium
* use their runtime dev tools (CDP)
* if have conversation on what to improve, what's missing
* then happy to close the gap
* chrome profiler
* hook into lots of events
* get profile traces
* can figure out why not performing well
* chrome tracing, get a few secs of app trace
* view in chrome ui
* magictrace - not chrome specific
* generic gfx tracing tool
* generally: as much info as possible
* add overlays for dynamic tracing
* scripting calls for the dynamic trace points
* easier to integrate into your own app
* linux: fragmentation
* ppftrace, qt have different one (name?)
* choose one! stick to it!
* what do you want embedded engines future to look like?
* Chrome OS as example
* browser + OS integrated the best
* PWAs working great there
* embedding helps focus on web apps
* better integration allows web apps to do more
* chromeos maybe is opposite, OS integrated into web, not vice versa
* eg OS shouldn't have full upgrade cycle of web runtime
* maybe browser is api to talk to system
* for modern web apps, browser is api to talk to everything
* chrome os trying to support all kinds of apps though, not just web apps
* pwa apps are opposite of fixed-version web apps in embedded webviews
* boundary of web vs browser chrome
* maybe in 10yrs if build quality is consistent, could maybe be that way
* would be interesting to think about how to get that state
* if you draw your box, where does the web platform end
* eg window decorations
* web apps w/ priv'd apis - chrome apps, fxos, fugu
* one sec/perms model, or mode
* a think like tauri can provide that extra bit
* permissions / privacy / sec models differ in app/webview use-cases
* thinking 10yrs out, what's the path to get us there w/ webviews
* fugu, chrome-anchored business relationship
* concern: piling features on top of web platform
* eg servo can keep up?
* servo, ladybird doing ok tho
* Bloomberg needs even more features actually
* different sec lens
* eg never let unpermissioned web access to clipboard
* whereas install implies it
* eg cross origin
* awkward
* but dbus vs postMessage
* feels optimistic
* linux permission system connecting web apps to web apps
* mobile os does this, but desktop permission expectation is you don't have to
* macOS atteempting to address that, at cost of permissioning of your OS
* unified permission models?
* they reflect different values
* and business models?
* unclear