Hacker News new | ask | show | jobs
by Devasta 1633 days ago
No one asks if Excel or Hearthstone or Git or other desktop applications have progressive enhancement, it's unfortunate but these days no one should be asking it about web pages either.

The web is an application platform, it stopped being about documents years ago. Whatever you may feel about Xforms, its spec was published nearly 20 years ago and even now HTML forms still cannot do something as basic as a PUT request without JS or workarounds.

It's clear that browser vendors expect you to use JS for basic functionality, and for document distribution you'll be using PDF anyway so why try to pigeonhole the web onto something it is not? What's to be gained by pretending otherwise?

6 comments

> The web is an application platform, it stopped being about documents years ago.

No, it's both. The problem is people not knowing which type of site they're creating and making an app when all they need is a page.

> for document distribution you'll be using PDF anyway

This is true and it makes me really sad. HTML in particular, and the web broadly, is really good at document presentation and distribution. I see PDFs every single workday that should have been a tiny, readable, mobile-friendly-by-default HTML file.

Weird, because I still look at plenty of regular websites that aren’t applications. And reading on the web is much better than a PDF.
Desktop GUIs were making great inroads until the push to put everything on the web arrived. HTML/CSS/Javascript was never meant to build these types of apps. That's why it is all popsicle sticks and glue. Javascript was almost toast until Google brought it back from the dead.
> No one asks if Excel or Hearthstone or Git or other desktop applications have progressive enhancement

I do. I stopped "upgrading" most applications years ago because they only became worse with each version. Excel probably peaked in 2003, arguably 2010. Anything beyond that is frustrating ribbon-UI garbage IMO.

> No one asks if Excel or Hearthstone or Git or other desktop applications have progressive enhancement

I do! Yes, let's talk about native apps and documents!

https://news.ycombinator.com/item?id=21347067

https://news.ycombinator.com/item?id=21639043

https://news.ycombinator.com/item?id=23607320

etc...

----

Can you imagine how great it would be if nearly every graphical native app on your computer had a pure-text representation of its state that you could query/extend/manipulate? Or if you launched an app and it was missing a dependency and it launched anyway and just disabled a small amount of functionality related to that dependency? Some applications already kind of do this with their dependencies (Firefox will launch even if you don't have a GPU or video codecs installed), but it would be great if they did it even more.

The divide between applications and documents has always been a lie. Most (not all, but most) native apps are interactive documents, they are documents that change when you do something to them, and that are just styled to be displayed in 2D space instead of as pure-text trees. There are very few native app interfaces on my computer that couldn't render out to HTML or something similar. And it would be amazing if native apps were rendered out as pure-text XML/tree-based documents, that would be so useful. It would be even better if there were system-wide conventions for things like links/buttons inside of that tree that could be specified declaratively and that were user-inspectable. That would be a big improvement to accessibility and extensibility for application UIs. It would be like having CLIs for everything, but even better.

Applications are documents, and documents are often interactive. There is no actual distinction, it's just a gradient of how complicated the document is and how often it updates.

This is my pet-cause and at some point I'm going to finally snap, sit down, and write an extensive manifesto about it. Basically every single native app on my computer should work headlessly, should implement progressive enhancement, and should split out declarative representations of state that can be styled and intercepted by other programs.

Native app developers have gotten hung up on the bad parts of the web and the bad parts of HTML/CSS/Javascript (admittedly there are a lot), and it's caused them to completely miss the revolutionary idea that Unix already proposed all those years ago -- that most apps should output human-manipulable text formats that users can inspect, restyle, and pipe into other programs. HTML is the next evolution of that idea, and native developers are so hung-up on the details of the web that they've missed the broader picture and are stuck in the past in how they think about UX presentation. Even worse, they've started to push those outdated ideas onto the web; instead of taking a step back and trying to think about how to make more modular and more inspectable interfaces, instead of thinking about what a better implementation of HTML for native apps could look like, instead they argue that the web itself should do away with these concepts and just render out blobs of pixels compiled in WASM threads.