Stop Breaking the Web
ponyfoo.com
ponyfoo.com
I also agree that web site/web app is slightly different, but: there are blogs and sites that load, show a blank page, then fade in some animation/spinner while loading fonts, styles and more scripts and then slowly fade in the content. However, if something goes wrong (font doesn't load, JS blocked, etc) you see a blank page with a spinner forever. HOW is that progress? That's just awful.
I recently decided to start a little blog[1] using the static site generator hugo[2] and I don't feel like I'm missing out on anything. Well, you won't be able to load the disqus comments and have no code highlighting without JS, but that's it.
With a 50k connection at home I simply can't accept waiting 3+ seconds until your site loaded its 500kb of JS and 4 different web fonts to finally show something.
Although I'm pretty sure the download size from a CDN is far less important from a performance standpoint (within reason). More important things include: - Time to first byte from a slow'ish server (.5s to create the HTML and .5s to deliver). - How many separate requests you are making (somewhat going away with http2)
Can we start ranting about the excessive amounts of tracking pixels everywhere now :)?
If anything I'll abandon the site.
Still not a positive outcome.
In a world where you have too much data and users want to see slices of data, progressive enhancement fails to deliver a fast, pleasant, engaging user experience. In the case, where you have complex tools that help a user meet some end goal more quickly progressive enhancement falls short of providing the easy to use tools. The only case where this works in any way shape or form is when a site is submittable via simple forms and all data can be retrieved by visiting urls. Any, slightly more complicated use case fails to be delivered at any reasonable pace with any sort of reasonable performance. You know the kind of performance that wouldn't make your server side fall over.
This whole progressive enhancement thing is mired in decade old dogma. While progressive enhancement can work sometimes, it is NOT the only tool. We shouldn't wholesale prescribe solutions without knowing someone's problem.
And progressive enhancement makes perfect sense for things like CSS; if your site content makes no sense with CSS turned off, it probably makes no sense with a screen reader. So, for instance, remember to put content in a sensible order in the HTML rather than arbitrarily rearranging it with CSS.
However, I no longer think progressive enhancement makes sense for things like JavaScript, as long as you use features just about every browser supports. Otherwise, you'd have to effectively write your site twice: once with JavaScript, and again as entirely forms/links and server-generated content.
The critical reason why I no longer think this makes sense: because it's completely sensible to follow an API-first approach to site design, where the first thing you write is an API usable both by third parties and by your own first-party site. Then you can write your site on top of your own API. I don't think we need to target human-readable first; on the contrary, I think we get a better, more extensible, more programmable, more open web if we build APIs first and foremost.
Now, all that said, there are other ways this article is completely right about not breaking the web. In particular, having an app is no excuse not to have a website, or one not usable on mobile. And if you're going to display a "you might want the app" banner, have a "go away and stop asking me" that does not break navigation to the specific page the user was trying to visit in the first place.
We already had a programmable web. If anything we are moving away from machine-readable code.
If progressive enhancement does not fit your development style, and takes too much time to build, well... fine. I see this not as a fault of progressive enhancement, but in your approach. To me it is akin to saying that writing unit tests takes you too much time, and hence, testing makes no sense.
The "first load" problem is a recent addition to the canon of reasons why progressive enhancement is a solid approach. I think that trashes your argument that this is "decade old dogma".
And to further counter your point, the notion that "decade old dogma" is "bad" is refuted by success of POSIX/UNIX. And wheels. Some "old" ideas are still state of the art.
An "application" can be built using progressive enhancement. The OP even describes ways to approach this. There were applications before there were AJAX or Angular. Their experiences leave a little to be desired, sure, but they were certainly usable. A basis in simpler, server-centric interaction with enhanced, client-side experience jazz is still more in-keeping with "how the web was made", and with how it is consumed.
If Taco Bell decides to close their web site in favor of an app... well, a rant is going to change that, no matter how strongly worded. Blame consumer capitalism or PR firms or whatever.
It's frustrated prescriptivism. As a voice in the discourse, I suppose it has its value.
If you want to view another object, you have to request another slightly different big string.
Because of how resource-intensive it is to assemble these strings, programmers deployed "caching software" to memoize every big string that came up. Server hardware was loaded with RAM so that they could store a lot of big strings.
- - -
The new approach is to send the basic code of the website to the client the first time, then have the client make additional requests for data via AJAX, assembling the UI as it goes. Sanity.
Most of the web sites that I get value from really just need HTML and CSS.
That said I don't mind waiting for rich web email clients, web version of Office 365, etc., that I leave open a while.
Complex web pages that are really just showing content also eat up a lot of CPU and memory resources.
I'll plug my little strike back against the insanity:
You can build a highly dynamic web site with normal URL schemes, sane HTTP caching behavior and zero client-side templating.
I need to do some more work on making it meet progressive enhancement goals, but I'm convinced this is a better approach than heavy client side logic for most web applications.
As a web application developer whose bootstrapped startup needs every user it can get, let me just say: I am perfectly willing to forgo all IE6 traffic.
You actually should bend over backwards to cater to as many users as possible, especially if you are getting paid to build websites for users.
Some countries require sites to be accessible to the disabled. If you design sites for the US government, they should also be accessible to 0.1% of blind or no-script users.
Sure, IE6 as a baseline is very progressive, but it is certainly doable. Less so, if you start with an inaccessible website and catering to as many users as possible is an annoying time-consuming afterthought.
If you can not muster an accessible progressive enhanced website, then you can not muster a js-only ARIA compliant website either. Your only hope is to make something profitable. That's being a marketeer or business man with a little HTML skills, not being a solid web dev.
IE6 is a bad low standard. But it remains a target which in accommodating it also addresses many other low-capability browsers.
I don't use IE6 myself (though had, some years back on Linux, to access work-related and Intranet sites on occasion). Currently my main beef is that my, yes, ancient, Android 2.2 browser is utterly normed on many sites. Including no font downloads, so no text at all, on far too many websites. Wired and Medium among many others. Obscuring sidebars elsewhere.
Really annoying.
TBL's original HTML docs remain quite accessible however.
- annoy me for their benefit
- spy on me
- waste my battery
- waste my bandwidth
interesting these companies don't seem to care much about gaining the trust of their customers or actually serving them in a convenient fashion.Google are steering progress toward HTTPS and app-add interstitials, for example.
[1] https://jakearchibald.com/2013/progressive-enhancement-still...
- Code all HTML and internal CSS by hand
- Use a CSS framework
- Use something like Bootstrap or other aesthetic rendering powered by javascript/jquery
The problem seems to be that the less work done by the designer means increased reliance on Javascript or external engines that then cause additional overhead, bandwidth, and possible breakage for people using NoScript or AdBlock. And to be honest, I'm sorta on their side, as it seems silly that a single website needs to reach out to three or four outside domains just to style the page properly.
What's the solution here?
You can build dynamic websites with minimal or no javascript and just use the same old techniques you are used to.
Blocking content until a large JS file is downloaded, at least one more ajax request is made, and another round of downloads occurs is unacceptably slow in a developing country.
Isomorphic applications or server side rendering gives a company a competitive advantage in these markets.
Look specifically at WIX sites, Google Groups, and Blogger these should not be web applications -- they are standard websites, repositories of information that need not live-update or run any javascript what-so-ever for the most basic of use-cases -- are entirely, 100% unusable without Javascript.
Browse the web without javascript, you'll find that most things are broken, even static content just doesn't work. That's the problem. Web Apps are cool. Your blog _requiring_ or a news group _requiring_ javascript to read is not cool.
It wouldn't be so bad if the technology existed to reliably say "foo.com is serving data that can be rendered via the some-standard-component presentation layer." Then, the browser itself would have the capacity to cache and optimize the rendering layer for common content schema. As it stands, your choices are to code to one schema (the HTML5 / CSS / no Javascript presentation standard, with all the restrictions that implies), to write a web app that will be a special little snowflake different from all the other special little snowflakes on the web, complete with its own chunk of memory and processing in your browser, or to throw up your hands and commit your content to one of the existing solutions that build the app for you (but then basically also control your data).
We're missing a functional division between data and app that we have in the desktop model.
=============================
| X |
| |
| Would you mind taking a |
| survey to give feedback |
| about this Hacker News |
| comment? It will only |
| take 5 minutes and you |
| can win a new Macbook |
| Pro. |
| |
| YES NO LATER |
| |
=============================
In conclusion, stop breaking HN.