Modularity.
I would like to see a browser that is designed as an engine, meaning that no UI/UX, or 'browsing' features are included. Much like a raw linux kernel in philosophy.
I would like this ideal browser to have interoperability with various JS engines, HTML and CSS renderers, as well as the standardized specifications for the underlying network protocols. It should be 'safe' by being written in languages where safety can be guaranteed ( with the exception of human error of course ).
In essence, if an open source core for a browser existed, maybe we could all work together and build the ideal browser.
"Ideal" isn't one thing. Allowing for personal customizations while following closely the standards make the base for implementing many "ideal flavors" of browsing experience.
I'm having a really hard time working out whether or not I agree with this idea. On the one hand my inner developer loves the idea. The notion that everything is a module, with well documented and robust APIs for communication between modules, is perfect. The browser could be all things to all people. But on the other hand there would be absolutely no additional value for a typical user. 99% of people (generalising, don't know the real number, but it's high) do no customisation to their browser. They don't even know they can.
A modular browser would only benefit developers, and we can already cope with delving deep in to the internals of many browsers if necessary. So is there really any point in a modular browser? Who would it be for?
Allow me to present an analogy between operating systems and browsers.
You can install Arch/Debian Linux or Ubuntu, and there is no collision there. You build your OS the way you want it or you run an automated installation and soon you are doing work, browsing, watching movies, etc.
My point is that if Debian wasn't what it is, you wouldn't have Ubuntu which offers additional value to a typical user, and be stuck with Windows forever. Choice is of value.
Do you want to be stuck with Firefox, Chrome etc. knowing how hard they adapt to real needs and ignore bug fixing in favor of new features?
A browser is not your 'typical' application. Browsers are in my opinion true virtual machines and should be treated as such.
I like the OS analogy, and it highlights the potential benefits well, but we also need to consider the downside.
It would load a huge amount of complexity on web developers. Rather than 5 browsers with a couple of versions of each, you'd need to start testing against a vast matrix of renderers, CSS engines, JS engines, chrome (as in browser chrome, not Chrome) plugins, etc, with versions of each and every one.
Testing software on Linux is hard enough that the economics mean an overwhelming majority of software manufacturers don't bother, or they do but they only support a very limited range of versions, or they release unsupported software that it's up to you to get working. That's definitely not something I believe we want to do for the web.
Well fortunately in the web we have already got standards committees. As long as those standards are supported there should be no problem.
Unfortunately current mainstream browsers don't comply with the standards to the fullest, although I admit compliance is orders of magnitude better than years ago.
Aren't Chrome only apps and web sites harming the web?
I agree with testing Linux software completely. It's maddening how much the notion of testing is ignored.
Well it's a win-win situation, build the ideal browser, then you have already built the "ideal" OS ;)
Yeah, it provides all the features of a browser without the UI for them. You embed the WKWebView (not WKView, I mistyped) in your browser app and call methods on it to load URLs, go back and forward, and so on.
Mozilla made a language in order to build their new browser engine, servo [1].
That language is Rust [2].
The reasoning was that we have been relying for too long on systems languages where memory safety [3] related bugs have caused a lot of exploits [C, C++].
In big codebases, like the browsers tend to be, bugs have many places to hide, and such bugs are very hard to spot. You can't rely on contributors being extra careful continuously, because everyone makes mistakes. So by using a programming language with a garbage collector or memory safety guarantees, like Rust, and enforcing extreme modularity, critical bugs are much easier to be spotted.
"Ideal" isn't one thing. Allowing for personal customizations while following closely the standards make the base for implementing many "ideal flavors" of browsing experience.