h5bp / html5-boilerplate

A professional front-end template for building fast, robust, and adaptable web apps or sites.
https://html5boilerplate.com/
MIT License
56.45k stars 12.23k forks source link

Should the boilerplate prompt to install Chrome Frame? #495

Closed jovrtn closed 13 years ago

jovrtn commented 13 years ago

Now that Chrome Frame will be installable without admin rights, prompting its installation seems as logical as forcing it if it's available. However, forcing the prompt on every browser that supports it (IE6/7/8) seems a bit overzealous. Perhaps a default to prompt in IE6 would be most reasonable?

I'm curious what everyone else thinks about this.

7fe commented 13 years ago

Displaying in IE6 sounds great to me. +1

nimbupani commented 13 years ago

I dont see why this decision should be made by default, I would recommend authors make that choice though. I would rather have it be unobtrusive rather than be intrusive in prompts by default.

However, if web developers feel different then they should, by all means, make it obtrusive.

chuanxshi commented 13 years ago

hmm, interesting, that's a bold idea.

jamwil commented 13 years ago

@nimbupani is spot on, this shouldn't be the default, but a suggestion. Boilerplate is about best practices, nothing more.

jovrtn commented 13 years ago

I agree that it's a much more prescriptive idea than what's already baked in. The BP has dramatically increased the level of exposure for a lot of the best practices used and, even in commented-out form, including the snippets required to prompt for the Chrome Frame install would definitely have a wide effect.

jamwil commented 13 years ago

I think including the snippet commented out would be a solid course of action.

chuanxshi commented 13 years ago

IE6 is a major issue in technologically backward countries like South Korea, China and Japan. I am currently doing Chinese translation for H5BP, since H5BP is international, we can do more to help the world to get rid of IE6 by suggesting chromeframe, but of course like you guys mentioned, in an obtrusive way.

jovrtn commented 13 years ago

Something like this should suffice:

<!-- Prompt IE 6 users to install Chrome Frame; disabled by default -->
<!-- <!--[if IE 6]>
<script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
<script>window.attachEvent("onload",function(){CFInstall.check({mode:"overlay"})})</script>
<![endif]-->

The 'overlay' mode is the least intrusive and gives an option to close the popup. Also, the Chromium docs say that serving up a local copy won't work, so no jQuery-style backup loading for this.

chuanxshi commented 13 years ago

but should these two lines themselves be commented out by default also? or configurable using custom build?

<script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
<script>CFInstall.check({mode:"overlay"})</script>
jovrtn commented 13 years ago

Added an IE-specific onload handler. The extra <!-- before the IE conditional effectively comments out the entire block (AFAIK); I might need to point that out in the explanatory comment.

chuanxshi commented 13 years ago

arh, ok, got it.

jovrtn commented 13 years ago

A friend pointed out that nested comments don't validate but that malforming the IE conditional, turning it into a normal comment, will:

<!-- Prompt IE 6 users to install Chrome Frame; disabled by default - remove backslash to enable.
     More info: chromium.org/developers/how-tos/chrome-frame-getting-started -->
<!--\[if IE 6]>
<script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
<script>window.attachEvent("onload",function(){CFInstall.check({mode:"overlay"})})</script>
<![endif]-->
necolas commented 13 years ago

Asking users to install Chrome Frame doesn't, technically, help get rid of IE 6. Like Divya, I'm not a fan of interrupting users with prompts to download software or promoting that practice. Another approach would be to include it in the Wiki where it can be properly explained, and the drawbacks mentioned.

chuanxshi commented 13 years ago

If we think out of h5bp, but in general, will it be good if we detect user agent, if user from vista/win7, we prompt ie9, if user from win xp, we prompt chrome frame. Again, this doesn't have to be part of the default. We try to be more fair to IE this way, and avoid politics. I think not just ie6, but also ie 7 and 8 we need to consider.

chuanxshi commented 13 years ago

@ovrtn follow up from our discussion on #html5 IRC, I am creating a simple pledge-like get html5 page (still prototype) https://github.com/shichuan/gethtml5/blob/master/index.html although this idea might be out of the scope from default h5bp perspective, but if you are interested, can take a look.

paulirish commented 13 years ago

Most people have dropped support for IE6. If you, as a developer, don't support IE6, the best thing you can do for existing IE6 users is serve them the CF install prompt.

I'd agree to defaulting CFInstall to on for IE6 only, with a comment that clearly states that.

We're going to put out a poll to get a sense of people's current browser support. Casually it seems that only ~20% of h5bp users actively support ie6 (aka care about what it looks like).

