Progressive Enhancement is nothing new. It is a design philosophy that the core features of a site should work for everyone on an agreed range of browsers. The site is then progressively enhanced for more capable browsers. The idea is that users with better browsers will get a better experience, but users with less capable browsers will still be able to use the site. This also echoes a key driver of the web standards philosphy - ensuring access for all.
I am going to get off the fence and (with the philosophy of Progressive Enhancement) say use border-radius. Why? It is supported by Firefox (over a third of the market) using -moz-border-radius and also Safari using -webkit-border-radius. It will result in faster loading times, be more maintainable and result in a better experience for those who have capable browsers. For those without support for border radius they will not get rounded corners. Do I care about this? No - not really. Will my client care? Yes - and that’s the problem.
Let’s use an analogy of a car driving from A to B. If I am in a very expensive car I am likely to get from A to B in comfort and probably have satellite navigation available to me. If I am in a cheaper car I am likely to get from A to B in slightly less comfort and I may have to use a map. Both cars get from A to B but one passenger has a better experience than the other. The analogy between cars and browsers stops here however because browsers are free. They don’t cost anything.
If users choose to browse a site with a less capable browser I’m certainly going to make sure they can use it. But I don’t care if they get a lesser experience. That is their choice. Giving individuals choice is fundamental to a free market and free markets create better products. I respect every user’s right to access and use a website, but I also acknowledge their choice. If that choice is a less capable browser then I have no issue with them getting a lesser experience. The philosophy of giving all users the same experience is in my opinion a false one.
Of course this is all great in theory until your client asks why the site does not look the same in all browsers. They don’t care about browsers - they just want the site to look the same in the other 60% of the market. At this point you are faced with a clear choice. You can continue to hack and use less than optimal code to fix less capable browsers or you can explain Progressive Enhancement to your client. Of course it is the client who pays the bills so they have the final say. But in future I will be explaining this to clients. I suspect I will lose more battles than I win.
My design and development philosophy has changed however. I’m no longer going to strive to make everything the same in less capable browsers.
Have an update or suggestion for this article? You can edit it here and send me a pull request.
Linux and Unix watch command tutorial with examples
Tutorial on using watch, a UNIX and Linux command for executing a program periodically and showing a fullscreen output. Examples of watching a file download, a network interface come up, and showing the five most CPU intensive processes.
Build your own Vim statusline
Statuslines in Vim are not hard to create. Making your own means one less dependency in your life.
Custom Vim Bindings in tmux 2.4
tmux 2.4 made a significant change to key bindings. Here is how to support custom keybindings for versions before and after tmux 2.4