mirror of
https://github.com/servo/servo
synced 2026-04-25 17:15:48 +02:00
Page:
Meeting 2013 10 28
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
Clone
2
Meeting 2013 10 28
Josh Matthews edited this page 2013-10-29 08:05:00 -07:00
Servo Meeting 2013-10-28
Agenda
- note taking reminder
- OS X lowest supported version
- rustpkg status
- rust-http SSL support
- string interning patch
- draft seoul agenda (https://etherpad.mozilla.org/servo-in-seoul )
- retina display
- reflow performance
- Android compositing support
Attending
jack, kmc, lbergstrom, pcwalton, Azita, brson, Samsung
Note taking reminder
- J: Lars has been doing a lot of work note-taking. If others can help and/or correct errors then that would be much appreciated.
OS X lowest supported version
- J: A couple of people on the team have been on 10.6 for some time. pcwalton just updated to 10.8. Does anyone need 10.6?
- B: I am
- J: Do you plan to stay there?
- B: I'm flexible but don't intend to upgrade unless I have to
- J: Is there anyone else on 10.6? (silence)
- J: We'll leave the status quo in place but if GLFW breaks something on 10.6 we won't fix it unless it's trivial. Is that fine?
- B: OK
rustpkg status
- J: After the epic Rust upgrade that we had, which was only done in order to get a new version of rustpkg, we can now continue to make progress on rustpkg. After doing the upgrade I resumed my rustpkg work because Keegan was interested in taking over that work. We ran into a rustpkg bug that was hopefully fixed earlier today—let me see if that landed—we need to upgrade again. We need to take another Rust upgrade.
- K: We need to rewrite our debug! macros.
- K: I'm happy to do the Rust upgrade as well
- P: Will also improve performance. Inline extra::arc. A lot of rendering time is spent there
- J: option API rename just landed.
- K: Since I'm not in the middle of anything big right now can I start on the next Rust upgrade right away?
- J: OK
- S: When will we upgrade Rust?
- J: Immediately. rustpkg builds 9 crates. Next small goal is to get glfw-rs ported. We want glfw to be a submodule of glfw-rs. Then we want rustpkg to build the C library. Supposedly it's capable of doing that. Assuming that works out we can start porting all of the things that build C libraries. We can get closer to having all of Servo to build with rustpkg.
- K: Which is really important to getting rustpkg feature complete for 1.0.
rust-http SSL support
- J: rust-http just got a PR to do SSL. Unfortunately it uses rust-ssl which is OpenSSL and that is not suitable for us because it's not NSS and there are FIPS certification issues. I talked to ChrisMorgan about how to fix this. The hope is to do it with a trait.
- B: Can this go to rust-ssl and have the trait there, behind a configure switch?
- J: SSL is not on our immediate term plans.
- K: I'm skeptical of pluggable backends for this crypto stuff.
- P: I don't know if we have much of a choice.
- K: Who's pushing to use OpenSSL over NSS?
- J: Nobody was really pushing it. OpenSSL and GnuTLS are the de facto standards. Nobody knows about NSS. The use cases that we have as a browser vendor may be different for OpenSSL. I don't know what the best way forward here. Does anyone care about SSL implementations?
- sanxiyn: Doesn't NSS depend on NSPR? That could be a problem for some
- P: Crypto people say that Rust needs to use OpenSSL on the server and NSS on the client. I feel the trait is probably our best option; I know there could be security problems, but I think the alternatives are worse. Not using OpenSSL on the server is going to be weird, and using OpenSSL on the client is not an option.
- K: Why is that?
- P: I don't know for sure. I've always been told that NSS is a hard req. All browser use it (well, Chrome & Firefox) but I don't know why.
- P: Three options: use the trait, or make the server weird, or make the client weird. It's hard to know what the issues here are. Let's talk to some professionals about the differences. Both FIPS-certified (or are they not at the same level?). OpenSSL has a different API. Lots of auditing. But the original author (Adam Langley) went with NSS for Chrome.
- B: OpenSSL is incompatible with some licenses.
- J: MPL?
- B: Don't know.
- J: We'll mail licensing. Kmc can follow up with crypto folks. Those answers will let us know what we need to do.
String interning patch from Samsung
- J: You were worried about hubbub. I think we can remove hubbub as a requirement, since we plan to remove it.
- S: There must be miscommunication about hubbub.
- J: Yes, the DOM stuff definitely does. I think it's reasonable to land the string interning patch without interning everything.
- S: The string interning should be task safe?
- J: Yes, that was the problem we had with libwcaplet. It had a big lock that slowed us down.
- K: lock-free hash table?
- P: Probably the best idea so far. And it should may be go into rust. Not libstd, but maybe an incubator / separate project. java.util.concurrent for Rust would be great.
- J: Can we boostrap this by doing RWArcs around a normal hash table?
- P: Yes.
- S: Using a lock instead of RWArc? We were taking the lock every time we interned a string. We could be more coarse, just grabbing the lock at the beginning of parse and dropping at the end.
- P: It will help in the short term, but will hurt when we have a parallel CSS selector matching.
- S: does CSS intern anything?
- P: No, you're right. Maybe it makes sense to just make the lock coarser.
- K: lock-free reads and locked writes? Parse in parallel and then intern everything?
- P: Maybe better to do something coarse for now to get it faster and in and do something more complicated later.
- J: Solve the thread-safe issue with coarse-grained locking or RWArc and land the patch. Then do lock-free hashing later.
- S: Sounds like a plan.
- J: Brian, we're going to explode libextra (in Rust). Should we do the same thing with lock-free hashtables?
- B: I like patrick's java.util.concurrent idea.
- J: Should we pull the libextra concurrent stuff and put it in here?
- B: Sure. Some of the libextra stuff might end up in something more general (e.g., Arcs)
Draft agenda for workweek in Seoul
- J: This is a first draft. Basic idea is that in the morning we would have 1-2 sessions for the general audience. There should be 15 Samsung people and 9 Mozilla, so 24 people. High-level discussions in the morning and then break into groups of 4-5 people each for the afternoon to work on those projects through the week. We would do that each day.
- J: For the session presentation stuff, I have topics and potential presentations there. I'm curious if there are specific things that Samsung would like to learn about or if Mozilla has things that we would like Samsung to present that we could list.
- A: Could we have a session just to talk about overall planning for the year? I think it would be good for the group to hear from both sides. Maybe as an intro on the first day? Maybe talk about both resourcing and what the plan for Servo is on both sides. The other thing is just to get clarification on what we need to prepare for the presentations. Dave Herman wanted to know what he should prepare. What level of detail should the Rust (and Servo) presentations be at?
- J: Don't have to figure it all now. Just wanted to get some general feedback so that over the next couple of weeks we could be as specific as possible.
- A: Comments from Samsung on the presentations now or soon would be appreciated. We only have a week and a half, and it takes time to put together the larger presentations.
- A: For the presentations that Jack has on the list (intro to rust and intro to servo), could you let us know what level of detail you are looking for? These are supposed to be for a Samsung general audience, we believe.
- B: I am specifically concerned about what kind of training we will have to do.
- A: We just need to know (possibly as a response to the e-mail) so that we can prepare the presentations.
- S: I will pass that on.
- J: The workweek agenda is in the etherpad because the internal Mozilla wiki is not available.
- A: Can we add all of the Samsung attendees as well?
- J: Yes, that would be great.
- S: We will put our names there.
- J: I will follow up for more information and the agenda.
Retina display
- P: How do we want to fix it? I saw we have some code that queries for it. There is also stuff with CSS-unit. Will it be enough to have the compostior tell the constellation about it and have the engine scale everything up?
- J: We want it scaled up in different ways. In images, pixel-double. For text, we want to scale the font size by 2, but still render to the full amount of pixels. I was going to ask
- P: In the short term, we should change the Au that CSS reports.
- J: Wouldn't images be wrong?
- P: No, images don't come from the CSS file. The images come from the image-decode.
- J: Sounds right. I was going to talk to somebody on the graphics team in paris about how this is done in paris. css pixels, device pixels, layer pixels, and then (compositor?) pixels. Not sure how many we need of these, so I will follow up on that to find out what our strategy should be.
- P: I am pretty sure CSS needs to be changed because the definition of a pixel depends on retina display, so it makes sense that the Au should be changed.
- J: There were some blog posts about units in firefox; I will post them to the list. I agree that it is a really annoying problem. It made the Toronto demos annoying. Had to zoom, hit every race condition possible...
- P: Those are fixed except for some races with how we delete tiles. But we should be much better now. It's not anything we are doing wrong; it's just how we do things.
Reflow performance
- P: It has been optimized. #1141 is the remaining issue, making text measure O(1). For block layout we are a little faster than gecko/webki at reflow. With measuring text, we are a little slower because of that bug. Not for the incremental case.
- P: Samsung, please let us know if these numbers help with our comparison with gecko and webkit. Please let us know if you have other things that you want us to focus on. But these are some early numbers that help.
- J: I would love for somebody else to reproduce those measurements.
- P: Please do - I can show you how to profile gecko / webkit.
- S: About reproducing the measurments. What testcase?
- P: A rainbow page, which I will check into the tree. I will send a PR by the end of the day so it can be shown.
- S: The performance test cases that we use should be in the repository.
- J: Does this work in stock firefox now?
- P: Do you mean does the page work?
- J: I mean, how are you getting the measurements?
- P: Just using Instruments. I am comparing the time spent in the Reflow() method. For webkit, using instruments against safari to measure the time spent in the layout() method.
- S: What is Instruments?
- P: Instruments.app, which is a dtrace application (profiler) for Mac OSX.
- J: Instruments is the profiler included with Xcode.
- S: How can we do a similar thing on linux?
- P: A perf tool will give you a call graph-based profiler on linux. On this page (and on several pages) we do one reflow, whereas webkit and gecko will do multiple reflows.
- J: Because gecko does an early reflow
- P: Yes, after parsing a certain amount of the page. At first I thought we were much slower, but found out we missed a couple of them.
- S: Isn't dtrace a entry/exit profiler?
- P: It should be sampling (or is on Mac)
Android compositing
- P: We have a recent change that affects compositing, allowing the renderer and compositor to run in separate processes. It will be nice for sandboxing and allow separate GL contexts. As a result, there are also a lot fewer crashes. But it is not clear to me how this will work on Android. After talking to the graphics team, this method relies on the ability to share textures between different GL contexts. IOSurface on Mac, XPixMap on Linux. EGL-based on android. Need to use EGLStream, but I'm not sure what the support is on Android drivers. We may need a fallback case that uses shared memory and texture upload on the compositor side. Can be straightforward, but is not implemented yet. If you want to forward-port the compositor changes to android, there is some work to be done.
- J: Spent about 6 hours talking about surface management. The problem with EGLStream is you get a texture out on the other side, so you can't share it. Comes up in Gecko because rendering to a texture and want to composite it, but might be taking a screenshot to show on the little tiles on the homescreen, so you need two copies. Two proposals. Simple one: surface pool (surface is a 2d grid of pixels) where the renderer will own the pool and you will give out a grid of pixels, you go through the steps, everybody has access, finite size to pool (with blocking), then detach the texture from the framebuffer, hand it to compositor (as pcwalton designed) when the refcount goes to zero, goes back to an azure draw target and then back to the system.
- P: need details
- J: will create a wiki page. In linux we do a gpu-gpu texture copy. Gecko does the same thing right now and is going to figure out how to avoid the problem on Linux. There is a trick to set what framebuffer 0, and then we can make it be one of those pixmaps. But this is an area that is really complicated in Gecko. They had several iterations of the design and in multi-process they have had to redo it twice again, so we should be careful to do a clean design from the start here.
- P: Now, no glcontext sharing whatsoever. Just abstract native graphics surface thing that you share.
- J: Only other piece to figure out is some way to get a GLContext from Linux on a releng machine, because we can't run contenttests. Even with the null compositor.
- P: did you try with the CPU rendering?
- K: in contenttest?
- P: with CPU rendering, there should be no GL context created.
- K: but in headless mode, the renderer does not run at all; the compositor is not initialized at all.
- J: It did not work, but I did not try to fix it.
- K: Did you return if headless mode is set?
- P: Not sure; we should check.
- J: Crashed on exit, but since we had so many other crashes in servo that we weren't checking the exit code anyway. There was probably a bug in the Rust library code related to
waitforpid. - P: File shutdown crashes again! There are now none known.
- K: I will go through the filed Issues to verify them.