mirror of
https://github.com/servo/servo.git
synced 2026-05-01 07:14:51 +02:00
Page:
Workweek boot 2 servo
Pages
Adding a new WebIDL binding
Alternative Logo Proposals and Related Swag
Asynchronous WebAssembly compilation project
Austin Oxidation
Autogeneration of style structs
Basic SVG support project
Beginner's guide to rebasing and squashing
Benchmarking
Benchmarks
Bots
Browser Engine Research
Build Errors FAQ
Buildbot administration
Building for Android
Building for Magic Leap
Building for UWP
Building on ARM desktop Linux
Building
CI Services we use
CSS parse error reporting
CSSOM student project
Canvas rendering project
Cargo upgrade service project
Code rust concurrency
Code Review
Code of Conduct
Coding standards
Compiler upgrade recipes
Compositor Layer Design
Contributing
Control Servo using WebDriver
Creating and viewing WARC web archives in Servo
Creating new OpenSSL Windows binary distributions
Cross compiling from linux to mac
Crowbot
Css selector matching meeting 2013 07 19
DOM Design
DOM documentation
DOM missing pieces
Debugging JS web compat issues
Debugging and editing tools
Debugging
Design
Developer tools student project
Devtools CSS errors
Devtools plans
Devtools
Diagnosing SpiderMonkey JIT issues
Eric Atkinson visit 2013 09 10
Events and sundry
Expand HTTP request response monitoring
Fetch improvement project
Firefox Reality release notes
FirefoxReality build
Firewall setup for servo master1
Focus student project
Form validation student project
GSoC project brainstorming
Garbage collected DOM
Getting started with layout
GitHub Labels
Github & Critic PR handling 101
Github workflow
Glossary
Governance
Graphics toolkit integration
HTML parser improvement project
HTMLElement binding conversion
HTTP archive support project
HTTP library requirements
Hawaii Rooting
High priority content for layout
Highfive
HoloLens 2 test plan
Home
How to generate GStreamer binaries for CI
Image load conformance student project
Image maps project
Implement HTML charset parsing project
Implement ImageBitmap project
Implement missing WebAudio automation student project
Implement support for missing XMLHttpRequest APIs
Implement worker modules
Implementing a web standard (RGSoC)
Improve specification conformance of unicode bidi library
Incremental flow tree construction
Infrastructure
Integrate xml5ever
Intern project brainstorming
Intern projects
JS objects, wrappers, and cross origin concerns 2013 08 07
Layout 2020
Layout Overview
Layout resources
Layout revamp ideas
Leo meyerovich visit 2013 07 22
Linux sandboxing
London Oxidation
London Security
Meeting 2014 10 27
Meeting 2014 12 08
Meeting 2012 02 08
Meeting 2012 02 16
Meeting 2012 07 20
Meeting 2013 04 01
Meeting 2013 04 15
Meeting 2013 04 22
Meeting 2013 04 29
Meeting 2013 05 06
Meeting 2013 05 13
Meeting 2013 05 20
Meeting 2013 06 03
Meeting 2013 06 10
Meeting 2013 06 14
Meeting 2013 06 17
Meeting 2013 06 24
Meeting 2013 07 01
Meeting 2013 07 15
Meeting 2013 07 22
Meeting 2013 07 29
Meeting 2013 08 05
Meeting 2013 08 12
Meeting 2013 08 19
Meeting 2013 09 09
Meeting 2013 09 16
Meeting 2013 09 23
Meeting 2013 09 30
Meeting 2013 10 14
Meeting 2013 10 21
Meeting 2013 10 28
Meeting 2013 11 04
Meeting 2013 11 18
Meeting 2013 11 25
Meeting 2013 12 02
Meeting 2013 12 09
Meeting 2013 12 16
Meeting 2014 01 06
Meeting 2014 01 13
Meeting 2014 01 21
Meeting 2014 01 27
Meeting 2014 02 03
Meeting 2014 02 10
Meeting 2014 02 24
Meeting 2014 03 10
Meeting 2014 03 17
Meeting 2014 03 24
Meeting 2014 03 31
Meeting 2014 04 07
Meeting 2014 04 14
Meeting 2014 04 21
Meeting 2014 04 28
Meeting 2014 05 05
Meeting 2014 05 13
Meeting 2014 05 19
Meeting 2014 06 09
Meeting 2014 06 17
Meeting 2014 06 23
Meeting 2014 06 30
Meeting 2014 07 07
Meeting 2014 07 14
Meeting 2014 07 21
Meeting 2014 07 29
Meeting 2014 08 04
Meeting 2014 08 11
Meeting 2014 08 12
Meeting 2014 08 18
Meeting 2014 08 25
Meeting 2014 09 08
Meeting 2014 09 15
Meeting 2014 09 22
Meeting 2014 09 29
Meeting 2014 10 06
Meeting 2014 10 13
Meeting 2014 10 20
Meeting 2014 11 10
Meeting 2014 11 17
Meeting 2014 11 24
Meeting 2014 12 15
Meeting 2015 01 05
Meeting 2015 01 12
Meeting 2015 01 26
Meeting 2015 02 09
Meeting 2015 02 23
Meeting 2015 03 02
Meeting 2015 03 16
Meeting 2015 03 30
Meeting 2015 04 06
Meeting 2015 04 13
Meeting 2015 04 27
Meeting 2015 05 04
Meeting 2015 05 11
Meeting 2015 05 18
Meeting 2015 06 01
Meeting 2015 06 08
Meeting 2015 06 15
Meeting 2015 07 06
Meeting 2015 07 13
Meeting 2015 07 27
Meeting 2015 08 10
Meeting 2015 08 17
Meeting 2015 08 24
Meeting 2015 08 31
Meeting 2015 09 14
Meeting 2015 09 21
Meeting 2015 09 28
Meeting 2015 10 05
Meeting 2015 10 12
Meeting 2015 10 19
Meeting 2015 10 26
Meeting 2015 11 02
Meeting 2015 11 09
Meeting 2015 11 16
Meeting 2015 11 30
Meeting 2016 01 04
Meeting 2016 01 11
Meeting 2016 01 25
Meeting 2016 02 01
Meeting 2016 02 08
Meeting 2016 02 22
Meeting 2016 03 07
Meeting 2016 03 21
Meeting Devtools Servo 2
Meetings
Microdata project
Minutes Hackathon 2012 03 27
Missing DOM features project
More ServiceWorker support project
More developer tools student project
Mozlandia Automation
Mozlandia B2S
Mozlandia JS
Mozlandia Rust In Gecko
Mozlandia WPT
Mozlandia gfx
Mozlando Devtools Servo
Mozlando Oxidation
Mozlando SM Servo
Mozlando Servo Bluetooth
Mozlando Servo MagicDOM
Mozlando Servo SMStrings
Mutation observer project
Mutation testing project
NCSU student projects
Network security project
Off main thread HTML parsing project
Offscreen canvas improvements project
Offscreen canvas project
Orlando Oxidation 2018
Oxidation 2015 11 05
Persistent sessions student project
Preparing ARM libraries for CI
Priority of CSS properties
Priority of DOM implementation
Priority of dom bindings
Private browsing student project
Profiling
Project proposal deadlines
Prototype JS form controls student project
Prototype ways of splitting the script crate
Publishing a new ANGLE NuGet version
Publishing a new app store release
Push vs Pull for caching
Random web content project
Refactor GLES2 student project
Refactor bluetooth support student project
Remaining work
Removing push notifications from IRC hooks
Replace C libraries student project
Report new contributors project
Representation of computed style
Research
Reviewer
Roadmap
Running Web Platform Tests on Servo
Rust HTML parser
Rust SpiderMonkey debugger API
Rust cssparser code walk 2013 08 02
SaltStack Administration
San Francisco Oxidation
Servo Benchmarking Report (December 2024)
Servo Benchmarking Report (November 2024)
Servo Benchmarking Report (October 2024)
Servo Layout Engines Report
Servo and SpiderMonkey Report
Servo for Gecko Developers
Specification Links
SpiderMonkey related tasks
SpiderMonkey infodump
SpiderMonkey upgrade details
Storage student project
Streaming webassembly student project
Strings
Student project brainstorm
Student projects
Styling overview
Stylo hacking guide
Summer of Code 2014: Implement XMLHttpRequest
Summer of Code 2016: Fetch API
Summer of Code 2016: File support
Summer of Code 2016: ServiceWorker infrastructure
Summer of Code projects
Summit meeting 2013 09 09
Support WebDriver based tests project
Syncing web platform tests (WPT)
TaskCluster
Testing
Tools
Tracking intermittent failures over time project
Transcription Notes from Servo Architecture talk in Suwon
Transcription notes from rust patterns talk in suwon
Transcription parallelism
Transcription rust concurrency
Transcription rust runtime
Transription layout and acid2
Trinity College Dublin student projects
UPenn student projects
Updating the Rust compiler used by Servo
Upgrading non taskcluster linux CI machines
Upgrading the UWP gstreamer binaries
Upgrading the windows LLVM binaries
Upgrading wptrunner
Using DOM types
Using Rust Spidermonkey Prototype
Using WebWorker Prototype
Version 0.1
Videos and presentations
WebAudio JS interfaces student project
WebAudio nodes student project
WebCompatBug
WebSocket student project
Webdriver student project
Webdriver tests student project
Webrender Overview
Whistler 2019 notes
Whistler Bugzilla
Whistler FFOS
Whistler GFX
Whistler Houdini1
Whistler Houdini2
Whistler Necko
Whistler Oxidation 2019
Work items for new contributors
Workweek COW DOM
Workweek alt js
Workweek android arm
Workweek boot 2 servo
Workweek compiler lints
Workweek displaylist
Workweek dogfooding
Workweek encoding
Workweek generated content
Workweek governance
Workweek graphics stack
Workweek graphics toolkit
Workweek incremental layout
Workweek js bindings status
Workweek layers
Workweek layers2
Workweek pixels
Workweek rasterization
Workweek reftests
Workweek roadmap
Workweek script crate
Workweek security
Workweek string interning
Workweek tables
Workweek writing modes
XML parser student project
infra triage notes
jQuery status
webxr.today support
No results
2
Workweek boot 2 servo
jdm edited this page 2014-11-11 08:27:40 -08:00
Table of Contents
Boot2Servo
- jack: Fabrice, not sure what you wanted to talk about. faramarz said marshall can work on it, too.
- fabrice: Not sure if you need some overview of how b2g works.
- jack: Yes.
- fabrice: It's simple. We use android's basic layers and kernel and a few daemons. Anything you see about Gonk is this small layer that we get from Android. On top of that, we have Gecko. And Gecko has some glue to Gonk, since we have different versions with ICS and newer editions of Android. So the glue changes when those interfaces change. On top of Gonk, we have Gaia that is all the UI on the device. It's all HTML/CSS, including for the Chrome. So Gaia has a special mode for the system app, which provides window management. If you need to display an alert window or other crazy stuff, Gaia has hooks for that. The tricky part of this is that there are some B2G specific Gecko code and some of it is in the Gaia system app. We could not get all the parts of the Gaia embedding into Gaia itself. One important thing in Gaia that we use is special iframes. There is one iframe for the system, and when you open a new window, it's a new iframe. When you open such an iframe (mozbrowser), it gives you special APIs like loadStart, loadEnd, etc.
- dherman: How big is the surface of non-standard additions?
- fabrice: mozbrowser is not too big. In Gaia, it's huge.
- mbrubeck: Hardware, bluetooth...
- fabrice: The telephony parts are crazy.
- pcwalton: I was looking at the parts in Gecko and they're pretty big. Is there any way we can use the telephony stuff? Lots is in dom/ and some is xpcom...
- fabrice: It's pretty tied to Gecko.
- pcwalton: Servo XPCOM bridge?
- kmc: May need a Rust XPCOM bridge anyway for writing Rust components for Gecko.
- pcwalton: Ick.
- fabrice: What are your goals? Running the full stack? If you want to boot up the UI and have the basic iframe mechanisms, that may be more reasonable. We add new APIs all the time. It's a matter of scaling your resources to more people to write more APIs. Also, one thing we have on B2G is that all the content runs out of process. So all the APIs are written to run content out of process and is a bit hard in Gecko.
- jack: Not a problem for us.
- dherman: There are aspects of Servo that should be nice, but the hard question is what should be the route from zero to complete?
- fabrice: What do we want to do? v1 of B2G was two years, not starting from zero.
- dherman: Not starting from zero with servo...
- fabrice: But, Gecko was further than Servo is.
- dherman: I mean that on B2G you have determined many of the issues.
- pcwalton: Idea - how many processes does it use?
- fabrice: One parent and then one process for each app. Can merge processes for low-end devices.
- pcwalton: Content process is sandboxed? So it can't access the baseband. So, if I replace the dialer app content process, what happens?
- fabrice: It goes through the IPC and asks the content process.
- pcwalton: So the dialer app is just a shell, then, remoting the calls to the trusted parent process.
- mccr8: Yes, the child app does not have permissions.
- jack: Suggesting we mimic the IPC protocol and pretend to be Gecko?
- jdm: NOOOOOOuurrrGGGHHH
- pcwalton: Not that. We could jam Servo inside a Gecko content process to do the painting and let Gecko handle the IPC and Gaia/chrome stuff. You might eat a memory cost because you're not sharing data pages anymore, but it might let us avoid writing a telephony stack in Servo.
- zwarich: If we do something like this, there should be a goal that is either some research question we're answering (feasibility); the other is delivering or moving towards delivering some other part of FFOS. This solution seems like it would not be doing either.
- pcwalton: A strategy that might make sense is to show that we can, when running on FFOS hardware, deliver a good experience. Can be done by booting up Gaia. No telephony, fast UI, etc. Once we do that, people will ask, how do we ship it? Then we can talk about it.
- dherman: I agree with both of you. It's not a thing we should invest a zillion resources in. A first proof of concept is important - we need a simple demo (weeks of work, not months of work). A simple demo shows that you can make something real.
- pcwalton: Also lets us test.
- dherman: Focus right now is still on the core of Servo. Shouldn't have three different places where we try to prove we are an improvement.
- jack: We may have the support of Marshall, on Faramarz's team, to help us with this work. The question is: is Servo at a point where he could build the Gaia home screen in Servo?
- pcwalton: We may need some more core web features first.
- jack: I just want to know - what do we need to get Gonk booting to the homescreen and using Servo to paint?
- fabrice: Displaying and getting events needs to be ported to Gonk. Glutin?
- pcwalton: Thinking of providing a CEF C API/ABI with a glutin wrapper - it should be sufficient.
- dherman: Just be because we can't demo end to end doesn't mean we can't make this work start. Who was going to work on this?
- fabrice: Marshall and myself.
- pcwalton: There's some stuff we have to do to prepare for this work - a SM upgrade, some more DOM APIs, etc. I think that it's also valuable to our research goals. Having panning the homescreen and typing working well and scrolling is really important. We already have APZ in Servo, but testing it on FFOS HW is important.
- jack: Two things need to be done. Display/events stuff need to be working on gonk. On device?
- fabrice: Can do on emulator, but it's really slow. If you contact me privately, I might be able to get one for gw.
- jack: Easy enough for us to do that work directly. Second piece was what we need to get the homescreen running. What CSS features are used there? What parts are you two most interested in working on?
- fabrice: I've been looking at getting the gonk toolchain to build Servo. I'm close. It builds, but it doesn't quite link.
- yichoi: Good idea to see the performance of Servo in B2G. There must be questions (like I frequently get) about whether it is even fair, since Gecko has more functionality. It is fair to compare Gecko to the current Servo implementation?
- dherman: It's the first skepticism we get - will we slow down when we implement more of the functionality. I think that means we can't advertise really hard numbers until then, but it doesn't mean we shouldn't start doing this work. I think we're trying to show that it is possible, as opposed to when we can make fair comparisons. In Servo, we've talked about making sure we do web platform features that are likely to cause performance issues. There are many features, like libeditor, that are not central to performance and so should not affect our performance.
- jack: That's why there's weird stuff on our roadmap like flexbox, writing modes, fragmentation, etc. CSS Counters are certainly something we've recently discovered are not great.
- pcwalton: The only way to get there is by implementing more stuff. Given how much we have implemented so far, I am confident that we will keep our performance. Most of the really bad things performance are the older features, not the new things we haven't implemented. We have a lot of the old stuff implemented at this point.
- jack: Sounds like it makes sense to start doing some of this work.
- fabrice: I am also interested in power consumption. We need to improve this a lot. It seems like a huge differentiator for us in our market. That can only be done on-device.
- jack: Our finding on desktop was that we can clock down the cores and run in parallel. Can we do that on devices? We can't test on Android.
- fabrice: yes. On the flame, we can tune the memory, CPU clock, turn off one of the cores, etc.
- jack: Same thing for measuring for FF Android? Dongles? Power seems like a good first benchmark.
- dherman: It feels like a painful choice between browser running faster vs. less power. Pushing it on the user is bad. But, deciding to make your browser slow seems bad. But fast and not differentiating on power is bad... heuristics?
- jack: We may be able to do both with more tuning.
- larsberg: Laleh's patches improve our numbers from the talk.
- dherman: That's good. Not acceptable to have perf parity and better power. Need both. And a terrible product decision...
- fabrice: We can't lose on speed. Not an option.
- dherman: Talking about being slower than our maximum possible performance... maybe it's a product call.
- larsberg: There's a max speed. If you hit 60fps, there is no more gain to be had anyway.
- zwarich: Also the question of how this fits into total system performance. Total CPU layout time is only 20%, not including other stuff running on the system. The power wins from parallel layout may not be the same...
- pcwalton: CSS flow construction and selector matching include? What else is there?
- zwarich: Parsing. Radio.
- jack: Are iframes to different content processes remote?
- fabrice: Yes.
- jack: It sounds like power is the best first goal.
- yichoi: Correctness is also a factor. We might be able to do more or less work to get a mostly correct page layout to reduce power consumption. It's something we've been thinking about.
- larsberg: People have done it with slight blueshift to reduce display usage. If it's not noticable, that makes sense.
- dherman: We would want to make sure the layout is unnoticably different.
- larsberg: I'm a little worried about keeping it building. Please let me know about your build system work.
- jack: Same as Android?
- fabrice: Similar. Not quite identical. There's a huge pile of makefiles you don't want to build. We already build Gecko and SM, so we have support for building whatever we need. We should just use that.
- larsberg: Marshall?
- marshall: I want to sync up with fabrice.
- jack: We just have project hacking time, so you can hang out here (and in #servo). We'll also be here Friday morning. Thursday we are in SF.