April 25, 2019
The web is amazing. But it could be better.
To put a context, I currently would like to see the web as a full software platform, that competes with Windows or iOS in terms of what you could do with the technologies of the web. So what do I want?
Let’s start with something small.
Right now, it is not possible to style the checkmark part of a checkbox on the web. You can create your own and hack something together, sure. But you have to be very careful not to break things. This should not be the case. There should be a supported way to do it.
More importantly, while selects (and datalists) can be styled, the menu that shows when you open it cannot. There are great alternatives to the native components (for instance react-select), but they cannot be as good a native one for all the cases (and require an important open source effort to maintain).
So let us use the builtins by giving us more access to what they look.
I really like popper.js. It allows me to build tooltips and other menus without sweating too much. This is something that should also be part of the platform. Placing an object in relationship to another is a common interface use case. By offering a native solution we could have this work better and faster across the web.
Long lists of items, loaded dynamically. This is the core of most mobile apps. But we need to reinvent them all the time on the web. And this is far from something obvious to implement with many edge cases (and also, difficult to make performant).
Now this is a bit different, a pure javascript need. Operator overloading is the language feature in javascript that I miss the most from python. Why?. Guido wrote an great article about why operators are important.
I would add that this feature is what is missing for a good scientific community on javascript. This is what is missing for a nodejs sqlalchemy.
People are already working on it, cannot wait to be able to use it!
Last (but not least), I would like to be able to build any type of app on the web. Why is it not possible now?
First, there is no way to save data on the disk. Yes, IndexedDb is a thing, but it is not access to a disk in a POSIX way. I would love to be able to compile SQLite to webassembly and make it run for my app. I would like to have the same freedom to same bytes with random access on a disk so I can build my own file format for an audio editing app. This is a nice step in the right direction.
Same with network access. Imagine I would like to build a email PWA. Why is it not possible? Because you cannot have IMAP (or POP) in your browser, because you cannot access TCP sockets.
Perhaps when WASI becomes standard and available on all platform we will start to be there?
Discuss this post on Mastodon