Ask HN: What would you want in an ideal web browser?

104 points by mod50ack ↗ HN
I'd think customizability and security are top concerns, what do you think?

249 comments

[ 3.9 ms ] story [ 299 ms ] thread
no ads in any form
I agree, the browser shouldn't contain ads, but an adblocker is also a basically essential extension that many of us use.

Myself included.

It's basically impossible not to these days.

Nowadays I refuse to fix anyone's computer without installing ad blockers in all installed browsers.

I'd consider it professionally irresonsible to let a non-technical user loose on the web without a good ad blocker. It's just too dangerous out there.

And then you're left with advertorials which are harder to detect.
Also, I feel like inspiration from the early web browsers should be taken. Tim Berners-Lee's book "Weaving the Web" fascinated me and I think that we can learn from both the current and the oldest designs of browsers.
When a link is opened in a new tab, that tab should keep the history of the tab it was opened from.

There used to be a Firefox extension for that, but that now doesn't work anymore because of changes in Firefox. Chrome closed a feature request for that with WONTFIX (https://code.google.com/p/chromium/issues/detail?id=1639).

EDIT: Oh, and also a simple user-friendly way to block autoplay of all audio and video elements. Maybe a "quiet mode" switch or something like that.

The reason why I originally switched from Firefox to Chrome was because Chrome was minimalistic and very, very fast - a chrome for the web.

Now I'm seeing Chrome become bloated, and slow. On top of this, it's now trying very hard to identify me by asking me to sign in with my Google account.

I want my next browser to make me forget that I'm using a browser in the first place, and also to not care about my identity.

Anonymity should be a choice, especially at the browser level.
Why not Opera? The new Opera is Chromium with what I think is a better design[1] that respects your OS[2]. You don't have to sign in to sync, but you can if you want. It's not open, but they're not an ad company. And finally, it's said to be faster than Chrome.

[1] I prefer Firefox so I use the FxOpera theme

[2] Well, it tries its best on Linux (unlike Chrome), but it's near perfect on Windows and Mac OS

Trying Opera now, turned off after 5sec b/c it uses an 'installer' in OS X instead of drag&drop to apps.
Weird, I have an iWork DVD with an installer. Should I just throw it up after discovering it doesn't use drag&drop, without even trying the app?

Many programs do that, even Apple ones: iLife, Microsoft Office, Adobe Creative Suite, etc.

Yes, because it manipulates the system in some way beyond copying the app to app, it's often hard to deinstall without traces, hard to keep two versions side by side etc.

So if the pain of the installer is larger than the added benefit of using Opera vs. Chrome, then yes.

Really? An app can still freely write to ~/Library and cause all the problems you just said. The installer is the wrong thing to object to...
The installer is a strong indication of this behavior.
Sounds like you might want to give Firefox a try again then – it’s much better now than in the 4.x days. Or if you’re on a Mac Safari is pretty slim (although slightly lagging in JS abilities).
Thanks, I will give it a try again. :)
Google Chrome is pretty close. Some extra things I'd like:

* Fully open source, with clear and open licensing.

* Extensions with a permissions system that works at multiple levels of granularity. So I should be able to trust an extension but deny it some specific things (without breaking it.)

* A headless mode, with python/ruby/other bindings, so I can use it as an automation library.

