Web is hard. Implementing a compliant browser is a doomed enterprise unless you’re Google, Apple, or a whole Open Source community.
But there’s a new breed of browsers like Dillo that focus on a restricted set of Web features. And ignore a whole lot of other “bloat.” Which is a good approach, I think. However, there’s no list of actually useful features that are not “bloated” and thus should be included in a browser. (Consider this a kind of informal standard.) So here’s my list of essential browser features (likely to be updated often:)
A revelation: a browser does not have to be an app platform. It can be a mere hypertext viewer. Yes, you wouldn’t browse Facebook with this, but do you need to? (I know, not the best argument.)
So my idea of a baseline hypertext browser is that. Hyper… text.
smolweb HTML is an essential read for web devs. It specifies a “safe” subset of HTML that any browser can easily implement. And that actually does not ignore Accessibility, like many other proposals.
The only problem with smolweb HTML is that it’s… not HTML? It’s XHTML, which cuts out a lot of useful historic shortcuts, like implied end tags. So my perfect HTML subset is smolweb + lenient parsing. Quirks Mode, basically.
God I love CSS.
I am a heavy
So my recommendation is this: stick to
grades A-C of smolweb CSS.
Should be enough for basic styling.
Without the need for essentially a
Turing-complete styling engine.
Dark mode, in the simplest instance.
And the ability to override all page styles, in a more complex instance.
Preferably supporting
existing userstyles formats.
Even a barebones hypertext browser needs a way to communicate with servers.
There is a tool for that: HTML forms.
Supporting these is enough for basic interactivity.
(A minor pet peeve: please support
Add Invoker Commands to that
and you have an actually modern declarative interactivity in a browser.
I mean, Invoker Commands are popover-heavy, which defeats
the point on CSS.
But they are a good direction anyway!
Browsers had these for a whole eternity.
We don’t want to abandon these:
I know, I know, these are too recent!
However, they are useful and lightweight and can be implemented in a JS-less browser.
So why not have nice things?
Processing instructions
(euphemized as Out-of Order Patching by Chrome)
and
There might be different keyboard navigation features:
This post is a hodgepodge listing of features I want to see in my dream browser.
I know, it’s quite chaotic!
And it does include both ancient features and really recent ones.
So I dunno… maybe implement these if you’re making a browser?
Userstyles!
Basic Interactivity: Forms and Commands
Essentials
History
DOM Modifications: Processing Instructions and Declarative Templates
Keyboard Navigation
accesskeys as quick keybinds created by the page author.
Mandatory.
Totalling to a Proper Browser