 So, first there's a quick agenda about what we are going to be talking, a short introduction about myself. Then I will be explaining what's servo and what's not, which is also important. Then I will go over the different servo main features, the status of the project, how things have been going during this year and the plans for the future and just a gurapap at the end. So about myself, I'm Manuel Rego, I work at Igalia in the web platform team. I'm a web engine hacker, I have been working mostly on Blink, Unwackkit, rendering engines, where I'm a reviewer and owner and as part of this work I have been also a member of the CSS working group. And this year I have been the chair of the Servo Technical Steering Committee. I'm not actually doing development work on Servo, but I'm doing kind of helping to move things for wearing some coordination tasks around the project. And yeah, I work at Igalia, Igalia is an open source consultancy founded in 2001 and actually today is our anniversary, we are 22 years old today, just coincidence. We are like 140 people from around the globe, fully remote and we have a special structure, we have a flat structure that was like a cooperative and we are like the top contributors to Chromium Unwackkit after Google and Apple and then in the top contributors to Gecko. And that means that Servo is also something, I mean we were contributing to Servo in the past and now we are like taking over the project maintenance. Apart from this, Igalia also contributes to many open source projects you can see these days talk it here like the kernel, just streamer, MS drivers and many many things. So what's Servo? Servo has this long definition. It's a web rendering engine written in Rust. It has support for WebGL and WebVPU, it's cross platform for desktop and mobile and it can be used for embedded applications. So we are going to go step by step in this definition to understand it better. So what's a web rendering engine like in a very brief explanation and quick is like that thing that takes the HTML, CSS, process that and paints something on the screen. So the web rendering engine of Chromium is Blink. The web rendering engine is Safari's Wackkit in Firefox is Gecko. So Servo is one of Blink, Wackkit and Gecko, one of those. A web rendering engine has like a bunch of faces depending on how you mention them but these are relevant because later during the talk we will be talking about some of these parts so I'm just going to explain it briefly but basically the engine first has this parsing phase where it takes the HTML and parse it and creates the long tree. It also has to parse the CSS and then there is the style phase where it match the CSS state rules with each of the DOM elements and all that. Then there is a layout phase that in theory is very simple because you just need to compute the position and the size of each of the DOM elements so that's not so easy but it's quite tricky at the end and then painting when you actually like each of these elements you can prepare them to be painted on the screen and then you have them on layers so when you do the last phase that is compositing you composite all the final stand that is sent to the GPU and painted on the screen like the different layers so you can do scrolling faster and that kind of thing so you don't need to be repainting the whole thing all the time. So yeah, some of these phases we will see like servo some parts of servo are already used on Firefox in production and some of them cover these phases like parsing is shared between Firefox and servo the style resolution is also shared and some parts of painting and actually the compositing phase is also shared between servo and Firefox. So the other part is the service written in Rust which is kind of a special because the rest of the web rendering engines the popular ones they are all open source these days but they are written in C++ so that's a big difference in this case Rust the programming language has some memory safety features and concurrency features that allows you to create programs with less vulnerabilities and that could be run faster ideally or in theory and be more energy efficient. So it has WebGL support probably you all know about WebGL it's a JavaScript API I mean it has been there for quite a while to render interactive two-dimensionals and three-dimensionals graphics and this is for example servo I mean this slide you see it is using servo to be run so this is like using reveal.js and it's using servo and this is like running live on servo right now these WebGL examples and then there is WebGPU that is kind of like the next step after WebGL that you can do more modern graphics and talk directly to the GPU and have more capabilities and servo also supports WebGPU here is a simple game that is like running on servo again this is behind experimental flag but still it is already working so servo is cross platform it works on linux mac and windows and it also has support on mobile so we just got a prototype running on android it is not like anything final or for really yet but I mean it at least can run and also in the right picture there is a spyphone pro screenshot by Fabriz one of the external contributors to the project that was also, I mean this is a linux phone and it's working also there and then servo can be used for embedded applications so for example in the Rust ecosystem there are a few UI frameworks maybe you know of them the Oksus or Tauri and they allow you to create applications using Web technologies and they need WebView to render them so they are currently using things like Chromium WebView or I mean like Tauri depends on the system and use different things but they are looking into using a Rust rendering engine so we are talking to them and looking into I mean not yet but for the next quarter and the next year we are going to have some prototypes of Tauri using servo and that kind of things and then there are other applications like for example delta chat is a chat message application that is quite focused on security and they are also quite interested I mean they have some web apps WebXDC is the name of these apps they have that they can run in the chat of small games or polls or that kind of things and they want to also give a try to maybe use servo to run those so it's like self-contained and all that so this is delta chat this icon and this is like the icon of this Web XCD or XDC I'm maybe confusing now apps that they are like using to run on style the delta chat so what's not servo right now this is like I mentioned also important so it's not a production really rendering engine it's experimental project it has been experimental for all the time that has positive things because you can experiment on how to develop new web standards and that kind of things and have good results and do things quite easily and faster sometimes but yeah it's not like ready for production and it's also not ng.com browse the general web and that will be like a very huge thing to happen I mean that will need a huge investment and a lot of work and time because I mean like rendering the whole web is like a lot of work but servo can render a control environment if you have some components using some HTML and CSS features that work on servo you can probably create an application that is servo underneath so going over the main features of the project yeah these are like just the names we will go one by one on each of them so let's start servo is embeddable in two sense I mean like in the two meanings of the world or what you can think about embedding so one is that applications can use servo to render web content we are working on providing a good api for embedder like a kind of web view library so others can start using it servo easily but also servo works on embedded devices this kind of constrained low power devices for example the Raspberry Pi we are in the Elinos Foundation Europe booth in downstairs and we have there a Raspberry Pi running servo and you can play with that and see how it performs there and all that so service an independent project it started in Mozilla more than 10 years ago now it was being developed there but in 2020 Mozilla lay off the whole team and then the project was donated to the Elinos Foundation it was kind of quiet for a couple of years not a lot of movement in the project but since January Igalia has started to maintain the project and the project also moved to the Elinos Foundation Europe and now it's not any big corporation it's behind the project or anything like that Elinos Foundation Europe is the one behind the project and there is the technical steering committee that is the one taking all the decisions about how the project should move or not in the committee there are external contributors there are people from Igalia that are also contributing to the project and there are also a bunch of people that used to be in Mozilla and were working in the project in the past and are still involved and contributing every now and then so memory safe of course like you are using Rust Rust has some features like this Borrow Checker and ownership system and it also has like built in safe concurrent data structures that helps you to create programs and eliminate vulnerabilities related to memory like use after free and concurrency like data raises so thank you to the language you are creating a safer applications and service one of those using Rust service modular like I was mentioning before ok let's start in the first point several of the servo modules are quite popular in the Rust ecosystem like if you need to parse an HTML or whatever you probably are going to use the servo parser for HTML because it's there I mean it's a module, you don't need the whole servo and you just use it and many of the servo modules like if you go to the servo githcab there are a lot of repositories and many of them are kind of popular in the servo co-system and also Firefox use some modules like the parser, the CSS parser, the stylo and WebRender are like what are two big pieces the stylo is the style I mean like that styling phase we talked before the one in charge of that which is shared between servo and Firefox is the same code and WebRender is like the compositing phase the last phase that talks directly to the GPU and tries to do also things in parallel as much as possible and again is shared between both projects and parallel, since the beginning servo has been trying to use parallel as much as possible because nowadays devices have multiple cores in both the GPU and the GPU so the more you can use the better and other web engines I mean like the layout phase for example is just in a single core so you cannot do I mean you cannot take advantage of all the cores so yeah like servo tries to use it as much as possible even when there were we will talk more about the layout engine later and there were some issues with trying to use parallel as the maximum but anyway and yeah like thank you to the RASH programming language that's easier and and that helps to to be able to do these kind of things so yeah see if we want to talk about the status of the project now at the beginning of the year we define this roadmap and we are going to go over all of these things to see what's the status but I think I mean from my side I think we have been doing a lot of work and most of them has been like we have been following it quite close so project outreach we have been doing blog posts regularly on the servo blog if you are curious about what's going on the project you can follow the blog and you will get like monthly updates more or less on the project we are even planning to try to do even more there were like weekly updates in the past in Mozilla times no sure maybe that's too much but maybe we can do something else and then we have been attending different events including this one and talking about servo making people know that it's alive again that some people thought it was like kind of that project at this point so yeah we have plans to be in a bunch of places even next week someone from the servo team will be in China doing this goxing thing ok the other task we have was about ok I skip it one by mistake so project reactivation is what was on the goals and this is like the github stats and you see here clearly the gap that was like mid 2020 when they were out of the project until like almost yeah end of last year whatever and then we started working yeah still starting to go up because like the first part that was kind of bringing a lot of things back to life so it was like quite a lot of work on fixing many things but anyway like the number of comics is already three times the ones that on the whole last year and we still have the last quarter also like committers like external contributors I mean a lot of people are coming back to the project and doing some things and apart from reactivating the technical part of the project we are also reactivating the governance part like Cervo has this TCC the technical steering committee and they were meeting not very regularly I mean like in 2022 I think it was just one meeting and we are now doing them like monthly basis more or less skipping in the summer in north Europe but anyway and yeah we are reactivating also that part of the project that was already displaying so on the dependencies upgrade like Cervo has all these modules web render is used by Firefox so Firefox has been doing changes on web render during these 2 years or 3 years that Cervo was not having a lot of update we have just recently upgraded it to meet 2021 because there are some missing features that got implementing Cervo before keeping upgrading it style again is also used by Firefox every time Firefox implements any CSS property they have to also update the style rules and all that so we are getting the patches from Firefox from Mozilla back to Cervo and we are planning to sing this in the future I mean like more kind of automatically and they are totally fine Mozilla with this also and yeah we are like half of the upgrade right now we are landing them in batches and then spider monkey this slide until today said that has not been upgraded yet but actually last night there were the the patch landed and is now upgraded to the last table release from June or whatever so I mean like it has been just recently upgraded it was not available but anyway that and this was actually done by a external contributor so that's I mean external contributors are providing quite a lot of things also to the project and then one of the topics that we have on the plan for this year was the layout engine selection this is a bit complex thing but anyway like Cervo had original one layout engine that phase we were talking before the one on the middle that we now are calling legacy layout if you see like blog post or anything about Cervo and they were having problems to implement some parts of CSS they were I mean this layout engine was trying to use parallel as much as possible and they have like a very strict rules about how faces how you will transverse the tree and all that to ensure this but they were having issues like to full implement flaws and things like that that are like kind of basic CSS features but still I mean they had a lot of complexity so they started a new layout engine in 2020 but then there were the layoffs so that was like just after they started to work on that they were like kind of stopping this is not strange they were restarting this work because this new layout engine is like kind of following trying to be closer to the specs following some basic things on CSS from the beginning not like the other one that was more a special design now is like trying to be as close to the specs as possible and this is the same trend that is happening in other engines I don't know but Blink has has a new layout engine now that is called LayoutNG and that was like working for the last 8 or years or so I don't remember but from the Google folks to like rewrite the whole thing because the old ones were like getting a lot of problems and then it was like more aligned with the specs and easier to add new things and fix some bugs that have been there for a while Workkit has also a project called Formatting Contents that is also rewriting the layout engine and Gecko doesn't have anything I know but I mean Gecko has served in the past trying to do the same so in a sense this is not like a surprise as part of this work we have a report that is on the wiki on github you can check if you want to know details about this and the proposal on the report was to move with the new engine it looks like a better design and that was agreed with the TCC and we started to work on that so the next step was like doing progress we selected a bunch of I mean there is this web platform test repository that has a lot of tests a million of sub-tests that all the web engines use and share and there we selected like 6, 7 folders like ok we want to focus to do progress on these folders during this year to ensure we have some basic CSS2 support working on servo and here is a graph that you can see where we started in April like around 60% of pass rate there and we are in 80% now after 6 months I mean the old layout engine the one called here live as a layout is in 83, 84 so we are getting close and we hope by the end of the year we can be surprising it so some particular things like flows for example we have been doing work on that on the I think for a quarter or so and we have moved from 20% to almost 80% and the nice thing here is that like flows was a very tricky feature so we wanted to I mean to verify that we are selecting the right engine we want to do the tricky features if we manage to do it that means we are in the right path and actually we are like better than the old engine was ever to support flows was able to support for flows ever and there were some bugs that were open for quite a while in the old engine trying to be solved in different approaches related to flows and those could be fixed with the new approach and the new design so that's good news and that means we hopefully can do carry on with the new engine in the future so just to see a little bit the progress as it does are not like a great tool to compare things I think WPT is better if you are curious about servos you can go to www.servo.org and check these graphs and also how the pass rate is for the whole CSS and whole WPT test suite but anyway these are like very visual so the asset test one this is about flow so in January was very broken now it's way better and the asset test two this has many other features so something has improved but still we are not there but anyway it's not like the goal is to fix this anytime soon but I mean they are some nice way to see some there has been some progress and all that so another task we had in the plan was to explore the Android support as I mentioned we have been like we can now build servo for Android 32 bits and 64 and we have an experimental prototype running in Android here is on the left, on the right, on the right and emulator so I mean this is still not complete this still requires more work but we are in the path because yeah we all want that I mean like if you do an application it's in servo it can work on the desktop but also we ideally want it also can work on mobile and yeah the last thing that was for Q4 and we actually haven't done a lot of work here it's like this embeddable web engine experiment we have done some part like getting some servo running on the Raspberry Pi of this pain foam pro foam but we haven't done a lot of progress on this we have been discussing for quite a while the embedding API design we discussed that in the web engine Hackfest in June and then in some TCC calls but there is more work here coming soon we have plans to work on the last quarter and next year on this topic and there are many other things have been happening like we have made it easy to contribute to servo we have reduced like the build time reduced the CI times simplified a lot of the build so now it's way easier to build than it was like at the beginning of the year we also have a mini browser now like when you download and run servo even it's just to play with it you will get a url bar and a go bar on this is what I'm using here you can see here I mean it's quite a small but anyway it can work like if you want to test something we have brought WebGPU support back to live because it was like not upgraded for also for quite a while that was done by external contributor and now it's still we are landing more things and fixing more things there and we have this demo page with some experiments like you can visit and all of them work with servo so you can take a look and see what kind of things servo can do ok and about plans for the future this embedding API we think is very important for the project because we want to start getting some applications to start using servo so we need to provide this the design has been agreed like I mentioned we have plans to start working on this in the starting like in a couple of weeks and the goal will be to have some kind of prototype or experimental application is in this new API and not sure if that will happen this year or early next year but that's the goal this API ideally could be used in both desktop and android mobile and that kind of things yeah, another thing we want to keep doing is of course more CSS improvements I mean servo is still lack a lot of features and the new engine still lacks more features compared to the old one so we want to keep doing work here so like complete work with flow in line layout where we have been doing also progress and then some other features like line hide vertical line tables writing modes I mean there are CSS is huge there are many things but we want to we want to we want to also discuss in the next months with the TCC what kind of things are more priority and which areas we should focus the work for next year also when people start to do some applications with servo that will let us know what are the main missing pieces where we should focus efforts then like I mentioned we have explored with the android support but we want to complete it next year and we have I mean like this first experiment but we want to have a proper android support and allowing android applications to use servo as we view if they want at some point and of course many other things I mean like servo is a huge project you can do lots of things there there are a lot of things to do so any contributor is welcome I mean like there are lots of things we want to carry on doing this maintenance of the project this outreach so people know the project people know that it's alive if things are happening and yeah and we want to experiment with servo more platform or boards like yeah and yeah many other things so anyone is welcome to participate in the project and the community so just to to wrap up this talk servo in my opinion is looking great I mean it has there are new activities has been a success we have been doing a lot of progress in many different areas in 2023 I mean like when you see the whole picture of all things that have happened that's quite nice and quite amazing the new layout then seems to be in the right path so we are happy that we managed to do like the floods work and also show that it was better than the old one so that means we are probably in the right path to make easier to add new features because like it follows the specs closer you can just go to the spec and try to implement that directly following what the specs said and the concepts are the same and all that so that's a bit simpler and that will ensure very interpretability also in the future and then yeah service is still experimental is a huge project and there are lots of things to do so it's not like you can get it in a couple of months and try to use it for your daily browser or anything like that like servo main use cases or potential use cases at this point it's like these embedded applications that want to use web technologies so if you have like a kiosk mode digital sign up application and you need to use WebGL, WebGPU or maybe some CSS staff that servo supports you can just maybe take servo and give it a try maybe you are using crash for the rest of your things so you prefer to use servo smaller than other engines and you just it's good enough for your use case and you just go with it and then this REST UI framework like taurian the oxys are probably looking to use like a REST web engine instead of c++1 so yeah this is like the main use cases we have at this point for servo and hopefully we will have some of this happening early next year some examples of people can see ok servo can be useful for this particular thing or this other and yeah like I mentioned everyone is welcome we want to welcome I mean like any contributor any organization, any company that is interested in the project feel free to contact us servo has been always developing the open on github there is a public chat that anyone can join on solip chat and yeah like I mean just contact us if you have any question or any comment about the project and we will be happy to help and we are looking to growing a big community again this project had a big community in the past it was kind of a stop, we are hoping to to see this keep growing in the future and yeah that's that's all that I have today it was like an update on the project the plans, all that of course if you have any question we still have some time for questions so yeah let me know if not, yeah like I mentioned we are in the booth downstairs if you want to go there and play with servo ask some questions also, it's fine I have some stickers also here if you want any about servo and that's all questions or comments or anything yeah ok so the question just for the audience in YouTube is that what's the goal of the of the project if it's like to build a fully featured browser or it's just to move pieces into Firefox so I mean like the goal, short and goal is not like building a fully featured browser because that will need a lot of years and a lot of people working on a project like if like the sizes of the teams working on Blink or Workkit or Gecko they are like huge teams with lots of people so that's like a very big investment if that happens that will be amazing and great but it's kind of unlikely that happens anytime soon and about moving pieces into Firefox, some of them are already used by Firefox, I don't know if there are other modules that Firefox can consider use or not at some point but the main piece that is missing to move to Firefox is this layout engine and that's like I mean like the thing that is still missing a lot of features so I don't think that's going to happen anytime soon so like the goal so far is like bringing back to life the project and then yeah like start using it for some small use cases, some small applications start to see that the project can be useful for some cases maybe it can be like the basis of some of some of these applications I mean like tower or whatever to create their apps like they have some if you use these components that work properly on server you can create your applications and have like a smaller binary size whatever and that's like the goal for the next years but yeah like the future we will see how things go and how this grows or not no more questions ok thank you everyone