1. I totally agree with the open source part. Although I use a closed source OS often in everyday life (OS X, so at least it's a *nix) I'm a big fan of Linux (which I use on the side, and way before Windows) although personally I like the MIT and BSD type licenses over the (L)GPL

2. Granularity is a great thing to have as well. Extensions could maybe be broken into multiple sections, so you could have a- Permission to inject into page 2- permission to access saved passwords c- permission to access local files etc etc etc, and then you could set its local file root or what sites it can run in.

3. A headless browser sounds pretty great but with the nonstandard essence of web design I wonder how one would use it usefully in automation.

In answer to 3 - ideally in a way similar to http://www.nightmarejs.org/, well worth looking into if you've never played with a headless browser before
Interesting, I'll be sure to check that one out!
configuration. I want to be able to add more results from history to address bar. Don't want google autocomplete.
Its development should be managed by a group who are not concerned with generating money from advertising/tracking or any other privacy reducing endeavors. A group who put user privacy and security at the forefront of every decision made.
I agree. There should be three main aspects of a web browser's development team's plan.

1. Stability and Features

The browser should be stable and free of major bugs, reasonable feature requests should be fulfilled when fairly trivial or found to be important. Programmers should be knowledgable in the language the browser is in. Personally I'd write it in C++/wxWidgets, using Blink as the engine since that's the most popular and compatible renderer it seems.

2. Privacy and Security.

The user's ability to control their information should be key, and it should be kept locally unless the user explicitly chooses to send it off.

3. Customizability

The user should be able to make changes to how the browser operates through extensions, userscripts, userstyles, etc.

I want a web browser that let me open multiple accounts of a similar site at once.
I've always thought the same. It'd be great to have a browser that allowed fully independent sessions to be running simulataneously
Chrome has this feature with dedicated profiles, and you can accomplish this in firefox pretty easily using some good extensions.
Yeah, but that's really a hassle and such a workaround shouldn't be required.

And firefox's extensibility is great as usual, but its bloat and the new UI and the ads on the tab pages disillusioned me

In chrome, you can make a shortcut for a profile by providing a flag --profile-directory="YourProfileName" It will be created if it doesn't exist and you can even set it to point to a TEMP folder for throwaways.
(comment deleted)
Firefox can do this with separate profiles too, so long as you also include --no-remote with other instances.
You can do this in Chrome, already.
Could you elaborate, please? (link, pointers?)
Opening new incognito tabs/windows will let you log on with different accounts in each window.
(comment deleted)
(comment deleted)
No, cookies are shared across incognito windows (try gmail.com)
Ah, didn't realize that. Thinking about it, I've only used this 'hack' to have two different gmail accounts open at the same time (one in normal, one in incognito).
No we can't. Please don't suggest to go incognito.
There' a user switcher button in the top right corner, you can have multiple browser sessions with seperate histories / cookies (e.g. work / personal)
See the history as a tree, not as a list, so branch points can be preserved and you can navigate back over everywhere you've already been.

A detailed development roadmap.

Privileged browser Apps and Extensions working on mobile. C'mon, it's 2015! ( no PhoneGap required )

An automation API.

The same really committed team who optimized V8.

Source on GitHub ( not necessarily all of it mind, some can be privileged access, tho a place to post issues that is no more code.google or crbugs, just, why? ).

A history tree seems interesting

A dev roadmap is just a general program requirement. Not specific to web browsers but good.

And you're right about mobile and extensions. There's no need to restrict when you don't have to! For a web browser on iOS, sadly you have to use Apple's engine but that's workable with js injection for extensions. And of course on Android there's no problem. I like that iOS is opening a little (I have an iPhone) but I wish it was more open like android, that way jail breaking would not be required for a lot of features. The one good thing now is that they're letting you side load apps from source with Xcode 7 without paying, but it's some michigas to go through. Mobile platforms are weird.

There is an experimental browser project which was created for this very reason (tree-like history): http://rainbow-lollipop.de/ (page is in English)
Cool. And of course github at the moment is the best out there for open source. And open source is a must.
For automation API you probably want a way to record actions and replay them like Excel macros? If you look for scriptable automation for Chrome then http://phantomjs.org/ might be a step in that direction.
For a history tree, something like FromWhereToWhere¹ and Session History Tree²?

A roadmap like this?: https://wiki.mozilla.org/Platform/Roadmap Curious why you want one though?

For an automation API, would the RemoteDebug APIs³ work, or perhaps the command-line⁴ API for Firefox? See node-firefox⁵ for an example of using the RemoteDebug API to automate some functions in Firefox.

What makes you perceive the V8 team as more committed than other teams?

You can use your GitHub login to sign in to Mozilla's Bugzilla⁶, is that not enough of an integration for you?

1: https://addons.mozilla.org/en-us/firefox/addon/fromwheretowh...

2: https://addons.mozilla.org/en-us/firefox/addon/session-histo...

3: https://kenneth.io/blog/2015/03/12/remotedebug-one-year-late...

4: https://developer.mozilla.org/en-US/docs/Mozilla/Command_Lin...

5: https://github.com/mozilla/node-firefox

6: https://bugzilla.mozilla.org/

I watched a couple of video presentations V8 did about optimization. It was really coherent. And their skills were really advanced. Also, visceral experience of the speed and stability of Chrome.

Also visceral experience deving Chrome apps and extensions ( man, I love their clear APIs ) versus doing the same in Moz with XUL ( omg, die ).

Browsers are as much about branding as anything, and I'm never going to come to the Mozilla camp. I don't believe a browser works to be a political cause, nor do I believe Mozilla is anything like the narrative they have about it. I mean what the hell is the committee of the Mozilla foundation doing? Wasting time with meetings about the grandiose purpose as a "movement", instead of making a better browser.

They pretend they're so "righteous" and yet all that pedantic dogmatic nitpicking and differentiating themselves is actually costing a lot of efficiency, which doesn't work for people who browse or for people who code.

Aside from that, I like the way Chrome does JS, and I don't like the way Moz does. Custom Elements, c'mon!

The masses have voted anyway. Chrome FTW.

Your answer was clear, it just seems we're on different sides of the browser divide. I wonder why there's so much loyalty? The browser is such an important piece of software.

Full text history search.
Through caching pages? Fetching on the fly?
Caching might be the best way to do it.
Better bookmarking.
How so?
I book mark often. Unless you have rigid discipline your bookmarks will end up as a huge confusing list. Current bookmark managers feel like an afterthough. <tinfoil>Google don't want you to use bookmarks. They want you to search so they can mine data and serve ads</tinfoil>.

I'd pay money for a book mark manager that could organise my list of about 2,000 bookmarks. That software could have a "bulk bookmark import" feature so that users can share some set of bookmarks. "Here is my list of best pages about $ANIME_SERIES".

A bookmark manager that looked a bit like Pinterest, and that has options to locally save some content, is something I'd pay money for.

It's hard for large browsers to improve bookmarks because people use them in such varied ways. Changing bookmarks to work more like Pinterest may work well for you, but it may completely break someone else's workflow.

One solution would be to let you install third-party bookmark managers which would replace the built-in bookmark UI. That seems even more ripe for abuse than features like custom toolbars, though, which are already heavily abused in current browsers.

You think 2,000 is a lot?. I have over 20,000!
As such a heavy user of bookmarks that I pay cash money for a 3rd party bookmark manager: literally any improvements would be great. The built-in bookmark managers of browsers - especially mobile ones - are incredibly anemic.

EDIT: The bookmark manager I pay for is called Linkman - http://www.outertech.com/en/bookmark-manager. I first bought it around 10 years ago and still use an old version, so unfortunately I'm neither up-to-date with its present capabilities nor the current landscape of 3rd party bookmark managers.

What do you like most about Linkman compared with the default bookmark manager in your browser?
Using Firefox and bookmarking heavily with giving tags to my bookmarks. I would like to have a bookmark simple search language that allows me to combine the tags and narrow down the results, for example:

give me all bookmarks that are tagged "tools" AND "unix" AND "visualization" AND (NOT HAVING "monitoring")

There is an add-on called "tagsieve" that I used heavily, it had a nice visual possibility to filter the bookmarks with a tag cloud - though it didn't have a search language. But throughout the years often it was not compatible with new Firefox version (just see that it is installable again).

should be simple and easy to navigate, understand what i might do.

Even if i open many tabs shouldnt freeze or crash, Thats one of the most important thing i care about, Mostly firefox does that, keeps crashing if you open many tabs.

Would be great if allows to sync with mobile, like if i enjoy a website and display right away on my mobile, instead of using extension it should the out of the box. We are living on a mobile world now.

A browser where the security updates aren't married to "interface enhancements".

Just give me the security updates for the version I have, because I don't want your designer's latest idea of what a browser should look like, and unwanted new features forced down my throat with the security updates.

Choice about what new features to install - much like Windows updates, would be nice.

At the very least provide ways to keep things working and looking exactly how they are at the moment. Needing an add-on to bring back the status bar in Firefox is a joke.

Keep a separate UI and backend component and this should be trivial.
Unless the security update is a change to the UI.

Such as, make it easier for people to visit self-signed certificate websites, instead of the disaster that it is now.

Ive had friends not able to get by the "error warning" pages to see the photos on my self-hosted and self-signed encryption on my own site.

Id rather have everybody being able to MITM my self-hosted site, than only government agencies (because why would I pay for a ceritiface when any NSA compliant CA can then MITM that same "secure" connection, its false advertising on behalf of browsers, that somehow a CA signed certificate is worth more than self signed).

Bookmark sidebar as in Firefox (the thing I miss most in Chrome)
Scalable tab management. Being able to (name) group them without restrictions and being natively implemented on the browser without separate screens etc.
Usable keyboard navigation based on relevant elements.

Textareas that don't suck.

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 agree. I don't know what you mean by a safe language though.

I do realize an ideal browser is different for everybody, but I wanted to know what many different people thought was interesting

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.

[1] https://github.com/servo/servo [2] https://www.rust-lang.org/ [3] https://en.wikipedia.org/wiki/Memory_safety

Correct me if I'm wrong. Isn't this webkit?
Isn't WebKit the rendering engine itself?

The "ideal" core I was talking about should be able to use WebKit as a rendering engine.

If no 'browsing' features are included, isn't what you're left with the rendering engine itself?

It seems like WebKit's WKWebView (or WebKitWebView on gtk, or ewk_view on efl) is pretty much what you're asking for.

Edit: WKView should be WKWebView, sorry

By no "browsing features" I mean something closer to a headless browser. Just a library. Is that what WKView is about?
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.
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.

Choice is of value.

Choice also has costs.

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 ;)

