Hacker News new | past | comments | ask | show | jobs | submit login
Martian Headsets (joelonsoftware.com)
79 points by bdfh42 on March 17, 2008 | hide | past | favorite | 31 comments



The biggest issue I have with this article - which does an excellent job of explaining the issue - is that Joel seems to ignore the elephant in the room: EVERY OTHER BROWSER MAKER HAS SOLVED THIS PROBLEM!

Seriously: Opera, Firefox, Safari. All of these manufacturers have no issue rendering both pages designed to standard and table designed mishmashes. They're getting so good at their implementations of standards support that for 90% of the time, a design will look exactly the same in one browser to the next.

The exception to the rule is IE. The EXCEPTION.

Why? Because Microsoft, or forces within it, as far as this outsider can tell, continually wishes to revert the many-to-many market back to the one-to-many market. They use their size and position to force their way on everyone. Their way isn't necessarily bad, but it's different for the sake of being different to achieve the goal.

From my POV, Microsoft is an increasingly irrelevant player in the web browser world. The imminent failure of Vista will make this more evident. Customers are getting sick and tired of having things break when they upgrade their software.


I was thinking along similar lines while reading the article (why doesn't Firefox have this problem?)

I don't think it's so much that the other browsers have SOLVED the problem, more that they never created the problem for themselves in the first place (to the same extent that Microsoft did, anyway). By sticking closer to the "standards" yesterday, they made backwards compatibility simpler to solve today, and Microsoft hasn't.

None of this answers the real question: now what? IE isn't going anywhere soon, and we'll have to live with it either as web developers or as users for the foreseeable future. Even if Microsoft wants to do the "right" thing, how can they clean up their mess without breaking all the "if IE do this" sites out there?


Exactly. The problem is that MS can't turn time backwards. The time to have "solved" the problem was back in the IE4 through IE6 days -- when, frankly, nobody realized how great "standards-complicance" was, because only about three people on Earth had seen a "standards-compliant" browser load a "standards-compliant" site. Before Firefox and Safari, everyone used IE. [1]

The IE team seems to be properly repentant, now, and they're down with the idea that they need to conform to standards. But they're under pressure not to break all existing IE-specific sites at the same time. And they can't go back into the past and convince their old marketing team to emphasize "standards" instead of encouraging customers to develop around IE-specific features. The laws of physics don't work that way.

[1] Cue irate reply from an old-school Opera user in: 3..2..1..


They could name the new browser something other than IE, and make sure the code testing for older IEs sees it as just another hopefully standards-compliant browser. Then the "if IE" code wouldn't trigger because the browser is Microsoft(r) MetalDog Home Premium, or whatever. Of course they probably wouldn't want to lose the brand recognition of IE.


I wouldn't call a company with a marketshare of 81% in the browser market irrelevant - I'd call them marketleaders.

Yes they are the exception, but like it or not you just have to deal with it.

Source: http://en.wikipedia.org/wiki/Usage_share_of_web_browsers


Alright then, let's just say they're rapidly gaining irrelevance status. Happy?

81% market share is not very spectacular when you used to have 97% a few years ago.


81% market share is still spectacular - even if you used to have 97%.

However you look at it they are the largest player, and you have to design for it. Having a website that doesn't work in IE is like having a store where you have a guy at the door telling 4 out of five people that they can't come inside to buy your stuff.

I don't particularly like MS, and I don't agree with their tactics but that doesn't mean I make the naive mistake of dismissing them or thinking that in a few years they'll be gone. They won't, so be a little pragmatic.

IE is in no way irrelevant, nor is it becoming so in the near future.


Agreed, but I can't shake the feeling this is a self-fulfilling prophecy.

You're advising to act like they'll still be the dominant player in a few years, but by supporting them this way it's indeed true that this will be the case. See the vicious circle?


I do - but unfortunately it's not really a matter of choice.

Not if you goal is to make money that is.


I applaud you.


He talks about how problems are caused by IE8 identifying as IE. So sites which check for IE to run hacks run them anyway, even though they aren't necessary any more.

Couldn't this be fixed by rebranding? Instead of IE8, release a totally new browser that just happens to reuse a lot of code from IE. No hacks get applied. It either works or it doesn't, and if it doesn't it also doesn't work in Firefox, Opera, etc.

I suppose it would be a nightmare from a marketing perspective, though.


The problem is the installed base of web sites that are specifically designed around IE6 and IE7, bugs and all. Those sites will break on a "standards-compliant" browser.

You and I tend to forget that such sites exist, because the environment of the public web, which teems with Firefox and Safari users, has rendered them mostly extinct in the wild. But in captivity, behind various corporate firewalls, where every single user has been running IE for a decade, such sites still exist, people care about them, and those people just happen to be Microsoft's core customers.

If, as you suggest, Microsoft ships a totally new browser -- which, let's face it, might as well be called "Firefox 3.0", although I suppose it could just be IE8 with a different User-Agent heading -- you and I will be happy, but lots of internal corporate sites will break, with no upgrade paths other than "redesign your site's HTML to be standards-compliant" or "tell your users to run two browsers: one for the intranet and one for the modern world". And corporate customers don't want to fork over license fees in exchange for that.

That's the basic contours of the dilemma: MS can either blow off their installed base or blow off the standards movement. The installed base has the money. The standards movement has the influence. Spolsky is right: The IE team is well and truly damned. They're just going to have to weasel out of it somehow.


But blowing off an installed base is nothing Microsoft hasn't done before. There are Internet Explorer versions (5.5 and prior) that are effectively end-of-lifed. No web developer has to think about the 5.5 hacks anymore, and any corporate intranet that relies on 5.5 hacks is screwed. Has this been a problem? I get the feeling that it has not, because a good MS-based IT department can spin the cost of rewriting its websites as part of the MS upgrade treadmill... as part of the cost of upgrading to .NET, or .NET 2.0, or Vista, or Sharepoint, or Windows Server 2008, etc. (And any business that has decided to get off of this treadmill is no longer among MS's paying customers.)