7fe commented 13 years ago

According to http://ie6countdown.com IE6 is currently at 7.4556% world wide. That's excluding communist China, which blocks access to all my sites :( I'm not sure about others peoples standings with China access, but I thought I should mention that.

EDIT: Depending on how you read the chart and calculate the values, China could make up anywhere between 3.94-5.9%. Which could bring IE6 browsers down to 5.5% worldwide!

Anyways its not like its a requirement to keep the script, but I agree if you don't support IE6 then it would be smart to help the user out by letting them know what is wrong.

It's frustrating when a user visits a broken site, but is still unsure how to fix it. For example when re imaging windoxs xp in several IT departments IE6 becomes the default browser after install. The IT dudes often don't care nor bother updating anything but the requirements, print drivers, enterprise wifi authorization, domain login credentials etc. When someone boots up the computer seeing the browser is outdated along with flash, I wouldn't be surprised if the majority of users would simply update or install CF.

ghost commented 13 years ago

Anyone still on IE6 at this point has got to be used to getting prompts, nags, broken pages, etcetera. Installing Chrome Frame would be the best thing for them.

alanhogan commented 13 years ago

+1 to defaulting the CF install prompt.

Reasoning, besides the common themes above: Given that IE only emulates back to IE7, even if you wanted to, it’s ridiculously hard to test in IE6 these days. If you are in the minority who actually check IE6, then you also have the time to remove the prompt (if you even want to!).

@paulirish Aren’t you a Google employee? Probably worth mentioning for full disclosure (of course, polling H5BP users as per your stated intention mitigates most of any conflict of interest, IMO). For clarity: not an attack on you, your character, or motives, here. FWIW, I believe you and I spoke briefly about enabling a better user-facing CF installation experience a few months back.

@ovrtn I’m not sure I follow why your conditional comments seem convoluted compared to those already in the boilerplate:

 <!--[if lt IE 7 ]> [script to prompt for Chrome install here] <![endif]-->

Update I think it’s that you left in a backslash. (You don’t need to escape hard brackets in code blocks.)

paulirish commented 13 years ago

full disclosure:

what's got two thumbs and is paid by google to work on the Google Chrome developer relations team?






↖ this guy

chuanxshi commented 13 years ago

if we decide to go with chrome frame, can we prompt it for anything below IE9? means even prompt for ie7, ie8 also. I don't think it's overzealous if we are building html5 boilerplate.

in future it will be nice if we could ask Alex Russell to collect some data about the users have chrome frame installed, could help us see when we could stop supporting IE6-8 as developers.

ghost commented 13 years ago

How about unprompted install, cause that'd be goddamn fantastic. Exploit a bunch of unpatched security holes, install chrome frame, and patch them. If we make it auto infect websites we can lick this IE problem right quick!

alanhogan commented 13 years ago

Oh, no. That would be… unethical, somehow. Because, er, come on someone help me out here. Only black hats exploit stuff! ;)

On Jun 1, 2011, at 6:41 AM, Benviereply@reply.github.com wrote:

How about unprompted install, cause that'd be goddamn fantastic. Exploit a bunch of unpatched security holes, install chrome frame, and patch them. If we make it auto infect websites we can lick this IE problem right quick!

Reply to this email directly or view it on GitHub: https://github.com/paulirish/html5-boilerplate/issues/495#comment_1274361

jovrtn commented 13 years ago

@alanhogan My revised code snippet was intended to leave the CF prompt script commented out by default. Since nested comments don't validate, I added the backslash (<!--[if IE 6]>) as a workaround to intentionally malform the IE conditional, turning it into a regular comment block.

adeelejaz commented 13 years ago

+1 definitely! IE6 users have made our life a living hell for years, if there is any way I can annoy them! Why not!

Jokes apart, I think its a brilliant idea. If I do not want to support IE6, it is going to be an awful experience anyway for them. Why not give them a choice to make it better.

I believe it should be in the boilerplate, the debate has to be about whether to comment it out or not ;)

paulirish commented 13 years ago

adeel, can you write the pull request? lets do it uncommented by default.

paulirish commented 13 years ago

Closed by adeel's commit in bca1d30716500a7236be024ae456ed25426daadc

Though then I fixed things up a bit in 8ace459e0eeeff454aae3c9cd46c6ce54c91c18a

woowoo! thx all.

alanhogan commented 13 years ago

Glad to see this resolved in this manner.