Compatibility with others browsers code.
Skip all those features, just give me speed, a lot of it.

Plugins would be great (I love vimperator) but speed and efficienty is the real deal here.

Speed's a difficult thing to achieve, depending on your setup, how many processes, RAM free, etc
Chrome with Vimperator would be great.

(And yes, I've tried all the Chrome alternatives and they are not as good)

MOBILE: when I zoom a page the browser should treat this the same as if I change the window size on a desktop browser, and reflow the text. Mobile browsing is a really lousy horrible experience because there are some conflicting philosophies.
That should be an option. For example in my experience that kind of thing would be devastating to me
No. It should actually limit horizontal reflow width inside element to screen width. That way you can always read a passage of text by using only vertical scrolling.

In other words, a block element's internal flow width should be restricted to screen width, so that a row of inline elements inside that block can never be wider than screen width.

In other words, text columns should flow at screen width.

Just doing what desktop browsers do would squish the text in a very narrow space. Not desirable.

For me, this is the single most important feature in a mobile (phone) browser.

Apart from customizability, security and decoupling of UI changes from API/perf/security fixes:

- Option to stop all audio/video in all tabs

- Lazy session restore

- Reliable "save for offline viewing"

- Decoupling of "read later" from bookmarks and a separate interface for both

Going wild:

- Automagic unloading, archiving and clustering of opened tabs, perhaps with an auto-extraction of TL;DR from long articles

I very often open lots of pages (from HN etc.) but have no time to read them all at the time of opening. They linger as background tabs until the background tabs count is so big so I have to close them all and probably never come back.

Would be cool if the browser was able to somehow unload and archive unused tabs (to free some memory), and perhaps automatically group them into several categories: say, "angularjs", "bash", "youtube", "news" etc. and provide a good interface to return to them later.

However due to sheer amount of links I follow, my problem might be unsolvable :)

