[HN Gopher] Servo, the parallel browser engine written in Rust
       ___________________________________________________________________
        
       Servo, the parallel browser engine written in Rust
        
       Author : manx
       Score  : 302 points
       Date   : 2023-05-27 07:50 UTC (15 hours ago)
        
 (HTM) web link (servo.org)
 (TXT) w3m dump (servo.org)
        
       | smarkov wrote:
       | Without downplaying all the effort being put into this, I think
       | we're just digging a deeper hole.
       | 
       | Websites do more or less the same thing they did 15 years ago but
       | they are now 20 times more complex to develop and maintain. A
       | good amount of developers would rather donate a kidney than write
       | CSS. Accessibility is a hack. Performance is getting worse
       | despite us having better than ever hardware. We're spending large
       | amounts of time reinventing the wheel. JS is a horrible, bare
       | bones language which is why you can't get anything done without
       | 100 packages.
       | 
       | It's time to move away from HTML/CSS/JS. They worked great for as
       | long as they did but instead of further contributing to the mess
       | that they've become, we should be looking into alternatives.
        
         | franklampard wrote:
         | > A good amount of developers would rather donate a kidney than
         | write CSS. Accessibility is a hack.
         | 
         | Name one :)
        
           | satvikpendem wrote:
           | People who write Flutter, for one, including me to some
           | extent.
        
           | ohgodplsno wrote:
           | Depends. What browsers do I have to support ? The amount of
           | kidneys I donate is directly proportional to how much I have
           | to target IE6, at which point I donate both and would rather
           | die.
        
         | stjohnswarts wrote:
         | HTML/CSS are fine, as is javascript, but yeah I don't
         | understand why web pages get bigger and bigger and bigger and
         | slower. Just because we have more bandwidth, I don't know why
         | we have to chew through with ever more complicated webpages. I
         | get stuff like slack or gmail, but showing a company webpage?
         | Why does that take 10 seconds to download and render?
        
           | Tagbert wrote:
           | Ads and all of the frameworks that each ad network include.
        
           | LeFantome wrote:
           | Because users want that? As a result, sites that deliver that
           | deliver more value to their owners than sites that don't?
           | 
           | I do not subscribe to the view that it is all just
           | collectively worse because we are cooperatively moving things
           | away from our preferences.
           | 
           | I use ancient hardware. I wish the web was much lighter. That
           | said, I do not see the fact that it ( and everything in
           | computing ) keep becomes more and more resource intensive as
           | evidence if some kind of incompetence or collective failure.
           | 
           | It just means I represent too little demand to dictate the
           | supply.
        
         | forgotmypw17 wrote:
         | The beauty of the Web stack is that all of what you are
         | describing is optional.
         | 
         | You can write simple, accessible, performant websites, which
         | use JS as a bonus and have all the basic features without. And
         | as a bonus, it works across all the browsers, not just
         | Chrome/Firefox. As a bonus, it works for all the accessibility
         | scenarios, not just the standard ones in the test suites. And
         | as a huge bonus, it's much easier to maintain and less fragile.
         | 
         | I'm personally on the extreme end, what with trying to support
         | not just today's browsers but also the retro mainstream such as
         | Netscape and IE, but you don't have to go that far to have an
         | enjoyable experience with this platform.
        
           | lapinot wrote:
           | > The beauty of the Web stack is that all of what you are
           | describing is optional.
           | 
           | The problem is not that you cannot write lightweight
           | accessible and beautiful websites, you can. The problem is
           | that this is now all part of the "default web browser" and so
           | many people are taking advantage of its widespread
           | availability to use it without a good reason to. Most
           | commonly fingerprinting, tracking, following corporate dev
           | fads, etc. And because of that it is now borderline
           | impossible to have a decent experience using a lightweight
           | browser because so many websites make crucial use of stuff
           | they should really not. It's possible but it takes time and
           | know-how, personally i don't find it fun enough to invest
           | more time than crafting my ublock whitelists. And this is
           | already more than most people (even people that would be able
           | to do it).
        
             | forgotmypw17 wrote:
             | I don't have a strategy for fixing the entire ecosystem,
             | but for my little corner of the world, I guess I've
             | constructed a mental venn diagram where I only browse at
             | the overlap of "content I'm interested in" and "sites which
             | are accessible to me", and leave the rest of it alone.
             | There is more than enough for me to browse in that space,
             | especially combined with my own websites, that I rarely
             | even think about the horrors you mention.
             | 
             | One of the coolest things about it is that I have noticed
             | over time that obnoxious frontend correlates very strongly
             | with crappy content, so the average quality of what I read
             | and watch has improved drastically. I try to practice a
             | "mental diet", and it has helped tremendously with that.
             | 
             | In some ways, it's not unlike IRL, where there are places I
             | would rather not be, and they have certain tells, and I'm
             | OK with them being there, I just don't go inside if I can
             | help it, and I leave as quickly as possible if I do.
             | 
             | I think the Web is still very young, and now that we have
             | can have ML-assisted markup generation, accessibility will
             | be coming around, just like wheelchair ramps became the
             | norm. Pretty soon, we won't be dismissing a 0.01% browser
             | as not worth supporting, because it will be so much easier
             | to just tell the server, "please remove JS and all but the
             | minimal markup from your pages".
             | 
             | If you want to see a PoC of what this may look like, here
             | is a quick demo video. The NoJS bit is at about 2:30.
             | https://vimeo.com/828698165
        
         | capableweb wrote:
         | > Without downplaying all the effort being put into this
         | 
         | > Websites do more or less the same thing they did 15 years ago
         | 
         | That is a huge downplay if anything :) Websites certainly does
         | the same they always done, the difference nowadays is that
         | there are web apps too, interactive applications, which existed
         | 15 years ago sure, but they didn't have the same scale as
         | today.
         | 
         | But, most web apps today should just be websites, but there are
         | some use cases for web apps too, although they are few.
         | 
         | Once you start to understand there is a difference between
         | websites and web apps, things start to make sense. There is
         | still a huge misuse of making things into web apps, but at
         | least you start to understand why the ecosystem moves in a
         | direction you seemingly don't grasp.
         | 
         | > It's time to move away from HTML/CSS/JS. They worked great
         | for as long as they did but instead of further contributing to
         | the mess that they've become, we should be looking into
         | alternatives.
         | 
         | There is huge efforts into this already, which you also seem to
         | have missed. The whole WASM effort is about being able to write
         | code for browsers in any language you want, and it's already
         | usable today. It's missing some vital things like DOM
         | manipulation to be 100x more useful, but again, still useful
         | today. Lots of games are written in Rust and deployed as WASM
         | for example, runnable in the browser.
        
         | kome wrote:
         | we should go back to hand written html and css, and php when
         | needed. i'm not even ironic.
        
         | twobitshifter wrote:
         | Websites do the same thing as 15 years ago? Not true, websites
         | can now exceed desktop apps. Was their figma 15 years ago?
         | 
         | 20 times more complex - this comes with doing more. 15 years
         | ago there was no CI/CD.
         | 
         | Write CSS - don't have to given Sass, components, and
         | bootstrap.
         | 
         | Performance is worse - look at v8 benchmarks, look at webgl and
         | Wasm. The browser itself can run much faster today, and people
         | are doing more with it.
         | 
         | JS barebones - just one package. https://github.com/stdlib-
         | js/stdlib. - and the node ecosystem is a feature not a bug.
         | 
         | Look elsewhere - every other UI framework we've tried before
         | has been worse in terms of compatibility, functionality,
         | flexibility, and available prebuilt tooling.
        
           | lapinot wrote:
           | Nothing you say is wrong per se. But what GP is saying i
           | believe is that most website _should not need_ these features
           | to provide value to users. And indeed most website useful to
           | me are still mildly interactive documents. The problem is
           | that web browsers, standards, ecosystems inflated to cater
           | these few webapps needing advanced control over the machine.
           | In a sense web is just the new java: a new environment said
           | to be  "cross-plateform" where it is in fact just a new
           | plateform that got its vm ubiquitous.
           | 
           | The web-as-vm has nothing wrong, but it has eaten the web-as-
           | interactive-documents. And now to have a lightweight web
           | experience not focused on webapps i am stuck with the
           | heavyweight runtimes with _even more stuff on top_ just to
           | disable features, lock down invasive websites that grabbed
           | the newly available features to implement invasive anti-
           | features, etc.
        
           | speed_spread wrote:
           | In the late 90's we had native apps with UIs more complex
           | than Figma that ran fine with 1/100 the CPU, RAM and storage
           | we have now. The online rush buried a whole class of
           | development tools that has to be painfully reinvented over
           | the next 20 years and are still bogged down by the incidental
           | complexity of using the web as an application platform.
        
             | ptx wrote:
             | One example of this, I think, is that modern UIs are
             | seemingly no longer able to display large lists. The native
             | win32 API had virtualized list views 27 years ago, since
             | Windows 95 OSR2 [1][2].
             | 
             | [1] https://learn.microsoft.com/en-
             | us/windows/win32/controls/lis...
             | 
             | [2] https://www.geoffchappell.com/studies/windows/shell/com
             | ctl32...
        
             | aranchelk wrote:
             | IIRC they were: * Often Windows-only. * Infrequently
             | updated, with bugs bad enough to crash the app, sometimes
             | the system * Dependent on the user to install new versions
             | * Able to access everything on your computer * Non-
             | collaborative * Dependent on you for data backups
             | 
             | These are non-trivial things.
             | 
             | Now that I'm thinking about it, I still don't have
             | convenient sandboxing of desktop apps.
        
               | speed_spread wrote:
               | We have online package managers, garbage collected
               | languages, containers, unit testing, memory protection,
               | remote backups, cross platform UI toolkits - None of the
               | issues you mention required having to serve everything
               | through a browser window set in motion by a subpar
               | language written over a weekend with cosmetic
               | considerations as first design principle.
               | 
               | BTW you can have easy app sandboxing today using flatpak,
               | works like a charm on Fedora.
        
               | ptx wrote:
               | Is the Flatpak sandboxing actually secure, though? Or
               | does it work like a charm because most of the security
               | enforcement is disabled in practice?
               | 
               | Allegedly [1] a lot of popular packages use "--
               | filesystem=host", which completely defeats the security
               | of sandbox by granting access to the user's home
               | directory (i.e, allows arbitrary code execution through
               | modification of configuration files).
               | 
               | I think I would rather trust the browser's sandbox, where
               | sandboxing has been in place from the start and
               | applications are designed for it.
               | 
               | [1] https://flatkill.org/2020/
        
         | satvikpendem wrote:
         | Indeed, this is one reason why Ian Hickson (who helped create
         | the HTML5 spec) is advocating for moving towards an application
         | platform based on WASM instead. He has some good comments on
         | this thread.
         | 
         | https://news.ycombinator.com/item?id=34612696
        
         | jupp0r wrote:
         | It always boggles my mind how people on HN keep claiming that
         | websites are slow because of JS when every 10th headline is
         | about raytracing in WebGPU at 60fps or running LLM inference
         | locally in the browser or similar.
         | 
         | Let me open your mind up to the possibility that no language
         | can prevent unperformant applications being written in it and
         | that the vast majority of web apps don't treat performance as
         | their primary concern as long as it's good enough for their
         | particular definition of "good enough".
         | 
         | If you are so motivated, creating high performant web apps is
         | easy. The tooling to make improvements is among the best for
         | all programming languages.
        
         | zelphirkalt wrote:
         | While I agree with websites being 20 times more complex, I
         | don't agree with:
         | 
         | > A good amount of developers would rather donate a kidney than
         | write CSS.
         | 
         | If I was doing web development, I would most definitely use
         | modern CSS to make responsive websites. I would prefer it and
         | use it in almost all cases over using JS.
         | 
         | > Accessibility is a hack.
         | 
         | If one uses HTML semantically, and does not resort to hacks, it
         | actually offers a lot of accessibility. More than most "modern"
         | JS-only websites.
         | 
         | > Performance is getting worse despite us having better than
         | ever hardware. We're spending large amounts of time reinventing
         | the wheel. JS is a horrible, bare bones language which is why
         | you can't get anything done without 100 packages.
         | 
         | Yes. Most of that performance loss is due to JS bloat (need to
         | download that framework first), ads, and unwanted tracking.
         | 
         | JS itself has actually improved, at least the APIs for events,
         | DOM access, AJAX, and probably more. What has not improved is
         | the mindset and development practices of developers and
         | companies. Probably 90% of the websites using big frameworks
         | would not need any of it and could live on server side rendered
         | templates like we had more than a decade ago already. Sprinkle
         | in some interactive components only on pages that need them and
         | most of a website's pages would not be affected by that at all.
         | Done.
         | 
         | Sometimes we should take a step back and really ask ourselves
         | what kind of website we are building. What is the character of
         | that website? Is it merely a website that shows some
         | information about a company? It can probably live on server
         | side rendered templates. A blog? Same. Not every website needs
         | to be a "web app". Most of them actually do not.
         | 
         | > It's time to move away from HTML/CSS/JS. They worked great
         | for as long as they did but instead of further contributing to
         | the mess that they've become, we should be looking into
         | alternatives.
         | 
         | I don't agree. It is time to embrace standard and good usage of
         | HTML and CSS and eschew heavy JS frameworks and JS on the
         | server as much as possible. I would not put HTML/CSS and JS
         | into one basket here to throw out things. HTML and CSS have
         | made great progress. JS too, but as I said, the mindset and
         | practices of the ecosystem and people are not there.
        
           | HollowEyes wrote:
           | Agree a load of old crap that could have been achieved in the
           | most part with a better implementation of html frames. Sames
           | sucky problems like publishing barriers, Devs holding sites
           | to ransom. Etc. Etc.
           | 
           | A good open source app for a shop, a church, a school would
           | be a better focus of a million monkeys on MacBooks.
        
         | SanderNL wrote:
         | I actually think you have a point. Sure, it's missing nuance
         | and there are certainly things 2000s tech will not do properly,
         | but to be honest I'm not quite hundred percent sure what the
         | past two decades brought other than funky frameworks and
         | libraries. Useful, but funky. I know for example CSS animations
         | and layout possibilities are off the charts nowadays but they
         | do not strike me as fundamental improvements although the QoL
         | is certainly appreciated.
         | 
         | What happened last two decades is browsers getting their act
         | together though, that made a huge difference.
         | 
         | I'm a webdev. I work with React and Angular. Again, missing
         | nuance but I'm not completely sure we are on the right track at
         | all. Not sure what we should do.
         | 
         | I made a comparison between crystal meth and wordpress before.
         | I'm not sure getting us all on the web (crystal meth) train is
         | the way to go. Sure it's standard and lots of people like it.
         | It's cheap.. but yeah. The alternative might be painful (aka
         | not do it).
        
         | FpUser wrote:
         | >"JS is a horrible, bare bones language which is why you can't
         | get anything done without 100 packages."
         | 
         | BS. I use JS for front ends without any frameworks Just some of
         | domain specific libs. Works fine and I "get the shit done".
         | Sure I prefer compiled type languages like C++ but code in
         | anything if it makes the the project completed faster given
         | whatever constraints.
        
         | dathinab wrote:
         | > Websites do more or less the same thing they did 15 years ago
         | 
         | no not at all
         | 
         | and the browser internally diverge far far more then that in
         | their handling of things
        
         | marcosdumay wrote:
         | What do you mean? HTML is just a hierarchical document format,
         | and CSS is just a logical document styling language. Those two
         | are about as simple as they can be.
         | 
         | Accessibility is a very hard and complex thing where half of
         | its outspoken "promoters" fight against every gain because they
         | have money invested on the status-quo. That's why it doesn't
         | improve fast.
         | 
         | Most developers avoid CSS exactly like most developers avoid
         | SQL, to avoid logical programing. That doesn't mean that
         | logical programing isn't the best known paradigms for data
         | querying and document styling, it just means that most
         | developers are bad and will avoid learning something as hard as
         | they can. Honestly, I have no idea how to fix this, but
         | conceding our tools to the preferences of the worst of us isn't
         | going to lead to anything good.
         | 
         | JS indeed can be improved. But guess what, many people are
         | working hard to replace it.
        
           | kitkat_new wrote:
           | > Most developers avoid CSS exactly like most developers
           | avoid SQL, to avoid logical programing.
           | 
           | I avoid CSS and don't avoid SQL nearly as much, because the
           | latter is logical, simple and easy to learn.
        
         | LeFantome wrote:
         | It has been educational to watch the SerenityOS / Ladybird team
         | implement browser features. As they make real websites work,
         | you can see how the technologies for even simple brochure sites
         | have changed. For example, logos may be SVG instead of simple
         | images which makes sense given the range of screen sizes and
         | resolutions that need to be supported.
         | 
         | You can also see that CSS continues to grow but in pragmatic
         | ways that actually reduce the amount of JavaScript to do the
         | kinds of things that users expect these days.
         | 
         | On the performance and capability front front, WASM is a game
         | changer.
         | 
         | Regardless of what JS framework is in vogue, I do not think it
         | is fair to say that we are doing the same thing on the web as
         | we always have or even to say that the base technologies are
         | getting more complex for no reason. At least, it is no more
         | fair than any other programming domain. I mean, we can look at
         | Excel and VisiCalc and say that we are creating the same apps
         | that we always have with more complexity and bloat. I mean,
         | people do say that but there is an awful lot left out of that
         | analysis. Even more so if I compare VisiCalc and Excel via
         | Office365 in a browser.
         | 
         | Regular people are routinely accomplishing far more with their
         | computers than they have in the past. More and more of that is
         | being done in web browsers.
        
           | smarkov wrote:
           | > Regardless of what JS framework is in vogue, I do not think
           | it is fair to say that we are doing the same thing on the web
           | as we always have or even to say that the base technologies
           | are getting more complex for no reason.
           | 
           | Certainly. The things you _can_ do on the web have vastly
           | increased, but the things we actually _are_ doing are mostly
           | the same. Read some text, make an account, login, submit a
           | form, make a payment, upload a file. That 's what the vast
           | majority of the web has been and still is, yet the path you
           | take to get there is many times more complex and the user
           | experience hasn't proportionally gotten that much better.
           | Arguably, it's gotten worse.
        
             | LeFantome wrote:
             | Well, I think you can break it into two parts. I see the
             | underlying tech getting better, making it easier, and
             | making it faster. Look at the HTML dialogue element as an
             | example.
             | 
             | So, "the path you take to get there" CAN be much improved
             | as a developer.
             | 
             | Now, as a user, you may find that sites that could be
             | simpler are much heavier and complex than you want them to
             | be. My question is why? My argument is that both users and
             | producers of these sites WANT them to be more complex.
             | Which means blaming the technology is misplaced.
             | 
             | Certainly we CAN still make the sites that ran in Netscape
             | 4. Why don't we?
        
         | o1y32 wrote:
         | The second paragraph is just simply plain wrong throughout. You
         | should actually learn the web stack and look at how things work
         | in 2023 instead of reading other people's rants or secondhand
         | opinions to form your own opinions. CSS is not hard.
         | Performance talking is meaningless without benchmarks. No, you
         | can definitely build a decent small website with a few or even
         | no package dependencies. Maybe do a reality check first.
         | 
         | > It's time to move away from HTML/CSS/JS
         | 
         | Just meaningless empty talks over and over on HN. People who
         | don't understand web stacks ranting about web without knowing
         | the complexity and nuances. What alternatives do you have? Are
         | they going to provide enough features and customization as the
         | status quo? Will this new thing achieve at least 80% of
         | development speed? Many companies adopted web stack for their
         | application because of the flexibility and time to deliver.
         | They make products, instead of being a purist
        
           | lvass wrote:
           | >What alternatives do you have?
           | 
           | Gemini for pages and if you really need an app, wasm and
           | webgl/webgpu. HTML/CSS/JS can definitely be replaced by
           | better, already existing things, but browsers will still need
           | to understand those for many years going forward, even if
           | everyone suddenly stopped developing with them.
        
             | FireInsight wrote:
             | WebGPU/GL can't replace HTML on the web, even in webapps,
             | because it has zero accessibility or semantics
        
               | lvass wrote:
               | Webapps don't really have semantics. Accessibility is the
               | toolkit's job, leaving that to the web platform
               | invariably generates half baked results in an app.
        
           | smarkov wrote:
           | > You should actually learn the web stack and look at how
           | things work in 2023 instead of reading other people's rants
           | or secondhand opinions to form your own opinions.
           | 
           | I didn't base my response on anybody else's words. I've been
           | around the web since the good old days where jQuery was the
           | norm and everything had a phpBB forum. It's coming from my
           | own experience and observations.
           | 
           | > Will this new thing achieve at least 80% of development
           | speed?
           | 
           | You're so concerned with development speed, yet you're
           | rewriting the same thing in a new framework every 2 years.
        
             | refulgentis wrote:
             | OPs right, and it's sort of immature to pretend its all
             | broken and say wildly false things like "you're rewriting
             | the same thing in a new framework every 2 years." Who is?
             | That sounds like a management problem, not a...I don't even
             | know, language problem? Package manager problem?
        
               | ori_b wrote:
               | Stack maturity problem?
        
             | TheCoreh wrote:
             | > You're so concerned with development speed, yet you're
             | rewriting the same thing in a new framework every 2 years.
             | 
             | I think that meme gets thrown around a lot, and it used to
             | be true, but the framework churn of JS has largely stopped
             | at this point. A lot of us (me included) have been just
             | using the same stack for several years now.
             | 
             | Sure, React has evolved since 2015/2016 (e.g. the move to
             | function components and hooks) but the old code still runs,
             | with minimal to no changes. Patterns and best practices
             | have largely been established. You can entirely avoid the
             | bleeding edge stuff and still be productive.
        
               | nirvdrum wrote:
               | Elsewhere in this thread there are comments about needing
               | to continue pace to move beyond React. I don't think
               | we've seen the end of the churn. I agree that React is a
               | pretty stable base these days and you can just work with
               | that, but it's gotten long in the tooth in places so new
               | frameworks are still sprouting up.
        
             | BSEdlMMldESB wrote:
             | > good old days where jQuery ...
             | 
             | do you remember IE6? that's before jQuery, the time of
             | ActiveX and java applets
             | 
             | you're right that it got better by the time of jQuery...
             | 
             | when I started on this (highschool time for me), we was
             | writting HTML by hand. PHP 3 was used in production; PHP 4
             | was brand spanking new. CGI was a thing, imagine that! C
             | code used to dynamically make HTML stuff, exposed on the
             | web! (through C? gateway interface)
        
               | slater wrote:
               | *Common gateway interface
        
             | ttfkam wrote:
             | I've been around the web since document.write() and <font
             | color=red> were cutting edge.
             | 
             | You're wrong.
             | 
             | There is no way, shape, or form where 2008 web technology
             | is comparable to today. (IE6!!!) Not in styling. Not in
             | consistency. Not in performance. Not in accessibility. Not
             | in security. And certainly not in management of complex
             | sites.
             | 
             | A cursory look at caniuse.com should disabuse you of any
             | notion of stagnation or lack of capability.
             | 
             | Folks rewrite "every two years" because it gets better so
             | quickly. Svelte/Solid/Qwik are clearly steps forward from
             | React. Were you advocating for sticking with older stuff
             | simply because you don't like change? Or did you think C,
             | Unix, et al technologies were born fully formed as they
             | exist today with no evolutionary steps (and missteps) in
             | between?
        
               | nirvdrum wrote:
               | I think the charitable interpretation is there are a
               | whole class of web sites/applications (news sites,
               | e-commerce, etc.) that haven't appreciably changed in the
               | last 15 years. Yeah, there's been some incremental
               | improvement, but the core experience is the same.
               | However, the versions today are generally resource hogs.
               | It's not rare for me to leave a browser tab open and find
               | it grows to > 2GB RAM. I had one hit 28 GB and it would
               | have kept going if I hadn't killed it. One thing I miss
               | on the M1 is the fan kicking on so I know when a browser
               | tab has run away.
               | 
               | I think the OP has a point. We've been building a
               | massively complex ecosystem on a very shaky foundation.
               | The web has indeed advanced, but most of the time it
               | feels like duct taping something onto this monster of a
               | creation. Between backwards compatibility and competing
               | browser vendor concerns, it's hard to push meaningful
               | change through. So many security (especially supply
               | chain) and dependency issues in JS would go away if there
               | were a reasonable standard library. But, there isn't, so
               | we're doomed a large graph of inter-related dependencies
               | that break regularly. The constant churn in frameworks is
               | mostly related to novel ways to work around limitations
               | in the web platform and bridging behavioral differences
               | across browsers.
               | 
               | It's more than just churn in frameworks though. It's
               | depressing how many person-years have been spent on build
               | systems and bundlers or CJS vs ES6. Participating in the
               | open source ecosystem means needing to be familiar with
               | all of it, so it's not enough to pick one and run with
               | it.
               | 
               | Prior to flexbox, people struggled to center content with
               | CSS; it was bad for layout. There's a ton of old CSS out
               | there, much of it accomplishing the same thing in
               | different ways, often with vendor-specific options. You
               | still run into this if you have to style HTML email.
               | Given the difficulty in mapping CSS back to its usages,
               | it's incredibly challenging to refactor. It requires
               | familiarity with the entire product and a lot of guess
               | work to intent since comments don't exist.
               | 
               | Moreover, there have been massive changes in "best
               | practices". React and Tailwind violate the previous
               | principles of unobstructive JS and semantic naming that
               | were the prevailing practices not too long ago. My
               | cynical take is a lot of that is driven by consultants
               | looking to stand out as thought leaders. Regardless, it
               | adds to the complexity of what you need to know if you do
               | have to work with older (often other people's) code.
               | 
               | I'm fairly confident that if we had today's use cases in
               | mind when designing the foundational web technologies
               | we'd have a very different platform to work with. It
               | almost certainly would be more efficient, less error-
               | prone, and likely more secure. It'd be nice if we could
               | take a step back and revisit things. A clean break would
               | be painful, but could work. Developers are already
               | building web apps that only work on Chrome, so much as it
               | pains me to say, having to get all the vendors on board
               | isn't entirely necessary.
        
               | solarkraft wrote:
               | > React and Tailwind violate the previous principles of
               | unobstructive JS and semantic naming that were the
               | prevailing practices not too long ago. My cynical take is
               | a lot of that is driven by consultants looking to stand
               | out as thought leaders.
               | 
               | You're missing that people are adopting this on their own
               | because they enjoy the benefits during development.
               | 
               | This is also my explanation for why apps with the same
               | complexity as 15 years ago are now slower: What Andy
               | Giveth, Bill taketh away. Developers (or rather their
               | management) are choosing to make "lazy" trade-offs, i.e.
               | prioritizing programmer productivity over execution
               | performance. Which makes economical sense.
               | 
               | I wish there was a way to shift the economic incentives
               | because that would change things very quickly. Maybe some
               | browser performance limits.
        
           | kitkat_new wrote:
           | > CSS is not hard.
           | 
           | CSS is more difficult than C++
        
           | Y_Y wrote:
           | The tone of this post really rubbed me the wrong way. I know
           | nobody reads the guidelines, and that this post violates them
           | even more, but I really like the civilised interaction norm
           | here and when otherwise earnest and substantive replies come
           | in form that appears to me combative and unempathetic then
           | it's quite disappointing.
        
           | tjoff wrote:
           | Alternatives we have?
           | 
           | Regular good old html without or with _minimal_ amount of
           | javascript. Absurdly fast compared to todays site. Many
           | orders of magnitude less power.
           | 
           | Faster to develop and better user experience too.
           | 
           | But I also think we should think about alternatives. Things
           | like gemini are interesting but will have a hard time go
           | mainstream. But I do believe we need something completely new
           | because the user hostile nature of the web today is so
           | devastatingly toxic that I see no hope for the future.
        
             | LeFantome wrote:
             | It depends on what you mean by user hostile.
             | 
             | Gemini is cool but probably just repeating the pattern. If
             | companies and users wanted that, HTML use would have gone a
             | different way.
             | 
             | The truth is that both consumers and producers of even
             | "simple", "static" content want a lot more than these kinds
             | of solutions offer. We have web fonts, animated gradients,
             | SVG logos, responsive layouts, and the like because people
             | want them. Choosing another tech that lacks them will only
             | result in them all getting added back again.
        
             | pferde wrote:
             | The best thing would be to split web _pages_ and web
             | _apps_. Webpages can keep using HTML with some
             | minimalistic, gracefully degrading javascript, while
             | webapps need something better than hacks upon hacks upon
             | hacks upon ... on top of technology that was meant to
             | display static interlinked documents.
        
               | elementalest wrote:
               | Isn't that whats happening to a certain extent with wasm?
        
               | solarkraft wrote:
               | I don't see how
        
             | solarkraft wrote:
             | > I do believe we need something completely new because the
             | user hostile nature of the web today is so devastatingly
             | toxic that I see no hope for the future.
             | 
             | Capitalism ate the HTML web and it's native to expect that
             | it wouldn't eat the gemini web given there's a profit to be
             | made. The thing that makes an alternative technology non-
             | hostile is simply that it's too unpopular to make a profit
             | from making it suck.
        
             | ttfkam wrote:
             | > Regular good old html without or with minimal amount of
             | javascript.
             | 
             | You just described Svelte. All the JS minimalism and speed
             | without sacrificing the power.
        
               | emptysongglass wrote:
               | (Not a web developer just curious): does Astro also offer
               | this?
        
         | cdogl wrote:
         | > Websites do more or less the same thing they did 15 years ago
         | 
         | As a tech enthusiast, I've paid close attention to what tasks I
         | can achieve on my PC (and eventually smartphone) over the past
         | 15 years. In my experience, this is simply not true.
        
           | ThunderSizzle wrote:
           | What has changed significantly on the website side?
           | 
           | My bank website did a full re-design to be modern looking,
           | but it's slower, no longer supports multiple tabs, and links
           | don't work well, especially if you go through the sign in
           | flow. The ones that didn't redesign into a JS heavy spa are
           | still faster and links tend to be more reliable for e.g.
           | bookmarking. They don't look great, but they tend to be more
           | functional.
        
         | jeroenhd wrote:
         | CSS has become much easier. CSS grids and flexbox have removed
         | all the stupid layout hacks from long ago. No more need for
         | HTML tables to get two elements to align. The CSS spec has also
         | improved a lot.
         | 
         | JS has also improved massively, though it can't rid itself of
         | its original flaws it has solved a lot of problems in fifteen
         | years.
         | 
         | Accessibility has become trivial. You really don't need all
         | that much knowledge about screen readers anymore. If you follow
         | the standard even just a little, screen readers will already
         | Just Work.
         | 
         | HTTP/3, WebP, Brotli, and a whole range of technologies have
         | made some of the worst pain points of web development go away
         | for free. No more messing around with connection pipelining,
         | ordering resources to work around the browser load order,
         | minifying text resources manually, you just let the tech stack
         | do its thing and it'll work fine.
         | 
         | The problem isn't the web stack, it's the framework of the week
         | throwing out the last five years of development as "bloat",
         | redefining how things Should Be, and then growing to a form
         | where it's considered "bloat" and replaced again.
         | 
         | I've started my web dev career with PHP on the server. It's
         | really not that bad. The web works fine.
         | 
         | Things that work fine are boring, though. Writing HTML and
         | wiring basic actions to it is tedious work when there are all
         | of these interesting frameworks and methodologies to try out.
         | 
         | Or, in some cases, people skip the basics and start with
         | learning React or another heavy Javascript framework. Who needs
         | to know the difference between a <nav> and a <div class="nav">
         | when you only have two weeks to get through the bootcamp?
         | 
         | It's really not all that difficult to make websites. Web apps
         | are even easier because you can demand Javascript and all of
         | its tooling to be present.
         | 
         | We've tried replacing the web with apps on phones. As it turns
         | out, that's just as hard, often even harder. The actual
         | problems that make web development hard just aren't easy
         | problems to solve. Throwing complex layers of other people's
         | code over them sometimes helps, but in most cases anything that
         | promises to make web development easy just moves the complexity
         | some place else.
        
       | tgtweak wrote:
       | A quick test-run on the pages linked from the hackernews front
       | page:
       | 
       | hackernews svg logo doesn't render
       | 
       | youtube embed on the servo homepage doesn't load
       | 
       | https://github.com/tpope/timl -> reloads/rerenders infinitely,
       | uses 100% of 1 core
       | 
       | https://akrzemi1.wordpress.com/2023/04/23/the-obvious-final-...
       | -> hangs while loading the page, uses 100% of 1 core
       | 
       | https://equalitytime.github.io/FlowersForTuring/ -> loads/renders
       | fine
       | 
       | https://github.com/reactos/reactos -> reloads/rerenders
       | infinitely, uses 100% of 1 core
       | 
       | https://dolphin-emu.org/blog/2023/05/27/dolphin-steam-indefi...
       | -> loads fine but css rendering/placement is off on breadcrumbs
       | and article
       | 
       | https://xcp-ng.org/blog/2023/05/23/new-xen-updates-on-risc-v...
       | -> very long load then hangs while loading javascript/content.
       | 
       | Not a great batting average - seems like sites need to be purpose
       | built for this or leverage little/no modern javascript libraries
       | for it to render accurately. Servo has been in this state for the
       | last 5 or 6 years since I first discovered it.
        
         | brundolf wrote:
         | It isn't production-ready and I don't think it claims to be
        
         | pohl wrote:
         | Over how many of those years was there any active development,
         | though? It just re-started recently.
        
           | dathinab wrote:
           | and before it was restarted it wasn't even meant to ever
           | become a full fledged stand alone browser at all...
        
         | dathinab wrote:
         | it's not a full fledged browser for now, never was intended to
         | become one, maybe now will
         | 
         | it's doesn't even call itself a browser but a "web rendering
         | engine"
         | 
         | a lot of things today need a lot of not-quite standard, messy
         | or standardized by very very complicated stuff to even render
         | correctly
         | 
         | it wasn't really maintained for a long while until very
         | recently (because it originally was never meant to become a
         | full browser)
         | 
         | so I'm not sure what you are expecting
        
         | kramerger wrote:
         | How does that compare to ladybird?
         | 
         | https://awesomekling.github.io/Ladybird-a-new-cross-platform...
        
       | insanitybit wrote:
       | Servo will forever be a testament to Mozilla's absolute failure
       | as an organization. Finally there was a renewed interest in
       | Firefox _as a technology_ and their dipshit CEO fired them all
       | "because covid" while taking their largest ever bonus.
       | 
       | I hope that it can become something more than that, but I'll
       | always remember it.
        
         | surajrmal wrote:
         | Technology doesn't matter if it doesn't convert users. Perhaps
         | the improvements were too small given the level of investment
         | necessary and given the bleak outlook, they decided they
         | couldn't keep it up. I am happier knowing Mozilla will live to
         | see another day than see it die off.
         | 
         | As far as pay goes, the Mozilla board ultimately is in charge
         | of setting that. I'm not sure it makes sense to blame the CEO
         | for taking the compensation they were promised. The fact it is
         | correlated with layoffs just speaks to the large incentives
         | those in charge throw at the CEO to perform layoffs when
         | necessary.
        
           | ohgodplsno wrote:
           | the Mozilla Board is a living proof that the following
           | keywords in absolutely any leadership position are a death
           | sentence: Stanford, Harvard, McKinsey. The Mozilla board are
           | sycophanths that prop eachother up in the various boards they
           | are each a part of to leech off as much as they can before
           | jumping ship to another.
           | 
           | https://www.mozilla.org/en-US/about/leadership/boards-of-
           | dir...
           | 
           | None of these people have demonstrated any leadership
           | ability, nor justified a single dollar of their pay.
        
           | ptx wrote:
           | The technology is what matters to users. Mozilla only matters
           | in that they develop and publish the software that users care
           | about.
           | 
           | If the software is forked and development is continued as an
           | open source project under the auspices of another
           | organization, that works just as well for users. Conversely,
           | if the software dies but the Mozilla Corporation survives as
           | the world's leading manufacturer of paperclips, that's of no
           | value to the software's users.
        
         | Onavo wrote:
         | Who cares if their CEO did not invent JavaScript, she donated
         | to politically correct causes, shook the right hands, and
         | virtue signaled at the right time. As far as Mozilla is
         | concerned, they got the leader they deserved.
        
           | refulgentis wrote:
           | It's not so much this Woke Right view that everyone deserves
           | 0 consequences in every environment, and lefties have 0
           | consequences, but the inverse.
           | 
           | Bad idea to fight gay marriage when you run a company, not
           | very respectful or inclusive and causes a lot of headaches
           | for board, HR, and legal.
           | 
           | Nobody really cares about the new CEO as long as they don't
           | do that. The CEO that replaced Brendan wasn't a she, you're
           | trying to connect events 6 years after Brendan to Brendan.
        
       | erk__ wrote:
       | It should be noted that development has been getting up in gear
       | again mostly by Igalia after some external funding.
        
         | fmiras wrote:
         | This is awesome to hear, thanks Igalia
        
         | pabs3 wrote:
         | Who are the new funders for Igalia's work?
        
           | capableweb wrote:
           | > Igalia is a private, worker-owned, employee-run cooperative
           | model consultancy focused on open source software. Based in A
           | Coruna, Galicia (Spain), Igalia is known for its
           | contributions and commitments to both open-source and open
           | standards. Igalia's primary focus is on open source solutions
           | for a large set of hardware and software platforms centering
           | on browsers, graphics, multimedia, compilers, device drivers,
           | virtualization, embedded Linux, and device drivers.
           | 
           | https://en.wikipedia.org/wiki/Igalia
           | 
           | https://people.igalia.com/mrego/servo/igalia-servo-tsc-2022/
           | 
           | Seemingly, they are funding this work themselves, probably
           | from income from the consultancy.
           | 
           | Edit: Also, seems Igalia received public funding, the latest
           | one in 2022. In Spanish: https://www.igalia.com/public-
           | funding-projects/public-fundin...
        
             | afiori wrote:
             | From what I gathered from a few podcasts it is mostly
             | employee driven championing of priorities and croudfunding
        
               | HyperSane wrote:
               | I wish most companies were run this way.
        
               | password4321 wrote:
               | Maybe "this is the way" to fund an alternative browser!
        
               | ktosobcy wrote:
               | One wonders if there would be more user donations to
               | Firefox if those were directly going to browser
               | development and not to mozilla...
        
               | orra wrote:
               | I don't see how this Mozilla hate is relevant. Igalia
               | aren't ordinary users: they're developers.
        
       | samsquire wrote:
       | Is compositing different bitmaps an embarrassingly parallel
       | problem?
       | 
       | I started writing a simple layout engine based on the ORCSolver
       | white paper but I wonder how layout can be parallelized.
       | 
       | https://GitHub.com/samsquire/browser
       | 
       | I always thought servers could prelayout the HTML to determine X
       | and Ys and widths for different browser viewport sizes and this
       | metadata would speed up layout because you have a good candidate
       | for layout immediately.
       | 
       | When it comes to changing the DOM and reflow, I wonder if you can
       | reflow against the row only into chunks of the screen and
       | recomposite bitmaps to move elements down the screen.
       | 
       | Some web pages are really pathological with relayout costs
        
         | nextaccountic wrote:
         | > Is compositing different bitmaps an embarrassingly parallel
         | problem?
         | 
         | > I started writing a simple layout engine based on the
         | ORCSolver white paper but I wonder how layout can be
         | parallelized.
         | 
         | Well Servo has webrender and stylo (now adopted in Firefox)
         | which is aimed at harnessing the available parallelism to do
         | those tasks
        
         | chrismorgan wrote:
         | CSS Containment <https://developer.mozilla.org/en-
         | US/docs/Web/CSS/CSS_Contain...> defines ways of optimising a
         | lot of calculation and recalculation, roughly by forbidding
         | various of the harder or slower cases. (It's approximately just
         | an optimisation hint, though it does change behaviour if you
         | try to break out of the containment you declare. It's
         | conceivable that in the future browsers could determine whether
         | these optimisations can safely be done without the need for the
         | hint, though that could only help _relayout_ , never initial
         | layout.) Some forms of containment that you can declared
         | definitely allow for parallel layout to work without it being
         | speculative.
         | 
         | > _I always thought servers could prelayout the HTML to
         | determine X and Ys and widths for different browser viewport
         | sizes and this metadata would speed up layout because you have
         | a good candidate for layout immediately._
         | 
         | They tried this with <img srcset>, where it can have a lot more
         | value since you can fetch a lower-quality version of the image
         | if you don't need more pixels. In practice, effective use is
         | somewhere between uncommon and extremely rare, depending on how
         | you want to classify things. Some reconceptualisation of that
         | that integrated with container queries
         | <https://developer.mozilla.org/en-
         | US/docs/Web/CSS/CSS_contain...> might have more potential. But
         | all up, things like media queries, viewport units and calc()
         | make any kind of "serialise the layout" concept extraordinarily
         | difficult to do to any useful degree, and for almost no
         | benefit.
        
         | TuringTest wrote:
         | > Is compositing different bitmaps an embarrassingly parallel
         | problem?
         | 
         | If you can make an initial approximate guess of the area for
         | each section, you can split regions with lower and upper size
         | constraints that can be laid out in parallel. A global branch
         | and bound algorithm can coordinate those processes, tightening
         | the upper constraints of one region when another connected
         | region exceededs its minimum bounds.
         | 
         | Indeed there still may be degenerate cases where multiple
         | regions need to be recalculated several times, but overall the
         | default case should be able to finish without much conflict.
        
         | benreesman wrote:
         | I've been out of the browser rendering engine game for a long
         | time.
         | 
         | But even back in the day, the various ways that a DOM element's
         | physical layout could escape its parent's bounding box, the
         | multiple stages of coordinate evaluation, the zillion edge
         | cases: it's hard.
         | 
         | And that's assuming that all inputs are perfectly formed. By
         | the time you've cranked in enough Poe's Law to be more than a
         | tech demo, and enough performance to interest anyone?
         | 
         | It's one of the nastiest practical problems you'll encounter in
         | a long career and the cross product of the kooky standard and
         | the bugs you have to honor on the real web, a back compat story
         | worse than Win32 mean that there's no One Elegant Answer.
         | 
         | It's a fucking mess and my hat is tipped to the hard-ass
         | veterans who can even make a credible attempt.
         | 
         | I'd rather be on the hook for a modern RDBMS than a modern
         | browser.
        
           | Sesse__ wrote:
           | > I'd rather be on the hook for a modern RDBMS than a modern
           | browser.
           | 
           | I've worked on both a RDBMS and a browser, and yes, I'm
           | inclined to agree. In particular, it is largely acceptable
           | for an RDBMS to pick a niche where you perform well, and do
           | worse in others--and you're (silently) allowed to support
           | only a given subset and have your own incompatibilities.
           | Nobody would ever use a browser that performs well on NYT but
           | could hardly run YouTube (or the other way around).
           | 
           | Interestingly, there are very small teams who have written
           | usable instances of both.
        
             | benreesman wrote:
             | It's quite a career that includes both! Congratulations on
             | an interesting professional life!
             | 
             | Are you at liberty to share any inside baseball about the
             | small teams you mentioned?
        
               | Sesse__ wrote:
               | I haven't been part of a small team building either, but
               | the obvious small team doing RDBMSes is SQLite. Three
               | people building the world's most popular software, and
               | possibly the world's most robust database. They found a
               | niche and implemented it perfectly.
               | 
               | For browsers, the most prominent example is probably
               | LibWeb/Ladybird, part of SerenityOS (but with a Qt port,
               | allowing it to run on other operating systems). I've
               | never tried it myself, but supposedly it's complete
               | enough to run large web applications fairly acceptably,
               | which is amazing for something developed largely by
               | basically two people AIUI.
        
           | knome wrote:
           | >By the time you've cranked in enough Poe's Law to be more
           | than a tech demo
           | 
           | >Poe's Law
           | 
           | What? What is this trying to say here? Is it a typo?
        
             | ptx wrote:
             | Perhaps referring to supporting web pages that are so
             | poorly implemented that you suspect the developer did it as
             | a joke? :)
        
             | TUSF wrote:
             | See the previous paragraph, describing things that "could
             | go wrong."
        
           | jeroenhd wrote:
           | I've been watching the SerenityOS videos and especially the
           | Ladybird videos show a decent chunk of spec. One man (okay,
           | one man with a history in WebKit development) and a bunch of
           | volunteers gave built up a browser that could almost be
           | competitive if it existed back in the day. Of course the
           | people working on the project are incredibly talented, but
           | I'd argue that if one full time employee developing both an
           | operating system and a browser can get this much done with a
           | community, the problem isn't as hard as many people deem it
           | to be.
           | 
           | There's a lot that can go wrong, but the spec describes much
           | more than I remember reading back in the day. Layout
           | algorithms and such are all spelled out. There's no arcane
           | knowledge in finding out what the right size of an <img> is,
           | there are rules that will tell you exactly what you want to
           | know if you follow the spec.
           | 
           | Not everything has been documented as well as it should be,
           | but the vagueness and complexity of the web stack devs often
           | like to lament about really isn't that difficult. It's a lot
           | of reading, and boring reading at that, but the problems all
           | seem relatively straightforward to me.
           | 
           | Even quirks mode has been largely documented. A spec for
           | things that don't follow the spec!
           | 
           | I know things were very hard back when Internet Explorer was
           | still a major browser because there were no rules. These
           | days, you can either find your answer in the spec, or the
           | publicly available source code for your competition.
           | 
           | With the amount of features being crammed into database
           | systems these days, I'm not sure what I would prefer to
           | maintain. A modern RDBMS sure seems less complex than a
           | browser, particularly because there's no user facing UI, but
           | the problems with an RDBMS are a lot more about (inventing)
           | complex algorithms than many of the modern browser
           | challenges.
        
         | hexo wrote:
         | > Some web pages are really pathological with relayout costs
         | 
         | I'm always wondering how much do these awesome pathological
         | sites contribute to CO2 emissions. Along with ADs, autoplay
         | videos, huge and slow JS libraries, _animations_ , and other
         | needless and outright unwanted content. Even more on mobile.
         | I'd say it's a lot and could be cut off immediately with very
         | positive impact and no real loss.
        
       | coldtea wrote:
       | [flagged]
        
         | GeertJohan wrote:
         | Not sure if sarcasm or..? Can you elaborate?
        
       | botanical wrote:
       | How come since Mozilla let this go, it gets so much engagement
       | through opening of issues? Which types of people are using this?
        
         | ktosobcy wrote:
         | well...look at thunderbird - mozilla basically let it go as
         | well and it made spectacular come back with a huge funding from
         | users / community... as if user do like to contribute directly
         | to the software development and not the mozilla org with it's
         | weird golas... food for though...
        
         | capableweb wrote:
         | Mozilla laid off ~25% of their workforce, the Servo team was
         | mostly (maybe even all?) fired in that layoff.
         | 
         | https://www.cnet.com/tech/computing/mozilla-cutting-250-jobs...
         | 
         | Comments at the time:
         | 
         | https://news.ycombinator.com/item?id=24128865 (Mozilla Fires
         | Servo Devs and Security Response Teams)
         | 
         | https://news.ycombinator.com/item?id=24120336 (Mozilla lays off
         | 250 employees while it refocuses on commercial products)
         | 
         | In the end, I think Servo is better served by being in the
         | Linux Foundation rather than under Mozilla, as Mozilla seems to
         | stray further and further from the path they were walking a
         | decade ago, sadly.
        
           | wongarsu wrote:
           | Servo seemed like a great project for Firefox. Both in the
           | near term, by merging parts of servo like the CSS engine, and
           | in the long term by promising a much better rendering engine
           | than anything else on the market.
           | 
           | But sadly good for Firefox doesn't mean good for Mozilla.
           | Making a great browser isn't necessarily their highest
           | priority.
        
             | kvark wrote:
             | The CSS engine as well as new renderer from Servo has made
             | it into Firefox successfully. Servo has served well.
        
       | the_third_wave wrote:
       | [dead]
        
       | doublerabbit wrote:
       | Just to think, if every developer got together and contributed a
       | single line of code to a new internet stack/browser/protocol
       | project we could overtake the corporation poison that's current
       | spreading within the web-space.
        
         | ReactiveJelly wrote:
         | But, and I mean this un-ironically, what's in it for me?
        
         | o1y32 wrote:
         | If there is such a project where every developer can contribute
         | one single line, the result is inevitably that the codebase is
         | a horrible unmaintainable mess. Sorry this is the stupidest
         | thing I have seen this morning.
        
           | doublerabbit wrote:
           | Lack of coffee. Sounded better in my head.
           | 
           | The dream of that everyone could get together and make an
           | internet utopia without corporate input would be a pleasing
           | moment. That was the illusion I was trying to make.
           | 
           | The internet is so bogged down by corporate walled gardens
           | that nothing is individual anymore. Not to say they don't
           | exist but have an very minute presence.
        
         | meindnoch wrote:
         | Ok, here's my contribution:                 exit(1)
        
       | fooker wrote:
       | Cautionary tale for the 'rewrite it in Rust' camp
        
         | sebzim4500 wrote:
         | I think it's mainly a cautionary tale for the "let's write a
         | browser engine" camp.
        
           | pavlov wrote:
           | If anything, it's an encouraging tale for the "let's invent a
           | new language for our rewrite of a complex application" camp.
           | 
           | The rewrite failed but the language lives on because the
           | problem was general enough.
        
             | fooker wrote:
             | Most programming languages were born out of such a need,
             | not necessarily just the successful ones.
        
               | cookieperson wrote:
               | Rust is doing just fine. And your original comment is
               | specieous at best.
        
             | GeekyBear wrote:
             | > The rewrite failed
             | 
             | Servo code, written in Rust, to enable the use of multiple
             | CPU cores to speed up rendering was merged into Firefox
             | quite a few years ago.
             | 
             | https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-
             | en...
             | 
             | Also, shout out to Lin Clark, whose blog posts for Mozilla
             | back in the day set a high bar.
        
               | pavlov wrote:
               | Fair enough. My impression was that Servo didn't meet its
               | original goals. Whether that counts as failure is a
               | mindset question, I suppose.
        
             | kzrdude wrote:
             | Some of the best things in Servo were taken over by
             | firefox, weren't they?
        
               | cookieperson wrote:
               | Yes.
        
             | capableweb wrote:
             | > The rewrite failed
             | 
             | What rewrite are you talking about?
             | 
             | Servo was never intended to replace Gecko, so it can't be
             | that.
             | 
             | Servo was always in Rust, so you're not talking about a
             | rewrite there.
             | 
             | Servo delivered on its promise to be a sandbox for
             | experiments that might end up in Firefox, so surely you're
             | not talking about that either.
        
           | tannhaeuser wrote:
           | Was about to write it's a cautionary tale for "let's
           | procrastinate to write x by going meta and bikeshedding on
           | tools and languages" camp but pavlov beat me to it,
           | interpreting what he wrote as sarcasm.
        
             | jeltz wrote:
             | Depends. It made Forefox lose marketshare but it also gave
             | us Rust.
        
         | jeltz wrote:
         | Not really. The Servo project delvireded som amazing results
         | which made Firefox's rendering much faster.
        
           | fooker wrote:
           | Firefox has been consistently slower than most other browsers
           | for the last fifteen years.
        
             | earthling8118 wrote:
             | That's just not true. Over 10 years ago I switched to
             | Chrome because it was much faster but it's been nearly 5
             | years since I switched back because Firefox was blowing it
             | away
        
             | jeltz wrote:
             | Nope, that has always been highly workload dependent.
        
         | GeekyBear wrote:
         | > Cautionary tale for the 'rewrite it in Rust' camp
         | 
         | Mozilla, famously, made multiple attempts to update Firefox's
         | rendering engine to take advantage of multiple CPU cores that
         | had to be abandoned before they switched over to Rust and
         | started to see some success.
         | 
         | >Parallelism is a known hard problem, and the CSS engine is
         | very complex. It's also sitting between the two other most
         | complex parts of the rendering engine -- the DOM and layout. So
         | it would be easy to introduce a bug, and parallelism can result
         | in bugs that are very hard to track down, called data races.
         | 
         | https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-en...
        
           | kvark wrote:
           | Reminds me of the famous "you have to be this tall to write
           | multithreaded code" poster :)
        
           | o1y32 wrote:
           | Rust may have helped but I doubt that's the deciding factor.
           | This needs more context
        
             | GeekyBear wrote:
             | There is already a link to an interview with Josh Matthews,
             | who led Servo development, where he makes the case that
             | moving to Rust from C is the factor that finally allowed
             | the effort to succeed after three previous failed attempts.
             | 
             | https://news.ycombinator.com/item?id=36093636
        
       | Terretta wrote:
       | The recent overall assessment work is fantastic. Every project
       | should do this from time to time, as a heads up reset and
       | refocus.
       | 
       | I'll be using the report comparing layout engines as an exemplar
       | for teams thinking about undertaking or already working on
       | migrations.
       | 
       | Overall report:
       | 
       | https://github.com/servo/servo/wiki/Servo-Layout-Engines-Rep...
       | 
       | Feature by feature details:
       | 
       | https://github.com/servo/servo/wiki/Layout-2020-and-2013-par...
       | 
       | TL;DR on the report:
       | 
       | Neither Layout 2013 nor Layout 2020 fully support widely used
       | features like flexbox, grids, or a reliable float implementation.
       | This report proposes focusing on improving Layout 2020, but until
       | the project benefits from the renewed energy and focus it's not
       | ready for projects needing these.
        
       | nologic01 wrote:
       | Could Servo be used to build desktop webview type apps that can
       | leverage all the html/js/css libraries that are available?
       | 
       | The main complaint people seem to have about this approach is the
       | large size of the executable, I don't know if Servo can make a
       | different in this respect.
        
         | iknowstuff wrote:
         | https://tauri.app/
        
         | Al0neStar wrote:
         | I'm not sure if it can support all the libraries but yes it can
         | be used to make desktop apps. Theres also Sciter.
         | 
         | https://sciter.com/
        
           | wongarsu wrote:
           | I really like sciter for webview-type apps. It's really
           | lightweight, integrates well with native code, and brings
           | some native-app concepts to JS (like the communication
           | between multiple app windows). Sure, it's not open source,
           | but you can have the source code if you pay for it, I can
           | respect that.
           | 
           | My main issue is that it's lacking some of the DOM API. It's
           | complete enough that you wouldn't really notice when writing
           | code yourself, but good luck finding a charting library that
           | runs without modifications.
        
           | throwaway290 wrote:
           | It's not open source and there is nothing about Servo from
           | what I could find
        
             | Al0neStar wrote:
             | Seems like they have plans for Q4 2023
             | 
             | https://servo.org/about/
        
         | conradludgate wrote:
         | I was thinking about building a desktop app framework using
         | servo, but skipping any html/css parsers and without any JS
         | engine. It would use rust and some dsl/macros that compile to
         | servo function calls that build the UI. I'm not sure how much
         | smaller it would be, but I imagine not having node would be a
         | good start
        
         | TUSF wrote:
         | I'd been wanting to see this, preferably with JS being
         | optional, and just allowing direct DOM access.
         | 
         | I initially thought this was what Azul was, but it's only just
         | using Servo's WebRender compositor, and rolls its own CSS
         | parser, DOM, and layout engine, so it doesn't benefit from most
         | of the work done on Servo, and supports less CSS features.
         | 
         | https://github.com/fschutt/azul
        
         | dan-robertson wrote:
         | I think it used to be a goal to be embeddable in the way you
         | describe. Or at least better than gecko and at least as good as
         | chromium of the time. I'm not sure if that goal changed. I
         | think it probably doesn't yet support enough features to meet
         | your requirements.
        
         | umanwizard wrote:
         | How would that differ from what you can already do with
         | Electron?
        
           | Al0neStar wrote:
           | If you use Electron your app is bundled with Webkit + NodeJS
           | and runs two different processes. Servo is like a
           | minimal/limited Webkit and you dont need to write your app
           | logic in NodeJS.
           | 
           | A great example is Sciter and Sciters Note app
           | 
           | https://notes.sciter.com/
           | 
           | The x64 is 5mb impressive compared to an electron
           | application.
        
       | jmyeet wrote:
       | Here is a good article on how important Servo was to the early
       | development of Rust and the feedback loop between the two [1].
       | 
       | I find it interesting to see how Rust chose run-time over
       | compile-time. Some of this is completely understandable (eg the
       | whole borrow-checking mechanism that is so valuable). Generally
       | though, I've found you want to favor compile-time, particularly
       | incremental compile-time. It's better to get something to work
       | first and then optimize performance later than the other way
       | around.
       | 
       | [1]: https://pingcap.medium.com/the-rust-compilation-model-
       | calami...
        
         | avgcorrection wrote:
         | > It's better to get something to work first and then optimize
         | performance later than the other way around.
         | 
         | That's what they did by using LLVM instead of making their own
         | compiler backend. The compiler could have apparently (according
         | to what have been said) been faster, earlier, if they didn't
         | have to go through LLVM.
         | 
         | But yeah, you're right about their priorities: minimizing
         | runtime has always been a high priority while designing the
         | language, while designing for fast compiles has not. At least
         | according to my view from the peanut gallery
         | 
         | I don't know anything about compilers, but it would have been
         | interesting to see if a language like Rust would look different
         | today in this regard if they focused on incremental compilation
         | (instead of batch) from day one.
        
         | ReactiveJelly wrote:
         | OTOH, dev machines are usually beefier and fewer in number than
         | prod machines.
         | 
         | So if you can give yourself head room to make prod _really_
         | fast, in a few years the dev systems may double in power
         | anyway.
         | 
         | Incremental compiles are a common source of bugs, right? I find
         | it's easy to do something from scratch (like imgui painting the
         | whole window every frame) and hard to optimize it not to (like
         | damage in GUIs)
        
           | cookieperson wrote:
           | Thread ripper with nvme drives for rust development make
           | compile times a giggle.
           | 
           | Not sure what you mean by bugs due to incremental
           | compilation? I've never seen it happen anyways.
        
             | kbrosnan wrote:
             | Happens with some frequency with building Gecko. You can
             | see documented instances of it for the CLOBBER file. It
             | allows the person building to optionally have the build
             | system force a clean rebuild.
             | 
             | https://hg.mozilla.org/mozilla-central/log/tip/CLOBBER
             | https://firefox-source-
             | docs.mozilla.org/build/buildsystem/mo...
        
         | jeltz wrote:
         | > It's better to get something to work first and then optimize
         | performance later than the other way around.
         | 
         | As far as I gather that is one of the issues why Rust is slow
         | to compile. Fast compilers were usually built with performance
         | in mind from the very start while rustc was first made work and
         | then optimized.
        
         | phkahler wrote:
         | Having the ability to turn off expensive compiler options is
         | nice. For Solvespace (C++), turning on LTO make compilation
         | about 6x longer for maybe 15 percent runtime performance. I do
         | development without LTO and let releases get LTO. The borrow
         | checker in Rust might be to important to turn off even
         | sometimes.
        
           | xavxav wrote:
           | > The borrow checker in Rust might be to important to turn
           | off even sometimes.
           | 
           | Variations of this point come up often, that the main reason
           | rust compile time is slow is typechecking or borrowchecking,
           | but that's not true, while those operations are expensive,
           | it's monomorphization (and llvm) that are the main drivers of
           | compile time currently. Building a compiler on top of llvm is
           | unfortunately going to be sluggish for feedback loops ,
           | regardless of your type system.
           | 
           | Also, unlike LTO, borrow checking is not just an
           | optimization, turning it off would be like allowing you to
           | add arrays and booleans together: meaningless and wrong.
           | Anyways, you wouldn't save more than ~10% time.
           | 
           | Apart from the rant above, I do agree that having the ability
           | to tune optimization levels for development vs prod is good,
           | I would like it if it were easier to do stuff like PGO or
           | other stupidly expensive optimizations for releases.
        
         | est31 wrote:
         | The main competitor of Rust for writing browsers is C++, and
         | its compilers don't have in-unit incremental compilation. So
         | that's why Rust didn't start out with incremental compilation,
         | but it was added later on, so now you do have it (although it
         | could be improved in many ways).
        
         | cookieperson wrote:
         | There's a balance between the two and that balance shifts based
         | on product/project requirements. I can't imagine anyone writing
         | a slow browser engine and being like "yea but we will make it
         | fast later!", Screen tearing, 5second plain text page loads,
         | etc don't make for compelling demos. Similarly for an OS or a
         | database you can't have it be below some reasonable performance
         | threshold even in prototyping. Otherwise you aren't even
         | solving the problems, the apparent remaining 10% of the work
         | basically demands a complete rewrite plus many new feature
         | editions - ie youve done nothing.
        
           | easton wrote:
           | > I can't imagine anyone writing a slow browser engine and
           | being like "yea but we will make it fast later!"
           | 
           | Funny, that's the exact opinion of the people building
           | Ladybird for SerenityOS. They are of course doing it for fun,
           | and it doesn't take five seconds to show text.
        
             | cookieperson wrote:
             | I wish them every bit of success but I'd worry about their
             | OS if it was built under the same principles.
        
       | eis wrote:
       | I think it would be great if the homepage could have a prominent
       | link to the documentation as it wasn't obvious to me where to
       | find it. I followed the link to Github which in the readme has a
       | howto for building the project and there is a docs folder which
       | has a few documents mostly with dealing how to get started
       | contributing.
       | 
       | In the end I think a good entry seems to tbe the Wiki on Github:
       | https://github.com/servo/servo/wiki
       | 
       | I would also love to have a clear overview page that shows a high
       | level view of the state of the engine in terms of feature
       | support/completeness.
       | 
       | I'd love to see the project getting revitalized and gain traction
       | now that it is outside Mozilla and maybe maybe eventually a new
       | phoenix might rise.
        
       | BSEdlMMldESB wrote:
       | [flagged]
        
       | paulrouget wrote:
       | Rust helped Servo. But Servo also helped Rust:
       | 
       | I encourage people to listen to Josh Matthews interview [0]. He
       | talks about how, early on, Servo was a "guiding light for Rust".
       | 
       | 0:
       | https://podcasts.google.com/feed/aHR0cHM6Ly9ydXN0YWNlYW4tc3R...
        
         | GuB-42 wrote:
         | Rust is to Servo what C is to UNIX. Even though they live their
         | own lives now, the ties are strong.
         | 
         | I think programming languages must be developed with their
         | application. For Rust, it is Servo, Go is for Google, LUA is
         | for scripting video games, Swift is for making iOS apps, and of
         | course C is for UNIX.
        
           | SanderSantema wrote:
           | Lua wasn't made for scripting video games but as a scripting
           | language for a mining company if I remember correctly from
           | this excellent paper[1]. I can highly recommend all the other
           | ACM hopl papers too for those interested in the history of
           | programming languages. The papers don't seem to be open
           | access but sci-hub might help with that if you're so
           | inclined.
           | 
           | [1] https://dl.acm.org/doi/10.1145/3186277
        
             | carterschonwald wrote:
             | The hopl paper on lua seems to indicate it came out of a
             | Brazil university. https://www.lua.org/doc/hopl.pdf
        
               | airstrike wrote:
               | Indeed. It was created at PUC-Rio, my alma mater
        
               | tomjakubowski wrote:
               | Lua means moon in Portuguese! (cognate of Luna)
        
             | zendist wrote:
             | This one? https://www.lua.org/doc/cacm2018.pdf
        
             | osigurdson wrote:
             | I once met Waldemar Celes, one of the co creators of Lua.
             | It was meant for use within a tool called Geresim for
             | visualizing large 3D models of oil/gas reservoirs -
             | primarily for Petrobras, the Brazilian national oil
             | company.
        
             | jf wrote:
             | I'd love to see your other suggestions!
        
           | tomphoolery wrote:
           | Go is for DevOps, full-stop. :D
        
           | mch82 wrote:
           | Products too! Technology projects without an end-user often
           | become vaporware because it's impossible to make design
           | decisions without constraints. A real end-user adds
           | constraints. Constraints enable good decision-making. It's
           | much easier to answer a specific question ("is this a good
           | decision for a bowser rendering engine") than an abstract
           | question ("is this a good decision for software").
           | 
           | I don't use Rust, but appreciate how it solves clear
           | problems. I'm really impressed about the way key issues like
           | packaging & distribution, documentation, and coding
           | style/safety are addressed at the language level. I bet those
           | features emerged from the need to address issues with the
           | open source development model. Without servo, maybe those
           | features don't make it.
        
           | underdeserver wrote:
           | Funny. During my time at Google (7 years, left earlier this
           | year), I can count on one hand the number of people who used
           | Go.
           | 
           | The outside world, though, appears to have embraced it.
        
             | no_wizard wrote:
             | My understanding is it largely exists in the confines of
             | GCP as it targets infrastructure mainly
        
           | stiltzkin wrote:
           | Ruby is to Rails.
        
       | Alifatisk wrote:
       | What do they mean by "parallel browser engine"? That it runs in
       | multicore?
       | 
       | Also, what's fhe goal with Servo? I am all for new browser
       | engines to compete against Chromes monopoly!
        
         | HellDunkel wrote:
         | I think it was designed as the next level browser engine to
         | work with firefox, making heavy use of gpus (probably for
         | mobile). Then things got stuck.
        
       | amelius wrote:
       | Cynical prediction: by the time this project is finished, the
       | entire rendering of browsers happens in the GPU.
        
         | GuB-42 wrote:
         | GPU probably won't be a good fit for the browser, except for
         | purely graphical tasks, like drawing images, for which they are
         | already used for.
         | 
         | GPUs are good for massively parallel tasks, for example,
         | shading every individual pixel on a 3D rendered scene, which is
         | what they are designed for, bruteforcing hash functions, as it
         | is done in cryptocurrency mining, or multiplying large
         | matrices, as it is done in deep learning.
         | 
         | But most of what a browser does is not massively parallel. JS
         | is mostly single-thread, and layout, parsing HTML, or managing
         | network connections may benefit from a bit of parallelism but
         | we are not talking about thousands of simultaneous operations
         | with no interdependence. And for that, GPUs suck, they don't
         | have the caching, branch prediction, synchronization, etc...
         | abilities of a CPU, and attempting to do that on a GPU will
         | only bring it down while its overpowered math units will be
         | idling.
        
           | loa_in_ wrote:
           | Some things that come to mind: layer compositing, layer
           | transformations, animation (deferred from CPU)
        
             | sebzim4500 wrote:
             | GPUs are already doing all of those things in modern
             | browsers.
        
             | Dylan16807 wrote:
             | Those sound like "purely graphical tasks" to me.
        
         | GeekyBear wrote:
         | Parts of Servo to enable the use of the GPU for compositing
         | layers were merged into Firefox years ago.
         | 
         | https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-f...
         | 
         | It's a shame that Patrick Walton didn't get a chance to finish
         | his work on the Pathfinder GPU renderer.
         | 
         | >Pathfinder 3 is a fast, practical, GPU-based rasterizer for
         | fonts and vector graphics using OpenGL 3.0+, OpenGL ES 3.0+,
         | WebGL 2, and Metal.
         | 
         | https://github.com/servo/pathfinder
        
           | dralley wrote:
           | I wonder if it would be easier to finish if based on a wgpu
           | backend, rather than having 4 separate backends.
        
             | mandarax8 wrote:
             | Opengl3/es3/webgl2 might as well be the same backend
        
         | Sesse__ wrote:
         | The paint phase of rendering can easily happen on the GPU, and
         | more and more stuff will move to the GPU as time goes by. The
         | style and layout phases... unlikely.
         | 
         | Think of a GPU this way: If you could reasonably launch a
         | thousand threads on the CPU and get a benefit from it--i.e.,
         | essentially, you have tens of thousands of largely independent
         | work chunks (or more)--your problem might be well-suited to a
         | GPU. A large web page contains a couple thousand DOM elements,
         | and many of them depend on each other wrt. style, so it's not a
         | good fit. (Stylo is parallelized, so it is capable of using a
         | multicore CPU, but there's no way it can get a reasonable gain
         | from 1000 cores.) Layout is also nontrivial to parallelize.
         | 
         | However, paint is a different beast. In many cases, you can do
         | per-pixel parallel work. So various forms of font work,
         | line/shape rendering, compositing/blending, scrolling, video
         | decoding... that's where the GPU is useful.
        
         | psychphysic wrote:
         | Is this now intended to be a full featured browser? That'd be
         | great.
         | 
         | Last I checked this was going to be a sandbox for Rust ideas
         | with no intention of Gecko bring dropped by Firefox.
         | 
         | It would be cool if it could at least be a "secure" window with
         | heavy restrictions on add-ons etc. Not full featured, maybe not
         | even much hardware acceleration. Just a single window that is
         | super hardened.
        
         | maksimur wrote:
         | I hope not, unless GPUs become cheaper.
        
           | capableweb wrote:
           | How much cheaper can they get? Most laptops have CPUs/boards
           | with integrated GPUs, and desktop GPUs can be bought for very
           | cheap, as long as you don't buy the latest greatest edition
           | of everything.
        
           | rollcat wrote:
           | It's hard to lose on this one: even an underpowered,
           | integrated GPU will probably do a better job than an average
           | CPU. Desktops have figured this out a while ago, both OSX and
           | Windows have been rendering on the GPU for a very long time
           | and it's not necessarily to enable any extra graphical
           | effects, but just to make the interaction faster, smoother,
           | and more energy-efficient.
        
         | the_third_wave wrote:
         | Who knows? A rendering engine will still be needed though so
         | another prediction could be that Servo supports such GPU-based
         | rendering.
         | 
         | Maybe a better prediction would be for the CPU/GPU/MPU/APU/xPU
         | distinction to become less relevant since processors will gain
         | those capabilities? A future where processors come in chiplet-
         | based packages with a few generic cores and some more tailored
         | to massively parallel matrix processing maybe?
        
         | abrztam wrote:
         | Yes, ads running on the GPU are the future, unblockable.
        
           | sebzim4500 wrote:
           | Why are ads on the GPU harder to block than ads on the CPU?
        
       ___________________________________________________________________
       (page generated 2023-05-27 23:00 UTC)