-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Roadmap
Manuel Rego edited this page Nov 29, 2024
·
126 revisions
Note
To propose changes to the Roadmap, please leave a comment at servo/project#114 issue.
-
(Re)split the script and layout threads
- Servo currently uses the same thread for script and layout. With a new design, it's possible to run JavaScript (and any other DOM mutations) and layout on different threads without any global blocking.
- People: @xiaochengh
-
Implement Shadow DOM
- One of the most common errors when browsing real world sites/web apps is that attatchShadow is not implemented. This will help close the gap in expected web compatibility when testing Servo against existing web content.
- People: @jdm (will break down tasks, someone would have to work on them)
-
Editability and Interactivity Enhancements
- There are many things that are still missing int he new layout engine in Servo, one of them are some things like editing a text input (you can do it know but there's no caret or anything), editing more complex form fields, being able to interact properly with a form, selection, etc. Some of these things might be too big or complex, but in general it seems worth to improve the current status of affairs in this area to make Servo more usable.
- People: @Igalia
-
CSS Grid Layout support
- CSS Grid is an important modern layout method which Servo should support. Basic support through taffy has been already added, planning to devote more time to WPT test score improvements once that lands.
- People: @nicoburns
- Implement ReadableStream (without SpiderMonkey)
- Improving the Embedding API
-
Improve CI (build/lint/test) times
- CI iterations times affect and slow down everyone working on Servo. This may be particular painful for new contributors who are not used to waiting 1 hour for CI checks, but also affects the productivity of regular contributors.
- Commitment: @nicoburns, @dazabani
-
Onboarding new contributors and maintainers
- Servo currently struggles to maintain the amount of code it owns with the number of contributors/maintainers that it has. It ought to be an explicit priority to onboard new contributors, with an emphasis on onboarding senior contributors with Rust and/or browser development experience where possible. And additionally to uplift (new or existing) contributors to maintainer status where they (collectively) have the ability to independently review/approve/publish code in their area.
- People: @nicoburns (needs support from the rest)
-
Layout performance
- The new layout engine hasn't been optimized in most cases, it'd be useful to investigate performance and check if we can implement optimizations. One key feature that we're missing is usually known as incremental layout, that prevents having to relayout the whole website when there are changes in a particular part of it; this is a very important feature if we want to have a proper comparison with other engines after the initial layout.
- People: @Igalia
-
Implementing the Media Source API
- The Media Source API is used in most major video streaming sites, including YouTube. Right now I believe Servo's video playback is limited to contexts where the entire video file is downloaded at once. I think that getting this working would help expand potential use cases for Servo, particularly for embedders that want to be able to interact with streaming video. It would also make for some nice press (worth noting Ladybird also does not support this API yet) and could help stir up more interest in the project. Not to mention there wouldn't be the ugly grey rectangle when viewing the Servo website anymore!
-
Supported embedding exemplar projects
- We should choose 2-3 use cases for embedding Servo beyond a general purpose browser. Once these are selected, we can build representative examples of these use cases, which will help focus our API design and make Servo a more attractive option for Rust projects that match them. We have to identify use cases.