However, I must say I am disappointed to see the documentation referred to in an HTML comment documenting this feature in the boilerplate does not seem to actually show an example screen shot of the script in action. Nor is there a demo you can run in your current browser. I realize the script is very customizable, but given that it is now part of the BP and on by default, developers should ideally be able to experience the Chrome Frame prompt without having to boot up Windows.

(Let me know if there is a more appropriate channel available to me to voice this concern.)

adeelejaz commented 13 years ago

I can provide the screenshot to be added in but I think trying to duplicate the experience of Chrome Frame for developer is a bit too far. The reason this was added to boilerplate was for those developers who do not want to support IE6 any more, this is a life line for their users to get a choice of better experience.

Moreover, we do not control how the installation script behaves. If Google makes any changes to the method or even presentation, we will have to mimic them to keep up with the installation experience for developers.

alanhogan commented 13 years ago

Understood. To be clear, I think it is Google (and the Chrome Frame team) that ought to update their documentation with said screen shots / demos.

paulirish commented 13 years ago

adeel, gimme that screenshot and i'll pass it along and/or get the team to drop somethign in

adeelejaz commented 13 years ago

Let me know if this will suffice..

http://adeelejaz.com/projects/screenshot-chromeframe.jpg
alanhogan commented 13 years ago

'cool' emoticon Paul, Adeel — you rock, thanks for caring on a Friday evening.

adeelejaz commented 13 years ago

Waaa.. It's 4:20am Saturday morning here ~_~

alanhogan commented 13 years ago

I’m disappointed the script doesn’t default to showing a page specifically crafted for this situation. Wouldn’t it be great if the language were more compelling and relevant? If it said something to the effect of…

This website requires the free Google Chrome Frame plugin to work as intended.

I know that may not apply in all cases, but a specifically crafted page like that would be, at minimum, a good option to have as a developer.

Right now, a custom CF prompt has these choices:

  1. Link to the standard /chromeframe page. But this is an extra step of indirection, and the language is not extremely compelling.
  2. Link to the EULA/download page directly. But might this page change? Is there a guarantee that linking to it won’t break our prompts?
  3. Link to the developer-centric CF page (obviously a bad idea).
  4. Host a copy of the installer ourselves. Again clearly a suboptimal option: It uses our own bandwidth (likely at a lower download speed) and requires periodic updating. There may be issues with internationalization.

There is definitely an opportunity to improve here, by giving developers a clear superior option, and by improving the CFInstall prompt experience.

alanhogan commented 13 years ago

By the way, when I was contracting with Simperium, I implemented what I thought was a fairly decent Chrome Frame nag for Simplenote’s web editor. You can see it at http://simple-note.appspot.com/ in IE8 and older browsers. Simperium ended up shying away from describing any specific problems that IE users would otherwise encounter in the prompt, but I think it is a more direct prompt than the default CFInstall script prompt.

Further improving the experience: If they select to install Chrome Frame (which opens a new tab/window), then when they return to our page, there is a specific message that appears, instructing the user that they just need to reload the page to enjoy our web app as intended. With a reload button.

In fact, IE7 and older users use a separate web editor interface (http://simple-note.appspot.com/index.html) -- here the CF nag actually mentions that they are using an older interface, and that whole features are missing but are mere minutes away, if you’ll please just click here and install Chrome Frame.

This is the kind of experience I wish the CF team made easier to provide.

What if the CFInstall API had 3 easy options:

  1. CFInstall.check({scenario:'tip'}); — CF is not required, but "would improve this website." (Small improvements, such as speed and those pretty CSS3 looks)
  2. CFInstall.check({scenario:'improvements'}); — CF well allow use of the web app "with fewer bugs and/or unlocking additional features your browser is not currently capable of."
  3. CFInstall.check({scenario:'required'}); — CF or a modern browser is required for use of the app.

Imagine if this was all automatically localized, as well!

adeelejaz commented 13 years ago

The CF does provide functionality to have your own version of the prompt. I think the best place to voice your concern will be at: http://groups.google.com/group/google-chrome-frame

I do agree it can do with with a better implementation in terms of experience/wording too.

paulirish commented 13 years ago

http://www.chromium.org/developers/how-tos/chrome-frame-getting-started#TOC-Screenshot-of-prompt added. ;)

alanhogan commented 13 years ago

Very cool, thank you!

On Monday, June 27, 2011 at 3:58 PM, paulirish wrote:

http://www.chromium.org/developers/how-tos/chrome-frame-getting-started#TOC-Screenshot-of-prompt added. ;)

Reply to this email directly or view it on GitHub: https://github.com/paulirish/html5-boilerplate/issues/495#issuecomment-1451093