We shipped an app that requires WebSockets. Here's why:
One of our speakers, Scott Hanselman from Microsoft tried to open the app in IE9 and was immediately redirected to a page that tells users they need WebSockets to use the app. He then wrote a post criticizing this choice, his argument being that users don't care about the underlying technology, they just want it to work. He thinks we should provide reasonable fallbacks so that it works for as wide of an audience as possible.
I completely agree with his basic premise: users don't care about the technology.
Users care about their experience.
I think this is something the web has ignored for far too long so I'll say it again:
Users only care about their experience.
In this case, we're not building a website with content. We're building an experience.
We didn't require Web Sockets because we're enamored with the technology, we actually require it precisely because it provides the best user experience.
The app simply doesn't feel as responsive when long-polling. There's enough of a difference in lag and responsiveness that we made the choice to eliminate the other available transports in Socket.io. (We're doing a lot more with our data transport than simply sending chats.) Additionally, we're also using advanced HTML5 and CSS3 that simply isn't available yet in IE9. It turns out that checking for WebSockets is a fairly good litmus test of the support of those other features (namely CSS3 transitions and animations). The app is just plain more fun to use because of those features.
Apple beat Microsoft by focusing on user experience. They unapologetically enforced minimum system requirements and made backward incompatible changes. Why is it considered "acceptable" to require minimum hardware (which costs money), but it's somehow not acceptable to require users to download a free browser?
I've said this over and over again: web developers who are building single-page applications are in direct competition with native applications.
If we as web developers continue to limp along support for less-than-top-notch browsers, the web will continue to lose ground to the platforms that build for user experience first. Why should we, as a small bootstrapped company invest our limited resources building less-than-ideal fallbacks?
All this, of course, depends on your audience. We created &! for small, forward-thinking teams, not necessarily their moms. :)
You might also enjoy reading:
- Opinionated rundown of JS frameworks
- Re-using Backbone.js Models on the server with Node.js and Socket.io to build real-time apps
- Compromising the integrity of the npm registry.