Shared publicly  - 
Got back into my blog with 3 posts related to UA sniffing and feature detection:

"Warning users on older browsers"

"Why isn't our warning banner based on feature detection?"

"Checking for technical requirements in a sign-up process"

(Warning: my solutions are practical, not ideal).
Pamela Fox's profile photoMichael Mahemoff's profile photoRyan Seddon's profile photoFaruk Ateş's profile photo
Thanks for the mention about keyboards... I am finding more and more people wanting to know if the keyboard is virtual or not and also the configuration of the keyboard which can also affect typing speed...
Really interesting write-ups. Some thoughts:

* Detecting if the user has a camera -  we should almost certainly be making this easier on the platform side. At present, you can (somewhat) detect this in Flash by checking the length of but afaik, getUserMedia falls short there. You could get as far as discovering if a video device is connected, but it's likely more easy to just ask the user if they have a camera. cc'ing +Sam Dutton in case he knows more here.

* UA based banner - I feel your pain on this one. Did you experiment with a combination approach of running UA testing + partial feature detection to get a more confident result? It doesn't require the entire range of tests to be run on the client but may be overkill for what you're setting out to achieve. 

* Hard keyboard test - this is another area I wish we did a better job of exposing support testing for. I don't think your solution is necessarily wrong, but from a UX perspective, are you offering a way to proceed in case UA test was unreliable? Related SO 
Actually, on the camera I wish chrome would just fail if you didn't have any attached. Right now the user is still prompted even if their hw doesn't sup post it
+Paul Kinlan +Addy Osmani Good to know on the getUserMedia front. I don't know how soon we'll go down the getUserMedia path, it seemed too buggy/shaky when we first started with it. Maybe the permissions and detectability will be worked out by the time we put that back in.

+Addy Osmani We give them an option to contact us. We haven't had any reports yet about people thinking they're on a physical keyboard after we've detected they're not. I'm guessing most of them are on Ipad, where there's also no Flash.
Keyboard layout would also be useful. Wanted this for player controls and I'd think games would want it too.
Interesting I had no idea Safari had FormData but it didn't actually work is this for all versions?
That's a good run-down of reasons why feature detection is an ideal goal, but not a perfect, end-all-be-all solution for everything and everyone. Modernizr aims to do feature detection for modern web standards and new (but public + standardized, ie. not proprietary) technologies. It hopes to get people to switch away from UA sniffing in favor of feature detection, but not as some kind of zero-sum goal as if all UA sniffing must be abolished no matter what. 

I tend to fall in the camp that +Kyle Simpson explained, myself, of preferring to feature detect for the core necessities and simply not offer certain features of my product to users who fail those tests. However, that's an idealist approach that I can apply to my own products because I have final say in them; it's not a pragmatic one that will work for everyone. Plus, while I think most of us here are in favor of tiered experiences, there are products where that just doesn't work very well in, and Coursera is an obvious example of one.

Thanks for the write-ups, Pamela!
Add a comment...