mirror of
https://github.com/servo/servo.git
synced 2026-05-01 07:14:51 +02:00
Page:
Meeting 2015 07 13
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
1
Meeting 2015 07 13
Lars Bergstrom edited this page 2015-07-13 13:11:34 -05:00
Agenda items
- Ms2ger starts today (jack)
- Surrogates in the DOM https://github.com/servo/servo/issues/6564 (Simon)
- document.write (Simon)
- Set those Q3 goals! https://etherpad.mozilla.org/Servo-Q3-2015 (larsberg+jack)
- Proposed TWiS/social media changes https://etherpad.mozilla.org/ibcLSIof6n (larsberg)
- New label for issues about panics (jdm)
- IPC and trait objects (pcwalton)
- Module/peers system? (Simon)
Last week
- Team updates: http://benjamin.smedbergs.us/weekly-updates.fcgi/project/servo
- 30 PRs landed the week of July 5th.
- Big pending update - Servo going multi-process soon due to work by pcwalton!
- We now own @ServoDev (prev. @ServoNightly) (manish)
Attending
- mainishearth, cimes, larsberg, lalehb, jack, jdm, pcwalton, simonsapin, ms2ger
New employee!
- jack: ms2ger is officially a Mozilla employee today!
Surrogates in the DOM
- simonsapin: Now, SM uses UTF16 for JS strings and they can contain surrogates. We (in Servo) use the rust builtin string type, which is UTF8 and cannot contain surrogates. When we encounter one in Rust, we panic and crash the browser. We could either use a different string type or replace them with a replacement character.
- jack: pcwalton and I both commented in the bug that we think crashing is bad here. How should we fix this? pcwalton's warn! with a replacement character seemed good. But we don't know if doing that is web compatible. There's not a good way to know that without doing it and some instrumentation.
- pcwalton: We should at least print it to the console. If you're browsing with Servo, you will have a console open (more than likely) so we should always know if it a site is relying on it.
- jack: Objections to this strategy?
- pcwalton: I believe we came into this because jesse's DOM fuzzers were blowing up.
- simonsapin: jesse said he was hitting this error a lot and my PR was to unblock that.
- pcwalton: panic seems like it blocks people. And fuzzing is valuable for us... I would like to make life as easy for fuzzers as possible.
- jack: ms2ger, objections to this proposal?
- jdm: Maybe pref it? and panic instead?
- pcwalton: Why do this who would turn it on?
- larsberg: I assumed that, like most prefs, the default is to do the web compatible thing and then pref to do non-web standard stuff.
- pcwalton: Why leave a panic in?
- jdm: We don't know what the web compat story is here, just that we're breaking things. If we aren't encountering this in the wild (i.e., just ACID3 and fuzzing), it seems easier to postpone making a firm decision on this by allowing people to control the behavior for ACID3 and fuzzing.
- pcwalton: Seems like advantage of panic vs. warn is you're forced to do something about it. Will it be filing a bug or ragequitting? With warn you get the same ability to do telemetry but it's less obvious that it happened.
- manish: Maybe panic in debug mode?
- ms2ger: Given that no real content has ever triggered this, I'd rather keep the panic rather than have a warning that won't be noticed
- pcwalton: We have to do something long-term other than panic. Otherwise you can just write a site that causes servo to panic.
- jack: What can we do that's more noticable than warn but less than servo?
- simonsapin: Add telemetry.
- jack: Or the itried star.
- pcwalton: I guess I'm nervous about it.
- larsberg: There's panic vs. warn and web compat vs. not. I don't care what we do on panic vs. warn, but get really fidgety when we say we're going to do something that's not web compat. I'm fine removing the panic.
- jack: How is this not web compat?
- larsberg: Presumably, other browsers do something with unpaired surrogates.
- pcwalton: I just don't want to leave in crashes.
- manishearth: Maybe popup alert to submit a bug about it?
- pcwalton: Not saying we should warn, submit to terminal, and forget about it. Should have better handling for warn (UI, telemetry, etc.).
- larsberg: So, do we even know what we're supposed to do in this scenario with unpaired surrogates?
- manishearth: Unspec'd. Most browsers will try to fixup & continue, probably.
- simonsapin: A few years ago it was unclear. Now, the spec says to preserve surrogates. But, it's not clear this is required for web compatibility.
- manishear: I doubt there are web sites relying on this...
- ms2ger: So my hypothesis is that we'll never hit this panic in the real world
- ms2ger: So that would tell us that the behaviour isn't constrained, and browsers can change away from the "unpaired surrogates everywhere" design
- ms2ger: The spec says "use wtf-8", basically
- pcwalton: Yeah, I think most sites do basic sanitization. I just don't want it to be possible for sites to cause a panic.
- ms2ger: I absolutely agree that we shouldn't panic when we ship
- Ms2ger: And I'd really like to have the lossy-conversion behaviour
- pcwalton: I suspect what we'd like to do is not panic, get the spec fixed up with our behavior allowed, having discovered that no websites rely on unpaired surrogates. However, we don't know if that future will come about.
- simonsapin: Let's ship with replacement characters and see if we get bug reports on real sites.
- larsberg: As long jdm & ms2ger are behind it, I'll stop pushing back.
- jdm: The question is - can we get data back on this change from the wild so that we can push back on the spec? If we remove the panic, we'll have trouble providing that data for the spec.
- pcwalton: Then I won't push against having the -Z flag to turn off the panic. I do want to unblock jesse.
- jdm: Pref'ing it makes sense.
- simonsapin: Could do the lossy conversion and still have telemetry.
- jack: Problem is that we want to have this telemetry. Otherwise, we've already lost the data.
- Ms2ger: Once we have telemetry, I'd certainly be willing to rediscuss.
- jack: A pref that turns the panic off is acceptable, unblocks jesse, and shouldn't affect real users. If people start commenting on HN with unpaired surrogates, we'll have to do rediscuss.
- simonsapin: Different codepath if it's ACID3?
- jack: Wildly reported in the press as "benchmark cheating" I believe :-)
- jack: Simonsapin - can you add a -Z flag to do that?
- simonsapin: OK, will look into it.
Q3 goals
- jack: Just a reminder - get the goals/deadlines done soon. I don't know if there's a deadline?
- azita: There was a mail with a deadline.
document.write
- simonsapin: Same surrogate issue as in every other API here in document.write. Other than that, I think that h5e has support for adding things to the beginning of the queue. Just wiring it up in the DOM is all! It doesn't look too hard...
- jdm: Maybe I'll make an E-LessEasy issue around it.
- jack: I'll pick somebody to do it...
- larsberg: I volunteered, if we run out of time.
Social media changes
- larsberg: We have the old servo twitter account now. I propose that we start making more use of it, and we'll put together a little blurb at the start of the meeting notes rather than the weekly/monthly TWiS.
- jack: How much work is TWiS? How automated can it be?
- manish: If you're in the loop, not too much. If you're not, you're digging through several pages of PRs every weeks and adding human descriptions...
- larsberg: I worry that anytime whoever is responsible goes travelling/has an internship we lose the newsletter.
- jack: Automation that generates the report automatically can make a big impact.
Training
- larsberg: Might turn training materials into a series of blog posts. HAve offers to translate them into Japanese too. Will have experts go over them in detail, this time.
- jack: We have a standing slot in the weekly meeting to show stuff off for the CTO's office. Might want to show off 3d transforms.
- azita: Short slot!
- jack: Yep, just to show off things we're working on, like Patrick's demos from last quarter. Also got a suggestion about perf problems demoing over vidyo - record in slow motion. Maybe we could add something that causes Servo animations to run in slow-mo?
New label for panics
- jdm: I made I-panic. From now on, panic means I-panic. Only REAL crashes should be I-crash.
- larsberg: We should be careful to be specific from now on. We should be watching the crash label very closely - we can use this for statistics, and fix them at the architectural level when possible. Panics are important, but they're not unsafe like actual crashes.
IPC and trait objects
- pcwalton: Ported a bunch of stuff to use it. Does it seem OK so far? The basic thing is that everything works over IPC except for sending boxed trait objects. Can send senders and receivers over IPC without problems. Just no boxed trait objects. Also, can't select over both IPC and standard Rust channels at the same time. Those two issues seem pretty fundamental. Also, can't select over multiple IPC channels, but is potentially fixable. Not sure about that on OSX, but it's definitely fixable on Linux. The boxed traits, though, are not fixable anywhere because you just can't send them over IPC without introducing security issues. Do people feel OK with this?
- jack: How many boxed traits were there?
- pcwalton: 3-4.
- manishearth: Traits we own or std ones? If they're ours, we can enum-ify them.
- pcwalton: There's a
Box<Any>(to try to split crates up), but otherwise they're traits we own. Usually, the trait object is wrapping a sender or wrapping an event loop. So, it would allow you to inject messages into SM's event loop from other threads. That won't work cross-process anyway, though, so it's just fundamentally not possible even if you enum-ify them. Generally, I've been wrapping them in newtype structs with the same API wrapping the sender and keeping the API as close as possible to what it was before. The internals often had to change and usually had to spawn a new thread. - jdm: A single IPC thread, as gecko does?
- pcwalton: In most cases, the threads are ad-hoc right now.
- jdm: I mean: can we make it a single thread in the future?
- pcwalton: Yes, it would be nice. Not sure we want to do it all the way as Gecko does. Gecko proxies everything to an IPC thread, which makes it a bit of a bottleneck today and can cause a bunch of extra context switches. However, where you're spawning a bunch of little threads (e.g.,
AsyncResponseTargetstuff), it would be great to avoid those since they're small and frequent. A good rule of thumb might be to avoid ad-hoc thread spawns. If they're not one-off, though (e.g., communication between graphics & layout) then just have a dedicated thread for that. - larsberg: I'm really glad that did this work! How reusable is this outside of Servo?
- pcwalton: The IPC code is a standalone library and has tests, but not sure how many people will use it other than a browser.
- jack: Server-side software stuff, though, like qmail might do it?
- pcwalton: Not as useful for people writing pure Rust, though. We have dangerous C libraries (SM and graphics drivers).
- jdm: The Gecko people have been wanting to replace the IPC library for years...
- pcwalton: I've talked with jeddavis about this. We have a lot of advantages over the current Chromium library - mainly because of the compiler integration. IPDL is a lot of work generating that marshalling code, has to be fit into the project, etc. With Servo's ipcchannel, you just have compiler integration generating the boilerplate and full CSP semantics (since you can send senders and receivers over senders). Would be great. jdm, can you look at this stuff this week?
- jdm: Yup.
- pcwalton: Future work - we don't support shared memory (shmem) yet. But we want both untrusted & trusted, especially for display lists. I think we have a path forward.
Modular peerage
- larsberg: The highest level governance stuff is not moving forward right now. We brought it up with brendan and dherman and they are not in favor of using the traditional module ownership system and are coming up with something else. But is there something more specific than the high-level owner/peer stuff we can talk about?
- simonsapin: Really care about: when is it OK to land something? I was thinking all reviewers can land everything...
- jdm: I'd restrict it when it comes to things that impact web compatibility. If it's exposed to web content, it is preferred for somebody who spends time on DOM stuff to give final approval there.
- larsberg: Do you need lists of area owners?
- simonsapin: Yes.
- larsberg: How about jack and I can make a list and circulate it around?
- jack: I'd just like to note that reverting PRs is a very blunt instrument. Lars and I will work on this; it's been a low-pri discussion over the last 4--5 months.