Get the top HN stories in your inbox every day.
stolenmerch
TonyTrapp
The old version (http://acid3.acidtests.org/) will reach 97/100 on modern compliant browsers. There is a newer version (https://wpt.live/acid/acid3/test.html) which incorporates the changes made to the specs in the meantime, so modern browsers will reach 100/100 on this one again. The test was carried out against this version, as you can see in the address bar in the screenshot.
missblit
Your link also only gets 99/100 on modern browsers.
Why? Well...
// test 64: more attribute tests
// attributes of the <object> element
var obj1 = document.createElement('object');
obj1.setAttribute('data', 'test.html');
// ...
assert(obj1.data.match(/^http:/), "object.data isn't absolute");
See that "http" in test 64? Turns out you'll get a score of 100/100 if you use the http version of the URL instead of HTTPS.hermitdev
Confirmed for me. Where's the metatest that tests Acid3?
gpderetta
Interesting, by forcing http I get 100/100 with chrome on windows but the animation is not smooth (there is a pause at 69/100) and it definitely does not match the reference image (there are no colored boxes at all).
j-james
Hmm, I'm seeing 99/100 in Chromium (mobile and desktop). I wonder what test is failing.
tssva
Passing the individual tests is only part of passing the complete test. Animations must be smooth and everything must be rendered pixel perfect to the sample image. All Chromium based browsers, I tried Chrome Chromium, Edge and Vivaldi appear to fail the test even if they get a 100/100 score. They all display a thin red line near the upper right of the white box. This line doesn't appear on the sample image.
naoqj
It says "test 64 is failing: object.data isn't absolute"
greggsy
I got either 68, 97 or 99 on Safari iOS. Disabled content blockers and Darker Reader.
samwillis
I was seeing the same untill I changed the urls to http rather than https as per another comment, then it gets 100.
speedgoose
The animation is far from being fluid too.
nightpool
There's an up to date version following modern specs linked in the twitter thread:
https://twitter.com/OrphisFlo/status/1508954585993461763 http://wpt.live/acid/acid3/test.html
mminer237
That's correct. Tests 23 & 25 require a specific error type that has since been changed in that circumstance: https://github.com/whatwg/dom/issues/319#ref-commit-94dd371
Test 35 requires root elements to not match :first-child, and the spec was changed to specify that they should match: https://bugzilla.mozilla.org/show_bug.cgi?id=1300374
undefined
queuebert
That's pretty dumb grading. Why not flip the sense of the assert for those three tests?
webmaven
Hmm. The LibWeb source is here: https://github.com/SerenityOS/serenity/tree/master/Userland/...
I wonder if it could be pulled out as a portable library. Having another competitive browser engine would be a good thing.
userbinator
This, absolutely. Especially if it comes with a GUI in the same aesthetics as SerenityOS itself. The world needs less Chrome-clones and Google-backed browsers (which to a certain extent includes Firefox), and more independent ones.
As someone who has also been attempting to write a browser (engine) in my spare time --- but these guys are far ahead of me --- this is great to see.
oscargrouch
The problem is: who's gonna use it?
Sure, it's good to have more options but, the deploy base of browsers like Chrome are massive and IE6 only lost its position by being careless and stop evolving (and lets not forget it took years), which is something that is not happening with Chrome.
Just to make clear, this is not specifically directed to you or your project, which is a great thing to do independently of the outcome. I'm saying this more as in a general perspective as we are pretty much sitted on the state-of-the-art of browser engines and its hard to see something else taking over except for a "game reset" scenario (outside of the web).
userbinator
The point is that a lot of sites out there don't need anything more than the web tech of 2 decades ago. With more people being aware of that and using browsers like this, the Google monopoly may weaken. I make it a point to complain whenever some site I need to use changes in the direction of Google's desires and becomes less browser-agnostic. It has had mixed results, but I suspect if a company is losing customers because its web devs are Google-loving trendchasers, they'll take notice.
woojoo666
I think browsers are comparable to operating systems, and if we look at the richness of the Linux ecosystem, I'd say it can't hurt to have a few more browsers and browser engines. For example, most users wouldn't see the utility of Arch linux. And yet Arch linux is the backbone of Docker. Perhaps a new browser engine can fill a similar niche, targeting low resource usage and light browsing
tpxl
Having a lightweight embeddable browser engine (or even html parser) to use in your projects to display hypertext would be nice.
aeyes
It should already run on Linux using Lagom, at least I have seen the tests for LibJS run on Linux.
https://github.com/SerenityOS/serenity/blob/master/Meta/Lago...
linusgroh
Lagom covers many libraries, including various ones used in the Browser/LibWeb (e.g. LibJS, LibWasm), but LibWeb itself is not part of Lagom and doesn't currently build or run on Linux. It's absolutely possible, but no one is working towards it specifically at the moment. There's a list of things needed to make that happen here: https://github.com/SerenityOS/serenity/issues/10968
cyber_kinetist
It seems that Lagom ports AK and LibCore, the core C++ library components that Serenity is using instead of the STL, to other platforms like Linux.
This may be useful for devs who want to entirely ditch the STL in favor of a much cleaner and ergonomic library.
torginus
Yeah, a lot of game engines use some sort of HTML-based UI system. Having this thing as an easily includable library would be amazing.
ilrwbwrkhv
Andreas Kling is a legend. He and his team really bring back the hacker ethos. Grind on hard problems people, instead of grinding on leetcode.
omgitsabird
Aren't there some hard problems on leetcode?
I can see this analogy as:
"Don't do your math homework. Instead, find hard math problems in real life to solve."
sydthrowaway
This does not make sense in terms of expected utility.
DC-3
maybe for your utility function
lawtalkinghuman
It makes sense in terms of having fun.
Tomte
It's a great achievement!
But note that it doesn't mean that the browser interprets modern CSS correctly.
Wikipedia's Acid3 page says:
> By April 2017, the updated specifications had diverged from the test such that the latest versions of Google Chrome, Safari and Mozilla Firefox no longer pass the test as written. Hickson acknowledges that some aspects of the test were controversial and has written that the test "no longer reflects the consensus of the Web standards it purports to test, especially when it comes to issues affecting mobile browsers".
Strangly, my Safari on iPad just achieved 100/100. a minute ago it achieved 97/100.
Does anyone know what's up with it? Are there timing dependencies? What are the divergences in modern specifications?
gnarbarian
That's how fast web standards change. Try again it'll probably be 95.
I'm joking of course. The things /I/ want [1] seem to take forever to get proper support.
sebzim4500
Have you tried being a multi billion dollar company? The things Google wants seem to be added pretty quickly.
burnte
I HAVE tried being a multibillion dollar company, but I'm having issues getting multiple billions. Other than that I think I have the rest taken care of.
nightpool
I don't know what the divergences are specifically, but there's an up to date version following modern specs that's linked in the twitter thread, that's what the screenshot is of: https://twitter.com/OrphisFlo/status/1508954585993461763 http://wpt.live/acid/acid3/test.html
girvo
This test, as per the address bar in the screenshot, uses the newer Acid3 test that is 100/100 (provided you access the http not https version) in modern browsers, though, not the older one.
jug
IIRC it's something about timings that makes it fluctuate. At 97+ or so a browser can in fact be compliant insofar as the test goes.
omgitsabird
"I think its really awesome to see just how fast you can move on these things, if um... you just get a bunch of people who really want to do it"
-- Andreas Kling on this progress: (https://www.youtube.com/watch?v=Xa5_tW_eovM)
wing-_-nuts
I've watched a few of this guy's videos, and it's deeply impressive. He reminds me of the grizzled old guys from the 1980's that actually know the deep internals of an OS. They didn't just take it in school, they lived and breathed it. He's the guy that made the 'myth' of a 10x coder a reality for me.
I get this is his passion project, but part of me wonders what he could accomplish working on the rough edges of linux.
vinkelhake
> I get this is his passion project, but part of me wonders what he could accomplish working on the rough edges of linux.
I've watched/listened to more than a few of his videos. Something that he has expressed on more than one occasion is an appreciation for the kind of deep vertical integration that he saw at Apple because they control the entire stack. He's going for something in that direction in Serenity and it, for example, means that they're not taking on low-level dependencies on other projects.
Anyway, this is perhaps a roundabout way of saying that I don't think he'd be all that interested in hacking on Linux - a project that very much goes against that kind of integration.
quux
He's also talked about this on the CoRecursive Podcast:
Andreas: Well, I don’t know that I ever had a real direction with it. But in the beginning, I remember feeling kind of frustrated with finding myself using Linux again and thinking it’s nice to be back on Linux. Everything is snappy. And the developer experience is really great, but I sure do miss having the source code for everything.
Adam: This is a fascinating distinction to draw.
Linux is open source. Everyone has access to the code. But if you listen to episode 70 with Joey Hess talking about Debian, making changes can be a bureaucratic process. And that’s just for one distribution. There are hundreds of Linux distributions. Even if it’s a one line change, it could take years to get that upstreamed and spread into various Linux distributions. If you listen to episode 67 about Zig, that was one of Andrew’s motivations behind creating Zig.
But meanwhile, Andreas has another strategy at Apple. Everything was in one place, and everything was built internally.
Andreas: And when you’re in that environment, it’s extremely powerful.
oh_sigh
It seems like the problem is power distance and social credit. Random developer trying to get one line of code changed may run up into a gigantic wall. What about with Linus?
The "problem" with Serenity OS is that yes, now Andreas will have all the power he wants and can get that one line change without the bureaucratic process. But what about when some random user comes along and wants to change the code? They better start programming on Tranquility OS.
throwaway82652
>Even if it’s a one line change, it could take years to get that upstreamed and spread into various Linux distributions. If you listen to episode 67 about Zig, that was one of Andrew’s motivations behind creating Zig.
No, I'm sorry. This is a very, very bad reason to start a new project from scratch. If you want to avoid bureaucracy then it's not hard to create yet another Linux or BSD distribution, countless people have done it. Once your project grows larger you will find bureaucracy creeping back in again because you have to make some of the same decisions. Do I accept breaking change A versus breaking change B? How do I force people to test a patch across thousands of machines at once before accepting it? How do we reach consensus on subjective things like fonts and icons? And so on.
These projects have plenty of other reasons to exist, it's not like they don't. This is just a poor explanation for why they exist. I hope nobody mentions this nonsense again in an interview.
hutzlibu
"There are hundreds of Linux distributions."
There probably are hundreds of linux distributions exactly because people do not want to wait years for their change to ship, so they create their own project ...
rjh29
By his own admission he basically did nothing but coding all day long for most of his life, to the point where if he took a long vacation he'd be worried about getting rusty. For SerenityOS he basically holed up in a cabin for 6 months coding. At dayjob it was "60-80 hours a week", not forced but because he wanted to do it.
That kind of sustained and focused work compounds over time and you just get better and better I guess. Reading stories like his makes me think I'm probably in the wrong industry because I don't enjoy coding that much and definitely have a ton of other things I'd rather do.
smt88
I don't think someone who enjoys coding that much is neurotypical, and I think you can be both neurotypical and a great programmer.
tharne
> Reading stories like his makes me think I'm probably in the wrong industry because I don't enjoy coding that much and definitely have a ton of other things I'd rather do.
You're fine. Comparing yourself to Andreas Kling vis-a-vis coding is like saying you're going to stop playing the guitar because you're not Jimi Hendrix. Andreas Kling, while impressive and inspiring, is not normal.
Most people, myself included, don't want to do any one thing for 80+ hours a week. That's okay. If you enjoy working as programmer, just keep on trukin' and don't worry about what others are doing.
rjh29
Thanks, that is a good analogy and definitely helped me!
eternityforest
I don't think there's anything at all wrong with only coding 40 hours a week or less.
SerenityOS is an amazing accomplishment but it's just a hobby project without massive resources like major projects have.
Most real world apps have tons of devs that don't do 60 hours, the modern dev process just doesn't need it, unless you're doing large things entirely done by small teams.
queuebert
Linux's rough edges form a fractal.
klysm
A fractal with loops
postingposts
A fractal with loops is a Chaotic Map. https://en.wikipedia.org/wiki/List_of_chaotic_maps
undefined
tannhaeuser
From serenityos.org:
> ... marriage between the aesthetic of late-1990s productivity software and the power-user accessibility of late-2000s *nix
> ... a system by us, for us, based on the things we like
Come on, just say you want back your Win98/Win2K look'n feel ;)
While I personally like my windows less decorated and more Mac OS-like, I'm quite impressed by the determination and progress of the SerenityOS team. Are there app porting guidelines, or maybe POSIX/LSB, X Windows, or other compat statements?
stolen_biscuit
Yeah there are app porting guidelines: https://github.com/SerenityOS/serenity/blob/master/Ports/REA...
Andreas also uploaded 2 videos on his youtube channel of him porting Diablo and Duke Nukem to SerenityOS
filmroellchen
See the Ports directory [1] if you're interested in porting software over. Basically, there's a porting script framework with dependency management that you use to download and (cross-)compile into the Serenity disk image.
There's no X server and we don't want to have WindowServer support the X protocol as a standard feature. If you're porting a GUI app, your best bet is SDL2, for which we have a battle-tested well-working port. However, you can just as well port an X server that talks to WindowServer or the video hardware directly, it's just that that doesn't currently exist. But I think such a thing would be perfectly accepted as a port.
Sidenote: If you want less decorated windows, there's System 7-like themes and other minimalistic ones. Or make your own :^)
[1] https://github.com/SerenityOS/serenity/tree/master/Ports
kragen
That's wonderful! How much RAM does it need?
My biggest complaint about modern browsers is that I can't load a web page in less than 64 MiB, which is more than my entire computer had when I was running Netscape 3. The browsers are better now, but not in ways that necessarily use more memory.
akling
We haven't really begun to optimize for memory usage yet, so it swings wildly depending on the content you're viewing.
At this stage, we're primarily focusing on correctness and compatibility, and performance is mostly a luxury. It's an area I look forward to eventually dealing with though, as it used to be my full-time job at Apple years ago and I have many fun ideas. :^)
kragen
What's a rough minimum for a page with some text on it? Are we talking about 64MiB like Chromium, WebKit, or Gecko, or more like 16KiB, 256KiB, 4MiB, or 1 GiB?
I think of memory usage as being more about correctness than performance, though I know that isn't how most people see it. Trying to run a 512MiB process on a 64MiB computer, or a 512GiB process on a 64GiB computer, is just never going to run at a usable speed. Broken software is the limit as latency approaches infinity.
Moreover, I've never seen someone take software that needed 1 GiB to run and modify it incrementally into software that could run in 1 MiB, though I have seen the opposite.
akling
If I open this HN discussion page in the browser, it currently uses 44MB of private memory.
We can definitely shave a couple of megabytes off of it with some effort, but supporting the contemporary web on a 4MB budget seems infeasible.
jcelerier
The lowest bound would be the size of the texture the page is rendered into, no ? If you're on a 4k screen an uncompressed rgba pixmap is already 31MB... And that's really just the raw pixel storage which needs to be associated with your process
Someone
Your screen likely has gotten better in ways that necessarily use more memory: more pixels, more bit depth means larger pictures, larger font caches (because of larger characters and anti-aliasing), etc.
The pages you look at also have gotten ‘better’ in ways that necessarily use more memory. I don’t think you regularly loaded megabytes of JavaScript.
Finally, your browser usage likely has gotten ‘better’ in ways that necessarily use more memory. I guess you have more tabs open than you ever had in that 64 MiB.
kragen
While there is something to this, and antialiased fonts and CJKV rendering are particularly beneficial, I mostly don't agree about necessarily using more memory (see https://news.ycombinator.com/item?id=30872388). We're talking about orders of magnitude more memory than the screen contents.
As for JS, on most pages the only benefit of those megabytes of JavaScript is that I need to use uBlock Origin and/or Reader Mode to read what I'm actually interested in, the page jumps around at random while I'm trying to read it, Twitter tries to extort me into logging in, DoubleClick and reCaptcha can fingerprint my GPU, etc. Also, a megabyte of minified JS might reasonably compile down into a megabyte of bytecode or 4 MiB of native code, not 64 MiB or 128 MiB. JS's execution model is kind of inherently memory-hungry, though.
64 MiB is for one tab.
niutech
Try Ultralight web engine or K-Meleon on Goanna, they are really lightweight.
kragen
How much memory do they need to load this discussion thread page?
niutech
K-Meleon uses just 58.9 MB of RAM: https://i.postimg.cc/Jz1cy8tG/K-Meleon.png
zppln
Great work by everyone involved. SerenityOS is for me by far the most interesting project in tech right now. It's like watching a different branch of reality evolving. The recent browser optimization videos by Andreas himself have been great. A great moment in particular was seeing Andreas' satisfaction when he go smooth hover effects on links[0], a single moment where he is (presumably) struck with how far his project has come.
heywire
Andreas’ excitement is infectious. I find myself sometimes smiling in an empty room watching his reaction to getting something working.
dang
Related:
Serenity OS: Interview - https://news.ycombinator.com/item?id=30214371 - Feb 2022 (52 comments)
SerenityOS demo at Handmade Seattle 2021 [video] - https://news.ycombinator.com/item?id=29270776 - Nov 2021 (180 comments)
SerenityOS: Year 3 in Review - https://news.ycombinator.com/item?id=28817599 - Oct 2021 (46 comments)
Not-a-Linux distro review: SerenityOS is a Unix-y love letter to the ‘90s - https://news.ycombinator.com/item?id=28219800 - Aug 2021 (113 comments)
SerenityOS: Graphical Unix-like operating system with classic 90s UI - https://news.ycombinator.com/item?id=28206840 - Aug 2021 (129 comments)
I quit my job to focus on SerenityOS full time - https://news.ycombinator.com/item?id=27317655 - May 2021 (249 comments)
SerenityOS: Writing a Full Chain Exploit - https://news.ycombinator.com/item?id=26115141 - Feb 2021 (9 comments)
SerenityOS: A love letter to '90s user interfaces with a Unix-like core - https://news.ycombinator.com/item?id=23911180 - July 2020 (1 comment)
SerenityOS Update (April 2020) - https://news.ycombinator.com/item?id=23037581 - April 2020 (1 comment)
Introduction to SerenityOS Programming - https://news.ycombinator.com/item?id=22479132 - March 2020 (43 comments)
Pledge() and Unveil() in SerenityOS - https://news.ycombinator.com/item?id=22116914 - Jan 2020 (28 comments)
CTF writeup: First published SerenityOS kernel exploit - https://news.ycombinator.com/item?id=21918351 - Dec 2019 (2 comments)
SerenityOS: From Zero to HTML in a Year - https://news.ycombinator.com/item?id=21212294 - Oct 2019 (52 comments)
Serenity OS update (August 2019) [video] - https://news.ycombinator.com/item?id=20851356 - Sept 2019 (2 comments)
SerenityOS – a graphical Unix-like OS for x86, with 90s aesthetics - https://news.ycombinator.com/item?id=19986126 - May 2019 (179 comments)
Serenity OS Demo (April 2019) - https://news.ycombinator.com/item?id=19813417 - May 2019 (1 comment)
Serenity: x86 Unix-like operating system for IBM PC-compatibles - https://news.ycombinator.com/item?id=19537807 - March 2019 (83 comments)
rvz
Indeed. It's beyond impressive, especially the web browser from scratch and the whole idea of operating systems that are not typical, yet another Linux distro stuff and having an integrated consistent user interface and open source like RedoxOS, Haiku, Fuchsia, etc has.
But let's be a bit realistic, how long can we expect this to be a reliable daily driver on real machines and not stuck on a VM? It has taken more than a decade for one of them to even run reliably on several PCs and everyone is still waiting for another to not be ridden on a VM and actually run directly on real hardware. That is me not even talking about the apps there.
But if I have to choose one that will achieve all of that in the shortest time, then it would be Fuchsia wouldn't it?
loudmax
The challenge here would be getting all those miscellaneous hardware drivers to be ported to SerenityOS. Some hacker might write Serenity drivers for their particular desktop, but that won't do you any good unless you have the exact same hardware. A Raspberry Pi might be a good target, but Serenity OS is currently x86 only. So realistically, Serenity on random consumer hardware is unlikely to ever happen.
Fuchsia is in a similar situation. Google may start pushing Fuchsia on some limited set of hardware, but I don't see a reason for them to start writing drivers for anything other than hardware from Google or Google partners.
Now, I could see SerenityOS as an option inside of something like Qubes OS. Here, the hardware is abstracted so you could run it on whatever. There may be some limited security through obscurity benefit to running an OS so far off the beaten path.
Like you, I'm dumbfounded by the achievement of Serenity OS. According to the Readme, Serenity OS is "a system by us, for us, based on the things we like." I don't know that making Serinity OS a daily driver for anyone who isn't interested in hacking on it is an actual goal for Andreas.
akling
> I don't know that making SerenityOS a daily driver for anyone who isn't interested in hacking on it is an actual goal for Andreas.
My main goal is to make a system for myself to use. I'm not particularly interested in working on stuff that doesn't affect my own use cases.
However, SerenityOS is not a one-man project. There are hundreds of other developers, all with their own individual goals, each putting their time and effort into making the system into something they would like to see as well.
I have no idea what will come out of this in the long run, but it's the most fun I've ever had, so I'm just gonna keep going and see what happens. :^)
beepbooptheory
I think this misunderstands the motives of this project. Its not trying to win any popularity or usability awards.
I see it more as art honestly, even if it does end up having good utility, it will very much always be an encapsulation of this guys passion and expression.
Don't get too poisoned by the business world! Computers dont need to be just efficiency machines.
MauranKilom
(Skip to 0:40 for initial performance, and to 56:00 for when it turns snappy.)
ge96
Corecursive did a podcast with the creator, was interesting
Edit: originally commented on uploading frequency but looks like they only do once a month
dang
Discussed here:
Serenity OS: Interview - https://news.ycombinator.com/item?id=30214371 - Feb 2022 (52 comments)
amelius
By the way, I'd love to see a reference implementation of a web browser in a pure functional language like Haskell (it doesn't need to be fast, just correct). I actually have the opinion that the W3C should provide such a reference implementation.
losvedir
I found out about SerenityOS and Andreas since Andy Kelley retweets him all the time. Is Zig somehow a part of SerenityOS (or its future plans), or is it simply Andy respecting / signal boosting another systems hacker?
abnercoimbre
They're part of the same group of systems programmers aligned in their values of how to build software. Andreas was featured [0] at our conference that Andrew Kelley gave a talk for. (Though I believe they were friends before this.)
Someone mentioned BoksOS. That one is explicitly using Zig and made a conference demo [1] too.
AndyKelley
I'm simply respecting / signal boosting another systems hacker
joshbaptiste
https://boksos.com/ is a project OS being written in Zig
joeberon
No, SerenityOS is strictly C++
fabrice_d
Which is both very impressive given everything that is being produced, but also a bit scary and sad in 2022.
There is ample evidence that even very excellent developers and teams can't avoid the footguns of c++ and that leads issues down the line.
If we just look at the browser, they seem to make much faster progress than Servo, but there is no doubt it will have security flaws.
skyfaller
Feels like this might be an example of "worse is better".
Or alternately, that the community that SerenityOS has built and the joy they find in tinkering matters more than their technical foundations, in terms of getting something built that works and is maintained/maintainable. Servo looks like it could have been a technically better browser engine, but it seems the window for it becoming relevant is closing, while the future looks bright for SerenityOS's Browser. (I wonder how different things would be if Servo had reached the point where it was easy to run inside of a browser, in terms of dogfooding and getting people excited about it.)
What I would like to see is SerenityOS's joy and welcoming, vibrant community using better technology (in terms of security, if nothing else). Zig seems like a candidate for this, although people may debate its security features and technical merits. I'd love to see more projects like these.
dleslie
zig has many of the same footguns as C++ and C; it just has better developer ergonomics.
Use after free, double free, invalid stack RW, uninitialized data, race conditions, etc. They're all possible to be found in Zig programs, because the language doesn't provide assurances against them.
rvz
Not sure why you are downvoted, you are totally correct about the footguns that C++ has and why the same issues found in the other browsers will still apply here.
> If we just look at the browser, they seem to make much faster progress than Servo, but there is no doubt it will have security flaws.
Servo was supposed to be the promise of better security in a new browser thanks to Rust. Unfortunately in reality that was just either hype or it was just slow moving progress or perhaps both.
But yes the SerenityOS browser seems to be moving faster than servo whilst sacrificing security.
undefined
joeberon
The "AK" standard library that they use is extremely good and very dynamic. Much better than the C++ STL
Get the top HN stories in your inbox every day.
I don't follow web standards closely, but I'm curious if this comment is still true (or was ever true): "For people who don't follow modern web standards, a modern web browser getting 100/100 is actually failing tests. You should get 97/100, failing tests 23, 25, and 35."
https://news.ycombinator.com/item?id=18941348