4 ms·
For me a perfect web browser is something hackable, made of tiny replaceable blocks (buzzword: microservices) as small as realistically possible, not a single b
by drdaeman 9y ago
For me a perfect web browser is something hackable, made of tiny replaceable blocks (buzzword: microservices) as small as realistically possible, not a single binary. Everything I saw are basically monoliths. Even Surf and uzbl are, except for they move tab management and UIs away.
Would, e.g., persistence (cookies) be handled by a completely separate program, that just talks text-based protocol on the stdin/stdout, all sort of stuff (containers/multiple identities, self-destructing cookies, various tracking protection mechanisms, etc etc) would be a matter of wrapping it.
Would all networking be done by a separate process, adblocking (even in-websocket), experimental protocols (like IPFS), ensuring all the traffic would go through Tor, or just "user agent switcher" would be possible without core being even aware such things are possible. Caching could be an another program that facades this.
And non-core stuff, like history, bookmarks, saving passwords or syncing feels like something that should be separate programs that only interact with the core to obtain or inject the necessary information.
Of course, there needs to be a manager process that spawns necessary services (including extensions sitting in the middle, so it's also an extension manager, not just tab manager) and routes communications between them, so user doesn't have to do any programming unless they actually want to.
That's not a design, just a general idea^W^W some musing that mostly came out of frustration when I've tried to hack upon Firefox code, trying to rip out their accounts+sync implementation and replace it with something sane and simple.
I'm dreaming of this kind of thing for a few years, but haven't got anywhere - just greased some paper with silly diagrams and toyed with Servo a little bit, but nothing practical. Just writing this because I never saw similar suggestions and maybe it would resonate with someone.
- kevingadd 9y agoChrome is already built this way - tons of independent services running in separate processes or threads with limited permissions. The problem is that all the systems are deeply interdependent, so debugging or modifying the system involves reading and understanding the whole codebase.
- skrowl 9y agoToo bad you can't remove or disable the spying microservices
- MildlySerious 9y agoI imagine Chromium would be to your liking?
- odilitime 9y agoYes, I was thinking microservices too. And composeability (the unix philosophy), any way to break up theses monolithic beasts into more manageable pieces. I'd really love if we could define some standard data structure and protocols. I'm working on a threaded-prototype of netrunner where messages are passed between each other and could even be move out to IPC or even the network. Also why I'm thinking this project is more like electron. And a browser could be built on top of that. We've had a couple webkit developers tell us how hard it was to hijack some seemingly simple behavior. Interesting to hear that Firefox is the same way. I'd love to compare diagrams.