Hacker News new | past | comments | ask | show | jobs | submit login

> A modern browser is effectively on par with an Operating System complexity-wise.

I don't think this is even remotely true. Those same arguments (using apis, good security, good ui, speed, etc) could be made for any piece of non-trivial software. But there's no way a browser is "on par" in complexity with an operating system.




I maintain that. Actually I think a modern browser is probably more complex than many small kernels.

It's probably not the best metric but my checkout of the Linux kernel (a very advanced OS with support for many architectures and devices) is at about 14 million lines of C code (per sloccount), although if you remove device drivers and only count the "core" of the kernel you end up with about 3M lines. I don't have any browser source code available on my computer but a website[1] says that Firefox 20 (released in 2013) was around 4M lines of code and was rising quite fast.

Again, this is comparing apples to kernels but it shows that it's still within the same order of magnitude as far as code size is concerned. The maintenance burden alone on these large codebases is huge, you need teams of engineers just dealing with things like testing and regressions. The bar is extremely high for competition, you won't have two clever engineers write the next killer browser in their basement.

[1] https://almossawi.com/firefox/


Consider the complexity of supporting all the dozens of CPU instruction sets and a few dozen more built-into-the-CPU hardware peripherals/extensions (e.g. SSE, hardware random number generators, etc). There's probably a thousand different combinations thereof across x86, ARM, MIPS, etc. There's only so many different kinds of hardware out there (and half as much quirky bullshit if you take out all the Sony laptops!)

Now consider how many websites that exist with all kinds broken code, use of dead APIs, old versions of, well, everything. Yet a modern browser can display those sites just fine 99% of the time. Users expect this!

Making a modern browser that works across all those nearly infinite combinations is considerably more difficult than making a kernel boot on a new board with a plethora of datasheets out in the wild to download at your leisure.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: