Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap/Priorities 2025 #109

Closed
mrego opened this issue Oct 30, 2024 · 13 comments
Closed

Roadmap/Priorities 2025 #109

mrego opened this issue Oct 30, 2024 · 13 comments
Labels
T-technical-direction Relevant to technical direction choices for the project

Comments

@mrego
Copy link
Member

mrego commented Oct 30, 2024

This is an issue to get suggestions to update the Servo roadmap and identify the main priorities for the project in the coming months. Please share your ideas and then we could review and decide the final list in order to update the roadmap page on the Servo wiki.

There might be many different angles and people can have different priorities. One important aspect to decide what we can work on is to clarify what people commit to work on, as it doesn't make sense if we pick topics/ideas that nobody is going to be working on.

We could try to organize things per areas, though it might be a bit tricky as we could think in many different options: WPT pass-rate, popular websites, popular frameworks, missing HTML&CSS features, performance, embedding API, binary size, modularity, tooling, etc.

So initially let's collect ideas here, and after a couple of weeks we can try to identify the main ones, select a few and update our roadmap for 2025.

Proposals format:

  • Topic: XXX
  • Area: (if you can identify it somehow)
  • Description: (1-2 sentences description if needed)
  • Commitment: (if you have plans to work on that in the coming months)
@mrego mrego added the T-technical-direction Relevant to technical direction choices for the project label Oct 30, 2024
@msub2
Copy link

msub2 commented Oct 31, 2024

Topic: Improving the Embedding API

Area: Embedding

Description: There's already been some renewed talk about it in Zulip, but in general making the process of actually embedding Servo clearer and more well documented could be helpful in getting more people interested in using Servo.

Commitment: I started working on my own (currently) toy browser Moto recently and already have identified some areas that could be improved for the embedder (download and autocomplete support to name a couple), which I'd be happy to keep exploring.

@msub2
Copy link

msub2 commented Oct 31, 2024

Topic: Implementing the Media Source API

Area: DOM/Media

Description: 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!

Commitment: I do have a personal interest in seeing this come to fruition, but given the complexity of the API and my lack of experience with GStreamer I don't know if I'd be up to the task on my own without serious time investment.

@mrego
Copy link
Member Author

mrego commented Oct 31, 2024

  • Topic: Layout performance
  • Area: Performance
  • Description: 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.
  • Commitment: Igalia has plans to work on this feature in 2025.

@jdm
Copy link
Member

jdm commented Nov 1, 2024

  • Topic: Supported embedding exemplar projects
  • Area: Embedding
  • Description: 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.
  • Commitment: I would be interested in building the examples once we have identified we the use cases.

@mrego
Copy link
Member Author

mrego commented Nov 12, 2024

  • Topic: Interactivity
  • Area: Layout
  • Description: 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.
  • Commitment: Igalia is interested on working on this feature in 2025, but we don't know yet if we'll have availability to do this kind of work.

@jdm
Copy link
Member

jdm commented Nov 14, 2024

  • Topic: Implement Shadow DOM
  • Area: DOM/Layout
  • Description: 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.
  • Commitment: I would like to break down the work into tasks that can be implemented by other people.

@nicoburns
Copy link

  • Topic: Improve CI (build/lint/test) times
  • Area: Infrastructure
  • Description: 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: I am able to work on some of these tasks which can be done purely in the repository, but others which require access to things like Github settings or build infrastructure would require someone with access to those things to work on them.

See also: https://servo.zulipchat.com/#narrow/channel/263398-general/topic/CI.20performance

@nicoburns
Copy link

  • Topic: Onboarding new contributors and maintainers
  • Area: Governance / Outreach
  • Description: Servo currently struggles to maintain the amount of code it owns with the number of contributors/maintainers that it has. I therefore think 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.
  • Commitment: I am willing to work on this. I could make posts for the Servo blog, Reddit, etc advertising that Servo is actively seeking contributors. However, it is important that any new arrivals have a good experience: questions are answered, their contribution is actively encouraged and supported, their code is reviewed in a timely manner, etc. And I feel like this will require a wider commitment from existing Servo community members.

@nicoburns
Copy link

  • Topic: CSS Grid support
  • Area: Layout
  • Description: CSS Grid is an important modern layout method which Servo should support.
  • Commitment: I already have an active PR open for basic support. I intend to commit more time to WPT test score improvements once that lands.

@nicoburns
Copy link

Topic: Layout performance
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.

I would add that for Flexbox/CSS Grid this is important for performance even within a single frame, as these algorithms are exponential with respect to the depth of the tree. I believe Servo has some basic caching support now. But it should be tested as layout can easily end 100x or 1000x too slow if it isn't working properly.

Topic: Interactivity
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

I definitely agree that text inputs in particular are one of the most conspicuous weaknesses of Servo atm (if I try to use it for "real world" browsing tasks such as performing a search (google, wikipedia, etc) or using Reddit / Hacker News). I think we ought to consider using a 3rd-party library such as parley for text input. They have a lot of the hard bits (selection, and soon IME) figured out, and it would allow Servo to share code with the wider Rust ecosystem going forwards.

@mrego
Copy link
Member Author

mrego commented Nov 20, 2024

Trying to join all the proposals in a single doc for discussion, I've created the next one that people can edit or add comments to: https://hackmd.io/@rego/servo-roadmap-discussion/edit

@xiaochengh
Copy link

Topic: (Re)split the script and layout threads
Area: Architecture
Description: 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.
Commitment: I will investigate the possibility of integrating this idea into Servo. I'll probably start with a branch first and then see if it can / how to merge it into the main branch.

@mrego mrego changed the title Roadmap/Priorities Roadmap/Priorities 2025 Nov 26, 2024
@mrego
Copy link
Member Author

mrego commented Nov 26, 2024

After the discussion the Roadmap has been updated at: https://github.com/servo/servo/wiki/Roadmap

We have left a couple of tasks identified as things for the future as we didn't have people available to work on them.

I'll close this issue but for future updates of the roadmap people can use #114

@mrego mrego closed this as completed Nov 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T-technical-direction Relevant to technical direction choices for the project
Projects
None yet
Development

No branches or pull requests

5 participants