In this age of HTML5, CSS3, and anti-Flash it seems as though we may be slipping away from our roots. Or are we?
The rise of (my) Web standards
I lived by those rules. I still do. But am I stuck in the past while everyone is moving forward?
The new Web
Back in the day we’d all have scoffed at such a thing, comparing it to a “This site looks best in IE6” badge straight out of the 1990s. What’s changed since then? Why is this now an acceptable practice? I understand that Apple is a progressive company, bringing the web in its best form to the largest population possible, and making it look great, but that’s my point. Is this new school of thought going to transform itself into common practice?
The entire point behind breaking away from closed platforms such as Flash (yes, it’s a closed platform no matter how much marketing gets put behind it) is to build a universally accessible Web. Devices are advancing, yes. Browsers are advancing, yes. But does that give us the liberty to put the fruits of our labor on a back burner now that we’ve reached some sort of plateau in the evolution of the browser?
I’m not dogging Apple
Depending on your choice, you can end up at a really well put together version of Gmail:
To me, Gmail remains to be one of the best implemented modern Web applications because of this very attribute.
Where are we headed, really?
Do we need to move beyond this self-imposed requirement of providing a gracefully degraded version of our application? If so, would it not be a (short) matter of time before that school of thought trickles all the way down to the Coda Slider we plan to implement? In essence, what’s the difference? We’d all be thrilled if we could just make that AJAX request and call it a day without having to first build an alternate version, but is it the right thing to do as professionals?
I’m not only concerned about that 1%, I’m (perhaps) more concerned about how it affects the overall implementation. Working from your degraded version is going to result in a much more stable environment upon which to build your behavioral layer. Skipping that valuable step can and probably will result in a less structurally sound document.
I have a tendency to remain loyal to influential circumstances that have shaped me as a professional, but I’m curious how (if?) these events are affecting other designers and developers, if at all. Do you continue to be curious about degraded versions of modern Web applications? I could be way off base in even thinking about things to this level, and if that’s it by all means feel free to call me out on it, but there’s something under my skin about what’s going on. Thoughts?
I’d would prefer to have 99% of my audience enjoy a great user experience at the expense of the 1% rather than 100% have a subpar experience. Certainly there are cases where you need to do everything you can to appease every target visitor, but at the end of the day, i’d rather be proud of something awesome and impressive.
I am pretty sure this is my favorite article you have written today. So many good points that you hit on.
First off, I agree about DOM Scripting and Bulletproof AJAX. Both are incredible books that will help people understand what is going on under the hood. DOM Scripting was the first book that made it all really click for me – in terms of understanding the interaction with the dom (finding, altering, bubbling, propagation, etc).
Second, I agree that starting with the degraded version is always better to build on. I have worked on applications where they built the ‘enhanced’ version first, and it made the development and maintenance after the fact *very* frustrating.
Third, I will just quote you directly:
“Are we to a point where leading Web companies care more about dollars and cents than users?”
That’s the bigger question. I don’t necessarily look at Apple/Google sites as this shining example. Mostly I find them frustrating in many aspects. For them, I think it’s about dollars/cents/competition – not about accessibility for the user.
I could list other highlights, but I don’t want to repeat your entire post.
Very well said.
That’s just it. You can still build a progressively enriched site that gives *both* a great user experience. In my opinion, if you are thinking in the 99% versus 1%, then you are thinking about it backwards.
Progressive enrichment does just that. It makes sure the experience is incredible for the majority, while still making it usable for the rest. It’s a win/win. Anytime that other user wants a better experience, they can upgrade their browser.
There are few large companies that care more about users than dollars and cents. There’s only one that I recall reading about recently and unfortunately the name and industry of the company escapes me.
Both Google and Apple are about innovation. It would make sense that they would rush to release something; at least Google hangs the ol’ “Beta” or “Alpha” sign on about 90% of their products for the majority of the products’ lifecycle…though I’m not sure that makes it “ok” considering it is in fact for a large portion of the publically accessible lifecycle.
Alright. I’ll bite.
Now, for a web site, which basically exists to display content (but not be interacted with heavily), I’m not sure that JS should be required. In those cases, there’s usually not anything going on that’s so fancy a user must have JS.
Nowadays, I’d say that from an accessibility standpoint, it’s far more important that your sites + web apps work well with keyboard navigation, than worrying about if they work with JS turned off. Or, as I like to put it: “Video killed the radio star. Touch interaction killed :hover drop-downs.”
Oh, and I checked on the JS in Chrome. It’s impossible to disable. Period. Even with the Web Developer extension installed, JS cannot be disabled…
You make some very good points. Very good. There is still that voice in the back of my head that says we are no better than we used to be with the ‘best viewed’ messages.
I fully agree that keyboard support need to be at the forefront. Most definitely.
The biggest problem I have with many apps, and it’s the same problem most of us have with Flash, is that it’s only there because a developer *can* use it – and not to actually enhance the user experience.
So, I still consider it important that the foundation be baked in. The foundation is what gives you all of your necessary hooks to enrich the interface (form actions, URLs, classes, markup, etc). If you have all of that working at the core, it makes the enhancement that much easier.
My stance on this is dependent on my “web apps should always behave like websites” stance—I’m firmly *for* anything that is delivered in the browser looking and acting like a proper site, regardless of any rich functionality. That means semantic markup, deep linking, real hyperlinks (no span-with-onclick nonsense). Make your list sortable if you’d like to and if it makes your application more useful, but make sure your browser KNOWS it’s a list first.
A great thing about modern web frameworks is that it’s pretty difficult to build an app that *doesn’t* work with simple REST requests—that is, you have to be trying to do it wrong. So in most cases, no, there’s no excuse.
ALL websites should be made ENTIRELY in Flash.
Great article Jonathan.
You make a great point: “You have to be trying to do it wrong”.
“Can someone like Apple be sued because of this? (Yup.)”
I think the developer has not always the choice to built a fully progressive enhanced site, in particular if its more than a “5 pager”…
Sure i try to do my best not to exclude anyone from the content (e.g. search enginges), but only to a given point… I would love to manipulate the clients views looking forward, left and right… 😉
Great article. I am a Flash Designer & Developer and on most projects when I ask for alternate content to what I am producing, all I get is an awkward silence.
To the argument that “clients don’t care about the 1%”: if that 1% is a million in lost revenues, they care. It’s our job as developer to care and educate clients.
HTML, CSS and JS are all about accessibility, graceful degradation and backward compatibility. Yet on most sites that is far from reality. Restricting access to information through a specific browser or having JS enabled is no better then requiring Flash. I am wiry that browsers are trying to replace Flash under the disguise of “open standards”.
I can see though the point of requiring it for certain web apps. But I always enjoy it much more if a website still works without, both when I make them and when I use them.
I think it shows elegance.
I know that’s no argument.
Man, does this article touch a nerve!
FWIW my background is in designing and developing applications on IBM mainframes, where CSS, graphics, etc. were not available. Perhaps I am just being retrogressive?
P.S. I applaud Jerome’s comments…
[…] full post on Hacker News If you enjoyed this article, please consider sharing it! Tagged with: Acceptable […]
Obviously, there will be some things that can’t function without scripts. Those are web applications. Those are things you expect to be essentially one big script. That’s another thing entirely.
Especially today when HTML5 and CSS can do so much so well, if you need scripting to implement basic functionality of a website, you’re doing something very wrong. You might use it to add some nice feature, pretty it up a little, or make it a little more convenient, but you definitely don’t need it. What you need to display text, images, and other content on a page is HTML. What you need to make that content look nice is CSS. What you need to have comments on your blog is a server-side script to store and fetch them and a basic HTML form. Only complex applications need scripts.
“You can still build a progressively enriched site that gives *both* a great user experience.”
Yes you can do that, but you have to code your site twice: one version with js, and one without. Just look at the gmail example: the version without js is a completely different app.
It’s not always possible to code on top of the html-only version.
Very well written article. However, it is such a pain reading you article in Nexus One since I can’t focus on the article only. The RED Monday by noon thing on left sidebar always moves over article. Does that count as a bad practice? I would say so, but with so little of reader using mobile reading your article. It is fine; I, one of minority, just have to accept that.
In short, I think it ends up with whether developer cares what users have experienced or not. Some dev might not think of a specific issue, but when it arises, choices they made after matter the most. 🙂
At the end of the day, if you want more people to use the site/service/app/whatever, make it handle under as many different configurations, browsers etc as you care about. Neglect the rest at your own peril.
Erratum: “you’re metrics”.
i’m also from the progressive enhancement camp, although i’m quite “new” to js (learned it by myself by analyzing js-code from websites about 3-4 years ago)
in the first place, i think it is not about “its too early” but more “its just not polite!”. i’m using noscript (which is btw the 2nd biggest addon for firefox with millions of users around the world!) as of security reasons and also because i just dont want to see moving, blinking and whatever effects wherever i go (its almost like animated gifs were some years ago…)
i like the js-less versions of pages and only enable js when i need it. but i often come across sites which just cant be used without js
just btw, noscript is the reason that keeps me bound with firefox. while other browsers (chrome) grow and everybody prefers it and tells to switch i just can’t as long as there is nothing equivalent to noscript for other browsers. not in 100 years!
being able to use pages without all the “beautiful” js-effects is something thats just the polite way in my opinion.
don’t misunderstand me, i like js and i also like some web-apps which heavily use js. im using such sites quite a lot and ive got quite a few exceptions in my noscript white-list.
i also think writhing js is really fun (at least when you use a good framework like MooTools), i really enjoy coding in js :3
what i don’t like is js everywhere, even where it just does not belongs!
there are things you can, should or must do with js, but there also are thing you can’t and/or mustn’t!
but many “web-designers” nowadays just cant understand this and totally OVERuse js (especially in the days of jQuery, which lets you do the strangest effects within seconds…)
building web-apps which requires js is ok if this is really needed. i know quite a few of them, just like http://colorschemedesigner.com/
but there are also sites which use js in a ridiculous way.
i’ve seen everything from missing functionality (which is ok up to some point), to missing stylesheet (which has been loaded with js, but the page itself didn’t have anything other that required js, lol), to pages which replaced links completely with some “stylish” buttons (and used location.href for all redirecting) up to completely destroyed designs because the js is intended to do that…
i have also seen pages where, from one day to the other, you couldn’t log in anymore because the login form was moved to some overlay which required js (it could have been done without js too btw…)
pages that could have looked perfect and didn’t even need js, not for critical parts at least, but they completely overdo it and destroy the site (when js is deactivated at least), thats what i often come across… its really a shame!
recently i also made some pages which requires js for some functionality, like watching the gallery and such. the rest works perfectly without js though. i’m also making a web-app which requires js in the first place because i need it to enhance the usability of that quite large application.
i’m doing that with mixed feelings, because i like it but i don’t really like to build something that requires js
but i have to move on myself and cant stay behind… thats what we all have to do…
but we can at least give our best to keep at least the most basic/critical functionalities of our sites useable without js and don’t overdo it! 😉
This part of your argument resonated the most with me …
“Working from your degraded version is going to result in a much more stable environment upon which to build your behavioral layer.”
Answer: No, because then I have to allow script execution for that domain in NoScript, and that is annoying.
If you’re just going to look at the 99%/1% numbers, think about the assumptions you’re making:
– I assume that the 1% doesn’t include any important people — major customers, investors, etc.
– Or, I assume that I or someone will always stay on top of this web content and update it as necessary for new devices, software, and other changes in how people use the web.
In the end, I think the decision comes down to internal goals that are part of our personality and aren’t going to change. Does it make you happy to aim for happiness for everyone or do you believe some people are not worth the cost of pleasing? Do you like to try to improve everyone’s life with your work or are you looking for creative ways to maximize your own profit and ROI? And sometimes: are you willing to sacrifice your own ideas and ethical choices if your client or boss wants you to?
I must admit that I haven’t actually put any time into a mobile version of the site due to some outside factors taking up a bit of my extra free time, but I absolutely plan on it, ASAP!
You can’t browse the web with a browser that doesn’t support HTML. Ludicrous concept, but… I think it makes the point.
Progress means expectations change. Adapt, or die.
shard all of my databases too in case I get Slashdotted.
In a market increasingly saturated with frameworks and WordPress-blog sites, it’s becoming increasingly difficult to differentiate yourself. As others have stated, speed is not a feature, it’s THE feature.
The concerns with SEO are valid, but easily handled.
Nice article and something I ponder about all the time.
I’d really prefer things to be different as there are definitely some negatives to this approach but for now I’ve never had to forsake the 1%er’s and I’ve managed to save the time of coding two applications versus the one, which I feel is most beneficial, among other positives. Until we see some drastic change in implementation and support (which I don’t see on the horizon), I’ll continue to revisit the question at hand. Unfortunately I won’t be surprised by my answer if it remains the same.
Just thought I’d throw in how I justify doing any work at all on it.
I liken it to continuing to support ie6. If we enable users to live in the stone age, they will. Why not give them a reason to come into the light of the modern age.