|
| 1 | +--- |
| 2 | +layout: slides-new.html |
| 3 | +title: Servo @ Open Harmony Summit 2025 Rotterdam |
| 4 | +--- |
| 5 | +<!-- .slide: class="cover" --> |
| 6 | + |
| 7 | +<img src="/img/servo-color-negative-no-container-600.png" style="margin: 2em;" alt="Servo logo" /> |
| 8 | + |
| 9 | +<h4 style="line-height: 1.4"> |
| 10 | + The |
| 11 | + <span style="color: #4fc066;">embeddable</span>, |
| 12 | + <span style="color: #209e9b;">independent</span>, |
| 13 | + <span style="color: #f03278;">memory-safe</span>, |
| 14 | + <span style="color: #f68243;">modular</span>, |
| 15 | + <span style="color: #faae30;">parallel</span> |
| 16 | + web rendering engine |
| 17 | + <br> |
| 18 | +</h4> |
| 19 | +<div style="font-size: 60%; margin-top: 4em;"> |
| 20 | + |
| 21 | +Rakhi Sharma (She/her) <[email protected]> |
| 22 | + |
| 23 | +</div> |
| 24 | +----- |
| 25 | +<!-- .slide: style="text-align: left;" --> |
| 26 | +## About me |
| 27 | + |
| 28 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 29 | + |
| 30 | +* **Open Source Engineer** working on Servo |
| 31 | + |
| 32 | +* **Igalia** Web Platform Team |
| 33 | + |
| 34 | +* **Servo** Technical Steering Committee (TSC) member |
| 35 | + |
| 36 | +* **atbrakhi** on internet |
| 37 | + |
| 38 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 39 | + |
| 40 | +----- |
| 41 | +<!-- .slide: style="text-align: left;" --> |
| 42 | +## Web engine for the future 🔮 |
| 43 | + |
| 44 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 45 | + |
| 46 | +* written in <span style="color: #4fc066;">**Rust**</span>, |
| 47 | +* with <span style="color: #209e9b;">**WebGL**</span> and <span style="color: #209e9b;">**WebGPU**</span> support, |
| 48 | +* and adaptable to <span style="color: #f03278;">**desktop**</span>, <span style="color: #f03278;">**mobile**, **Rpi**</span> |
| 49 | +* and <span style="color: #faae30;">**embedded**</span> applications. |
| 50 | + |
| 51 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 52 | + |
| 53 | +----- |
| 54 | +<!-- .slide: style="text-align: left;" --> |
| 55 | + |
| 56 | +## Journey so far 📈 |
| 57 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 58 | + |
| 59 | +* 2012: Started at Mozilla |
| 60 | +* 2020: Servo Team was laid off. Servo joins LF |
| 61 | +* 2023: Servo restarted at Igalia |
| 62 | +* 2024: Layout, Embedding, Android, Benchmarking |
| 63 | +* 2025: Embedding, Incremental Layout, Devtools, Open Harmony |
| 64 | + |
| 65 | +<div style="font-size: 80%; margin-inline: -3.5em; margin-top: 1.5em;"> |
| 66 | +----- |
| 67 | +<!-- .slide: style="text-align: left;" --> |
| 68 | +## Servo 💚 Rust |
| 69 | + |
| 70 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 71 | + |
| 72 | +Rust and Servo Team at Mozilla Research |
| 73 | + |
| 74 | + |
| 75 | + <iframe src="https://giphy.com/embed/ru7IH0oTmfIK6tRTId" width="480" height="398" style="display: block; margin: auto;" frameBorder="0" class="giphy-embed" allowFullScreen></iframe> |
| 76 | + |
| 77 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 78 | +----- |
| 79 | + |
| 80 | +<!-- .slide: style="text-align: left;" --> |
| 81 | + |
| 82 | +## Contributions over time |
| 83 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 84 | + |
| 85 | +<img src="/img/commits-03-2024.png" alt="Contributors graph from https://github.com/servo/servo/graphs/contributors showing a very slow period from mid-2020 to end of 2023, and a bigger activity in 2023, 2024 & 2025" /> |
| 86 | + |
| 87 | +<div style="font-size: 80%; margin-inline: -3.5em; margin-top: 1.5em;"> |
| 88 | + |
| 89 | +----- |
| 90 | +<!-- .slide: style="text-align: left;" --> |
| 91 | + |
| 92 | +## What are we up to? |
| 93 | + |
| 94 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 95 | + |
| 96 | +* Embedding API |
| 97 | +* Open Harmony Support |
| 98 | +* Servo Devtools |
| 99 | +* Incremental Layout |
| 100 | + |
| 101 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 102 | + |
| 103 | +----- |
| 104 | +<!-- .slide: style="text-align: left;" --> |
| 105 | + |
| 106 | +### Embedding 🔗 |
| 107 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 108 | + |
| 109 | +* Embed Servo in applications |
| 110 | +* Applications can use Servo to render web content |
| 111 | +* Provide good API for embedders |
| 112 | +* Servo on embedded devices (e.g. Raspberry Pi, OpenHarmony) |
| 113 | + |
| 114 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 115 | +----- |
| 116 | + |
| 117 | +<!-- .slide: style="text-align: left;" --> |
| 118 | + |
| 119 | +## Verso: browser using Servo as a web engine! |
| 120 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 121 | + |
| 122 | + |
| 123 | +<a href="https://github.com/versotile-org/verso/"> |
| 124 | + <img src="/img/servo-verso-example.gif" alt="Example of Verso browser based on Servo" /> |
| 125 | +</a> |
| 126 | +</div> |
| 127 | + |
| 128 | +----- |
| 129 | +<!-- .slide: style="text-align: left;" --> |
| 130 | + |
| 131 | +## KDAB QT |
| 132 | + |
| 133 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 134 | + |
| 135 | +<div style="float: left; width: 40%;"> |
| 136 | + |
| 137 | + * Servo inside Qt, using KDAB's CXX-Qt library as bridge |
| 138 | + * CXX-Qt is a safe interop between Rust and Qt |
| 139 | + |
| 140 | +</div> |
| 141 | +<div style="float: right; width: 55%; margin-top: 3%;"> |
| 142 | + <img src="/img/2024-04-16-OSS-NA-KDAB.png" alt="image showing Servo running using KDAB QT" /> |
| 143 | +</div> |
| 144 | + |
| 145 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 146 | + |
| 147 | +----- |
| 148 | +<!-- .slide: style="text-align: left;" --> |
| 149 | + |
| 150 | +## Minibrowser |
| 151 | + |
| 152 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 153 | + |
| 154 | +<img src="/img/2024-02-fosdem-minibrowser.png" alt="image showing Servo minibrowser" /> |
| 155 | + |
| 156 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 157 | + |
| 158 | +----- |
| 159 | + |
| 160 | +## Projects built with Servo |
| 161 | + |
| 162 | +<!-- <div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> --> |
| 163 | + |
| 164 | + <img src="/img/browser-ui-servo.png" alt="image showing projects that are built with Servo components" /> |
| 165 | + |
| 166 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 167 | + |
| 168 | +----- |
| 169 | + |
| 170 | +## With Servo Component |
| 171 | +<!-- <div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> --> |
| 172 | + |
| 173 | + <img src="/img/made-with-servo-component.png" alt="image showing projects that are built with Servo components" /> |
| 174 | + |
| 175 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 176 | + |
| 177 | +----- |
| 178 | + |
| 179 | +## Web Platform tests |
| 180 | +<!-- <div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> --> |
| 181 | + |
| 182 | + <img src="/img/servo-wpt-03-2025.png" alt="image showing wpt test results for servo" /> |
| 183 | + |
| 184 | + There are more than 2 million subtests |
| 185 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 186 | + |
| 187 | +----- |
| 188 | + |
| 189 | +<!-- .slide: style="text-align: left;" --> |
| 190 | + |
| 191 | +## Benchmarking |
| 192 | + |
| 193 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 194 | + |
| 195 | + * Support for tracing and perfetto |
| 196 | + * Support for Speedometer |
| 197 | + * Track binary size with each commit |
| 198 | + |
| 199 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 200 | +----- |
| 201 | + |
| 202 | +<!-- .slide: style="text-align: left;" --> |
| 203 | + |
| 204 | +## Benchmarking |
| 205 | + |
| 206 | +<!-- <div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> --> |
| 207 | + |
| 208 | +<img src="/img/bencher-dev-servo.png" alt="image showing servo on bencher dev" /> |
| 209 | + |
| 210 | +<div style="float: left; width: 30%; margin-inline: 3%;"> |
| 211 | +----- |
| 212 | + |
| 213 | +<!-- .slide: style="text-align: left;" --> |
| 214 | + |
| 215 | +### Open Harmony 📱 |
| 216 | + |
| 217 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 218 | + |
| 219 | +<div class="ffragment" style="float: left; width: 65%; margin-top: 80px;"> |
| 220 | + |
| 221 | +* Servo already running on OH |
| 222 | +* Build Support & documentation for OH |
| 223 | +* Open Harmony on Servo CI |
| 224 | +* Improved new webview API |
| 225 | + |
| 226 | +</div> |
| 227 | + |
| 228 | +<div class="ffragment" style="float: right; width: 30%;"> |
| 229 | + |
| 230 | +<img style="margin-block: 0; height: 14em;" src="/img/servo-openharmony-2024-09.jpg" alt="Screenshot of Servo running on OpenHarmony opening Servo's wikipedia page" /> |
| 231 | + |
| 232 | +</div> |
| 233 | + |
| 234 | +----- |
| 235 | + |
| 236 | +<!-- .slide: style="text-align: left;" --> |
| 237 | + |
| 238 | +### Open Harmony <> Mini-apps <> Goals |
| 239 | + |
| 240 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 241 | + |
| 242 | +* A browser requires support for all web standards for all websites a user might visit. |
| 243 | +* Mini-apps on the other hand have a reduced subset of CSS and html features that need to be supported, and could opt-in on a per-miniapp basis to use servo |
| 244 | +* Servo aims for performance similar to or even better than Chromium |
| 245 | + |
| 246 | +<div style="float: left; width: 30%; margin-inline: 3%;"></div> |
| 247 | + |
| 248 | +----- |
| 249 | +<!-- .slide: style="text-align: left;" --> |
| 250 | + |
| 251 | +### Future: Open Harmony and Mini-apps |
| 252 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 253 | + |
| 254 | +* Improving the Embedding API: Exposing a C-API for servo with OpenHarmony webview as the first major consumer |
| 255 | +* Implement support for Mini-apps: Adding support for Web APIs that are required to support the mini-apps (e.g. Service Workers) |
| 256 | + |
| 257 | +</div> |
| 258 | +<div style="float: left; width: 30%;"> |
| 259 | + |
| 260 | +----- |
| 261 | + |
| 262 | +<!-- .slide: style="text-align: left;" --> |
| 263 | + |
| 264 | +### Future: Layout and Performance |
| 265 | + |
| 266 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 267 | + |
| 268 | +* Incremental layout: improve performance by reducing unnecessary computations and rendering by caching fragment tree layout and incrementally updating the box and fragment tree |
| 269 | +* Parallelism: increase energy efficiency by utilizing multiple smaller cores instead of one big core on smartphones for better performance |
| 270 | + |
| 271 | +</div> |
| 272 | +<div style="float: left; width: 30%;"> |
| 273 | + |
| 274 | +----- |
| 275 | +<!-- .slide: style="text-align: left;" --> |
| 276 | + |
| 277 | +### Future: Debugging, HTML, CSS |
| 278 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 279 | + |
| 280 | +* Servo Devtool Support: Inspecting, Networking, Performance Recording, Javascript debugging |
| 281 | +* Continue development of missing CSS & HTML Feature |
| 282 | + |
| 283 | +</div> |
| 284 | +<div style="float: left; width: 30%;"> |
| 285 | + |
| 286 | +----- |
| 287 | +<!-- .slide: style="text-align: left;" --> |
| 288 | +## Join the project 🤝 |
| 289 | +<div style="width: 50px; height: 10px; background: #488bd1; margin-bottom: 20px;"></div> |
| 290 | + |
| 291 | +* GitHub: <a href="https://github.com/servo"><code>github.com/servo</code></a> |
| 292 | +* Chat: <a href="https://servo.zulipchat.com/"><code>servo.zulipchat.com</code></a> |
| 293 | +* Email: < a href= "mailto:[email protected]">< code> [email protected]</ code></ a> |
| 294 | +* Sponsor: [GitHub](https://github.com/sponsors/servo) & [Open Collective](https://opencollective.com/servo) |
| 295 | + |
| 296 | +<br> |
| 297 | +<br> |
| 298 | + |
| 299 | +> Looking into **growing the community around the project** |
| 300 | +
|
| 301 | +----- |
| 302 | + |
| 303 | +<!-- .slide: class="last" style="text-align: left;" --> |
| 304 | + |
| 305 | +<div style="float: left; font-size: 80%; margin-bottom: 5em;"> |
| 306 | + |
| 307 | +<a href="https://servo.org" style="color: #4fc066;"><code>https://</code><code style="font-weight: 700;">servo.org</code></a> |
| 308 | + |
| 309 | +<a href="https://floss.social/@servo" style="color: #4fc066;"><code>https://floss.social/</code><code style="font-weight: 700;">@servo</code></a> |
| 310 | + |
| 311 | +<a href="https://bsky.app/profile/servo.org" style="color: #4fc066;"><code>https://bsky.app/</code><code style="font-weight: 700;">servo.org</code></a> |
| 312 | + |
| 313 | +</div> |
| 314 | + |
| 315 | +<img src="/img/servo-qr.png" style="width: 20%; margin-left: 3em;" alt="QR code with Servo logo pointing to servo.org website" /> |
| 316 | + |
0 commit comments