On the other hand, Microsoft's piecemeal approach to web standards is starting to hurt it. The de facto web development best practice is now "Develop for a standards-compliant browser first, then hack it until it looks right in IE." This hurts Microsoft because it means that most new webpages only work incidentally in IE; if a corner case of some new feature is accidentally missed in the IE rewrite, the workaround might well be: "Try using Firefox until we get a fix out."


As a web-developer you don't have to worry about IE5.5 now, in 2008, seven years after the release of IE 6.0. Seven years to make sure your site works in IE 6.0. Seven years time to upgrade to IE 6.0.

If Microsoft goes through with what they've promised, one day you've got a web site which works on the latest version of IE, and the next day (when MS releases IE 8) you don't.

Since all web pages aren't going to be fixed in a day, practically nobody will upgrade.

The only solution is to do what they did for version 7, and 6, and 5.5. Maybe they could have prevented the problem by releasing a more standard-compliant IE 5, but since then, they're stuck.

The good thing is that we're slowly getting better at abstracting the problem away.


It's as bad as all that, it's not an either or. All these intranet environments are generally very used to using archaic work arounds - I don't think it would be a big deal to get people to use IE7 compatibility mode for those sites. I think the big problem would be users seeing big public sites render incorrectly - most people expect their intranets to be a little quirky and generally have IT departments to deal with it.


The problem is: How do you trigger the IE7 compatibility mode? Microsoft proposed having new pages identify themselves as new with an "IE8" tag, and people freaked. The opposite answer -- having the old pages identify themselves with an "IE7" tag -- doesn't work because it requires someone to change all the old pages, and until that happens they're all broken, so the corporate users will refuse IE8 and stick with IE7 for another decade.

Having users press a button for IE7 mode whenever they see a broken page is just asking for trouble. Now you've equipped every Solitare-playing cube dweller in your company with a "break this page" toggle switch that needs to be constantly moved back and forth. The call volume to the IT department help desk just went up by an order of magnitude.

