Today’s comic is in reference to Internet Explorer’s dirty little habit of MIME-sniffing, a process by where under certain circumstances the browser politely thanks a file for trying to tell it what it’s Content Type is, then proceeds to beat it about the head until the file cries uncle and sobbingly agrees to be something else.
(I’m aware that all browsers to an extent have to do some sniffing around in certain circumstances. But rather than chastely sniffing a guest’s shoes, IE is the dog that has stuck it’s head up someone’s skirt, only to frequently come to the wrong conclusion as to what it found).
This is bound to be useful in some cases, I’m sure, such as backwards compatibility with old servers that serve all html pages as plain/text. However, historically there’s been an number of reasons to not do it, such as pictures with bad script hiding in them that IE goes ahead and runs, and the fact that it goes against specifications implementation. While we’re at it, it continues to subdivide the Internet into two different groups, those users that see a page as it should be (with a standards-compliant browser), and those that don’t (with IE).
The good news is that according to this post at the IEBlog, they’re fixing a lot of this with IE8. The bad news is, they’re not going as far as they should, for example: “…if Internet Explorer finds HTML content in a file delivered with the HTTP response header Content-Type: text/plain, IE determines that the content should be rendered as HTML.” All in the name of ‘compatibility’. The only way for a page to be rendered as plain/text in IE8 when it has an HTML tag in the file is for the server to include authoritative=true attribute to the Content-Type header.
So… wait, we’ve got to opt in for plain text files to render properly in IE8? That sounds familiar, a lot like IE8′s original plan to force developers to opt-in to rendering their sites correctly in IE8 with a new meta tag. If you didn’t include this little tag, your page would render in all future browsers as it would in IE7. Long story short, that created such a storm from developers that the IE8 team stepped back and changed their minds.
I don’t think that rendering plain/text files as HTML if they’ve got markup in them is an equally volatile subject, but it seems that this new, IE-specific attribute is another step away from standards, rather than toward standards. I think Microsoft is slowly wandering out of the dark and into the sunlight that is a standards-compliant Internet, but I get the feeling that the company will have to keep being poked with sticks to keep it moving in the right direction.
]]>Reactions vary, with critics either skeptically stating that Big Blue is doing this due to recent EU legal conundrums or are caving in to mass complaints of the developer community. On his part, Dean Hachamovitch, general manager of Internet Explorer, says “Microsoft recently published a set of Interoperability Principles. Thinking about IE8’s behavior with these principles in mind, interpreting web content in the most standards compliant way possible is a better thing to do.”
Regardless of whether or not that statement is spin, it’s ultimately the right thing for them to do. A little part of me is actually dissapointed, but that’s because drama is so much easier to write about. I’ve gotten no less than three prior posts out of the explosion of developers alteratingly deploring or supporting the move to use the meta tag in the first place. I even came out in support of it, as I felt that perhaps it was the right thing to do to allow soccer moms to have their websites still work when IE8 came out.
I guess I’ll have to take that statement back, then. I’m guessing a few thousand (or more) sites made by the Joe Averages of the world will shudder and crack when IE8 comes out with it’s higher standard compliance. But as Mr. Hachamovitch (I’m so glad I don’t have to say that outloud, it’s a mouthfull) said “Long term, we believe this is the right thing for the web. Shorter term, leading up not just to IE8’s release but broader IE8 adoption, this choice creates a clear call to action to site developers to make sure their web content works well in IE.”
I’m not sure what I’ll do in a world where Microsoft is pushing standards awareness as heavily as everyone else. As I’ve indicated in the past, a good deal of my actual job is fixing all the bugs that crop up in sites on their old browsers. But it’s a good thing to know that when IE8 penetrates the market, I’ll be able to finally kiss hasLayout goodbye.
]]>Like the kid that just won’t start poking the wasp’s nest, A List Apart has decided to push the angry topic button of the web development community by posting not one, but TWO new articles this week about the already infamous decision by Microsoft to incorporate a version targeting meta tag in Internet Explorer 8.
I’ve already poked my toe into the swimming pool of controversy in my post Loud Noises!, where I tentatively agree with the whole idea. After all, Netscape did essentially the same thing when they introduced the DOCTYPE tag as a way to control standards mode, and nobody got together a group of vassal warriors, went to their hall and burned it while standing at the door with swords. But Microsoft, being the two ton gorilla it is with a standards compliance history that is spotty to say the least, apparently hasn’t earned the right to try to follow suit and keep the Internet from breaking on their newest browser when it is released.
In his article They Shoot Browsers, Don’t They?, Jeremy Keith essentially says “Hey, we shouldn’t add a single meta tag just because one browser needs it.” Well, I hate to break Mr. Keith’s bubble of fantasy, but the fact is that for now, the vast majority of people on the Internet are using Internet Explorer. Heck, IE6, which is eons old and about as standards compliant as a clown on a unicycle (no, I don’t know what that metaphor means either), has a larger market share than FireFox and Safari combined. Add in IE7, and their share is so large it hurts.
I’m not suggesting we abandon standards in the face of corporate mega-giants. I’m saying that we need our clients’ sites to look good for all their customers. And although someday I’m sure Microsoft will fall from the top of the ladder, I don’t think it’ll be before IE8 is released. There are literally millions of web pages out there that won’t have standards aware developers out there to fix the way they render in IE when version 8 comes out. This means, like the IE7 switch, there will be a lot of people who would have broken sites and immediately blame Microsoft.
It sucks to have to put in a single tag for just one browser’s use. But Microsoft knows that cutting edge developers are paying attention, and will KNOW to do it. Therefore, the new pages will continue to look awesome and render in the newest browser version. Old sites written by a collection of soccer moms will continue to render as they always have in IE7, and we won’t have a new crisis where the majority of web pages look wrong on the majority of computers.
In his article Version Targeting: Threat or Menace, Jeffrey Zeldman (one of the banner carriers of the whole web standards movement) says the following:
“Designers and developers should be popping corks, hugging each other,
and weeping with joy. IE no longer sucks. Cross-browser unobtrusive
scripting, with no extra work for IE (save the “work” of including a meta element or HTTP header), will soon be a reality. No version of IE will ever again surprise us with unexpected displays or behavior.”
I think he nails it on the button. I’ve spent way too many of my hours fixing client pages for IE6 and IE7. I can’t tell you how much I thoroughly hate that sort of work. It’s not cutting edge, it’s not web design, it’s bandaging an old browser. I’m ecstatic that I don’t need to do the same for sites that would otherwise break on IE8 without this whole new meta tag concept.
That means money saved for clients, money saved for my company, and hours of insanity saved for me.
So yes, I’ll put all that horrible, extra, grueling effort of putting one meta element into my page. Woe unto me.
]]>