solutions to some of the things mentioned above, that people are happy with and using?
For session restore, I use (on desktop) Firefox + Session Manager + BarTab Lite

"Save for offline" is quite good on Opera for Android

Zotero [0], with browser connector (extension), or alternatively a bookmarklet. Originally intended as a research tool to manage sources, hence the added benefit of being able to export collections as BibTeX.

[0]: https://www.zotero.org

Basically Opera 12 or pre-Chromium Opera in general..

- Obvious things like encryption support, tabs, full cookie options, (customizable) "smart" address bar, speed dial, history, favourites, optional synchronization, extension support, spell check...

- heavily customizable UI,

- plenty of other customization through settings or Opera's neatly done opera:config,

- easily togglable (is that a word?) side panel with M2-style lightweight E-mail client, notes, history, page info, and whatnot,

- detailed page loading (speed, domains, amount of transferred data) and file download information (what, where from/to, when, how much),

- in-built "plugin-on-demand" and noscript,

- Dragonfly (I just can't seem to get used to Chromium's developer tools),

- easy image properties ( http://puu.sh/jEqjh/ab197d996e.png ),

- mouse gestures and switching between tabs with right-click + mouse wheel up/down or something similarly effortless

- tab stacking,

- and last but not least: if you want to make money off me, instead of sneakily tracing where I go and what I do and partnering with Google, ask me for it on first start and maybe with a discreet "donate/subscribe" button on the start page / speed dial.

...

Things that would be just nice:

- tab sandboxing

- their own rendering engine

- Unite

- One process per browser, not tab

- "reading mode" as seen on WP IE

...

I guess I want more of a browsing bundle, heh.

I would second the wish for a return of Opera Unite. I thought their vision for what Unite could be was incredible and I was really sad to see it go.
Yep, same. I considered that to be a rather revolutionary feature. Even if it was standalone I would use it as I haven't seen anything similar yet.
Opera Unite would be a killer app with support for CloudFlare, so the pages would remain online when our computers were off, and auto sync of everything when the computer comes back online.

Also, with something like wordpress with themes and all the other silly things that made wordpress popular.

Chromium developer tools are very good, and the smartphone preview functionality is killer, but for really obscure JavaScript issues only the Dragonfly error messages made sense. They were clear an to the point every single time.

I remember the JavaScript that ran in Kestrel bug free, would run everywhere bug free.

Now, about mouse gestures and switching between tabs with right -click + mouse wheel, you can do that just now with Vivaldi. It only needs synchronization and supporting extension icons to replace Chrome in my computers.

Yeah, I use Vivaldi as my tertiary browser (or rather sometimes Vivaldi, sometimes Pale Moon, sometimes SeaMonkey) and I'm keeping close eye on it. It's still running on top of Google's code though, isn't it? :/

As for Dragonfly, it has "Resources". Chromium developer tools have "Sources", but I can't even tell if those things from Dragonfly's Resources are there. Mobile preview isn't very important for me as I use these tools for analysis and data extraction instead of actually developing, heh.

Anyway, a lot of the features that are critical for me are still missing and even if that was just the image properties windows, I won't uninstall O12. But Vivaldi is also missing (from those things I listed) other than Dragonfly also loading feedback, proper config (though it has vivaldi:flags, which seems to have extended from the last time I was there), structured history, the window bar doesn't say the page title, downloads are basic, ... all maybe tiny details to some, but they're huge quality of life improvements for me daily.

More light weight. Less memory consumption, less processor usage and faster. As far as it can go.

Firefox was built on that ideology. Until it became the same monster that it was supposed to replace. The same thing is happening to chrome.

Less memory consumption is often at odds with less processor usage. For example, a browser can consume a lot less memory if it doesn't cache decoded images, etc. But then the engine needs to decode same images over and over again.
From a previous HN post - I want a browser standard for an easily optimised subset of html technologies. To conform to this standard, pages would be restricted in the ways they can manipulate the DOM, have a simpler DOM, use only a small fraction of CSS properties, and not use some JS features e.g. eval, delete.

We can use the asm.js model for opting in. Browsers that support it run the pages super fast, other browsers run them just as fast as usual.

A browser engine supporting just this standard would be considerably smaller, more embeddable, and a nicer base for current webkit based apps (e.g. spotify, steam, or atom). It might also help apps that want to use something like webviews for embedding content but need to be careful with memory / performance.

(comment deleted)