So you're stuck with stupid hacks like "enter IE7 compatibility node if the URL matches this regexp". Fragile, fragile, fragile. And what if you actually have the budget to slowly migrate your ancient intranet site into the modern world, one page at a time? How do you serve half your pages in IE7 and the other half in IE8 without a special tag to distinguish them?


You put it in the configuration and expect the IT department to have it correctly configured for their site. When people try to access it from outside computers and it breaks you tell them how to put it in compatability mode. Ideal? Hardly, but standards compliance makes future versions of the browser so much easier and IE doesn't want to be the legacy intranet browser and keep losing ground to firefox on the mainstream internet.

Most likely these intranets keep IE7 on their computers and slowly migrate and phase out.

It's not like these sorts of things are alien to the entreprise world - they spend an enormous amount of time dealing with legacy incompabilities - but consumers don't want legacy browsers and that's what Microsoft are afraid of.


This is not a bad idea, unfortunately a lot of sites (especially online applications) check for IE specifically and if you don't have it, take you to a message page that says "this page only displays in IE, go away." You see this a lot using Firefox; saavy Firefox users know just to ignore the message because the site works fine anyway. But imagine if your mother in law has just downloaded Microsoft's latest browser, and a site tells her the browser she's using won't work - she'll just get the "deer in the headlights" look and freak out. There really isn't a way out of the corner Microsoft painted itself into on this one.


Does anyone in marketing care what the User Agent says?

Change that and be done!


It's more complicated than that. If a browser breaks Sharepoint or any other intranet site, it won't get deployed. I imagine there are many, many, many corporations who still haven't upgraded to IE7.

One possible solution is to identify as IE <= 7 to intranet sites (which can be designated via Group Policy) and IE >= 8 to non-intranet sites. Of course, this means admins have to properly define intranet/non-intranet, which means much rioting will ensue.

Poor IE team. You're getting screwed because management decided to rest on their laurels.


If the big barrier to acceptance is intranets -- where the company controls the web server itself -- then an additional solution is available: Rather than requiring all new web pages to contain a new "OK for IE 8" flag, simply tag the old pages with a new "Not OK for IE 8" flag, to trigger legacy rendering. I imagine you wouldn't even need to edit the webpages -- just add some module to the web server that automatically rewrites the header.

...There must be a good reason why this would never work, because I don't recall hearing it proposed before.


The good reason why it'll never work is that it has to be done for bilions of pages.


Solution: Re-brand IE as "Microsoft Web Viewer" or some such and start with a clean slate and a clean set of core libraries. All the version-checking routines will not discover IE, so the IE hacks will be irrelevant. MS gets a chance to leap-frog the competition by starting over (even though it's going to suck -- sometimes you just have to suck it up)

Or -- continue having a strategic plan that goes two directions at the same time.

BTW, this solution works for some of the other problems Microsoft is having. Once you give up the idea of trying to lock people into a brand name and start thinking about the best ways to provide solutions, you don't have these kinds of problems.


See? This is what happens when Steve Yegge moonlights as a writing coach.


One of the problems with this article is that Joel tries to divide the argument into the idealist side and the pragmatist side. But there's never just two sides. For instance, there's long-term pragmatists and short-term pragmatists. I think the pro-MS people are mostly short-term pragmatists.


Joel points out the main reason for Microsoft's behavior in the article: standards benefit the little guys. Microsoft isn't interested in benefiting the little guys.


The point of the article is that there is no good solution, no matter what Microsoft is interested in.


Postel's advice is not to blame for IE's problems. If that were the case, it would only be non-standards-conforming pages that displayed differently on IE.


Hey, wouldn't all that MS has to do is use a different Agent string for IE8 so that the agent sniffing fails. You know, go incognito, like user-agent JF-8.


This is why I read Joel on Software!


Negative line. Haha, thats' awesome.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: