molly.com

Monday 29 November 2004

breaking the web

IS MICROSOFT BREAKING the web by not updating the IE browser or planning better standards support in any yet-to-appear OS-based browser?

In his article How Microsoft can support CSS2 without breaking the Web Tristan Nitot, who was with the Netscape Evangelism team before its demise, points to an interview in which Gary Schare, Director of Windows Product Management at Microsoft, says:

“We could change the CSS support and many other standards elements within the browser rendering platform. But in doing so, we would also potentially break a lot of things.”

Nitot’s article ponders the truth of this, pointing to the use of DOCTYPE switching and sharing some interesting statistics as to how any change to support couldn’t really break existing sites.

The lack of proper CSS support in IE remains one of the more serious concerns for web designers & developers who wish to advance their use of CSS and standards-based approaches to building sites.

Cross-posted with the WaSP BUZZ blog so readers may submit comments here.

Filed under:   general
Posted by:   Molly | 10:46 | Comments (35)

Comments (35)

  1. Wondering what they are referring to. I have been coding for the web for years and IE has always been the best browser as far as CSS support is concerned. It doesn’t matter how vocally it can be claimed otherwise: many persons make of this issue an ideologocal metaphor of capitalism (Microsoft, the evil…) against socialism (Netscape…). But the fact is: IE has an excellent CSS support, and whereas it has a few limitations, Netscape 7 has them as well. I don’t find any CSS2 particular fault with IE – not more than other borwsers. As for the claim that Netscape has a full css2 support, that’s urban legend: try to make a scrolling layer and give to it an overflow property other than hidden and you’ll see IE making not even a wrionkle, and Netscape showing ghost layers scrolling.

  2. I’m amazed at Alberto’s comment about Internet Explorer’s CSS2 support. IE even lacks support for chunks of CSS Level 1, like support for position:fixed on elements other than the BODY, or support for PNG alpha transparency. The lack of support for various pseudo selectors is particularly troubling, because it forces developers to use extra classes or IDs – bloating markup.

  3. Never mind pseudo-element and -class selectors (two of which IE does support, though badly), Simon; IE lacks more basic selectors, too, like adjacent siblings and children. These along with more advanced display types are the limitations that really bog things down.

  4. There are two aspects to the CSS support. The first is resolving any existing bugs. That is, anything that exhibits a behaviour that seems to differ from the CSS standard. I can see Microsoft’s issue in trying to resolve these problems. In fixing these problems, people who have developed solutions to workaround these problems may suddenly find their sites (or web applications) behaving in a very peculiar way. To the average “what are web standards” web developer, they’ll just think the new IE is broken. This is what Microsoft wants to avoid.

    The second issue is in introducing new CSS or browser features (full transparent PNG support, psuedo selector support, etc) should be a trivial matter. Trivial in the sense that nothing should ‘break’ by introducing new functionality. Being able to add a :hover selector to a TD element, for example, shouldn’t break anything.

    Microsoft, however, can easily spin the first issue to cover up the ability to implement the second issue. Similar to how they spun the whole “the browser is part of the OS” as a way of avoiding unbundling IE with the OS.

  5. Simon: Follow the link to the article Molly quoted from. Alberto posted a longer comment there. Reading that will make it easier to understand his point of view.

  6. Do we build roads for people who don’t know how to drive, or write books for people who can’t read? Then why should IE work in the first place for “developers” who don’t know how to use web standards? I agree that nothing should break when *new* functionality is added, and MS is right (unfortunately) to be sensitive to all the crap code they have engendered, but if your designs blow up when the browser gets fixed to *work properly*, then you should take your lumps, do it over, and do it right.

  7. Let me reproduce here a personal email about this:

    (…) wrote:

    1. Like (…) says, span is an inline element to which width and height cannot be applied.

    2. Even if you could set width and height on inline elements, you have to supply a unit with the value.

    So IE is just doing what it has always done: encouraging sloppy and erroneous coding practices.

    —-

    Let me disagree: if you add a display: block (units are immaterial in this respect) Netscape will show the block; yet, the command is clear: width 200 height 100. I leave uncompromised your full right to feel otherwise, but my view is that if I give a width and a height, that should be respected by a browser. Having to specify that the display is block to respect a declarede width and height is in my opinion a misleading approach by Netscape: we can have elements that are inline and yet have width and height, think of images: they have both and do are inline. I see nothing wrong in expecting that being reproduced by a SPAN tag.

    My personal perception is that it is too much subjective what “erroneous coding practices” are, and we should be AWARE of this subjectiv dimension that does exist without compromising the validity of any of the opposite outlooks.
    So that we cannot ascribe as a fault to IE that it does shows the prescribed width and height in a layer, and as a merit to Netscape that it doesn’t. I don’t mean that Netscape is questionable in this approach, I simpy find inconsistent deriving from this a blame for IE and a merit for Netscape, THAT is the level where they lose me: if a browser gives to me the width and height I “ordered” to it to give, I would not call that “erroneous”.

    My idea is that we, on the net, are too biased: there is leeway in the implementation of the standards, leeway that is fully compatible with the standards themselves. I hope you see my point, as I see yours: I have personal difficulties in saying that it is an “error” to blame a browser about if it does set a SPAN tag to the prescribed width and height while preserving its inline nature unless otherwise specified.

    My whole point is: both approaches have a RATIONALE behind them, so that deriving a judgement that ascribes merits, let alone a definitive one, out of them means to neglect the validity of BOTH rationales.

    ciao, with virtual friendship

    PS as for the fact IE does not respect fixed layers, I agree 101%: what is there that makes suspect a disagreement. To my eyes it is perfectly plausible that a browser does not show a 100% support for something and yet STILL be an excellent borswer. This applies to Netscape, to Opera, to IE.
    What I don’t understand is the surprise when a browser shows a shhortcoming, and then deriving from it a manichean division among good guys and bad guys. And, of course, the W3C recommendations are something that I have never been able to see as the equivalent of a resulution of the United Nations – but this is probably a personal problem: I even have problem with the United Nations when it comes to saying that whatever it does is good (metaphor: Netscape) and whatever is out of it is bad (IE) 🙂
    ciao
    Alberto

  8. All I need is for min-width to work in IE and I’ll be at least temporarily happy with it.

  9. I could not count how many websites I’ve seen that had 3 BODY elements, several HEADs, TRs missing, TABLE tag is not closed. Miraculously, IE shows these websites while other browsers ignore them (not all but the modern ones). It is the truth that our new industry limitations are generated lots of crappy tags (it was necessary at the time) and IE took one step further and made us lazy coders. Do we have to continue as it is/was or we should create foundation to our brand-new industry? I kind of prefer the foundation approach. Luckily, we don’t have to do much. Wonderful people are doing great job building the foundation for us. Hopefully IE will join them too.

  10. Anyone how’s been coding XML knows for sure the utility of having a strict parser. This helps the coder, it doesn’t hold him back in his endless «creativity». Strict and standard-conformant parsers is the only way forward; everything else will only make the situation worse.

    The problems with Internet Explorer’s CSS support are so many and endless that it’s impossible to summarize them in a comment like this. I don’t even know where to start. What I think is most important, though, is not to have Internet Explorer support more of either CSS1, 2 or 3, but fix the support it already has, so that it conforms to the standard and doesn’t render in all kinds of buggy ways.

    But while we’re talking about Microsoft breaking the web, they’re not only doing it with Internet Explorer. Their web framework, ASP.NET, is also breaking the web in several different ways. Some are fixed in the upcoming version 2.0, but Microsoft still makes strange things like inventing «XHTML 1.1 Strict» (when did XHTML 1.1 get several different DOCTYPEs?), serving XHTML 1.1 by default as ‘text/html’ and other stupid things.

    It seems to me that most Microsoft developers are scared of standard documents, don’t know how to read them, or just don’t know they exist.

  11. Something that I’ve come across with IE7 that basically redefines things for IE to render them correctly. The problem with this is that it adds more stuff to download for the viewer.

  12. With 93% of the market, those fat cats at Microsoft don’t have much to worry about, especially with Longhorn on the horizon.

  13. Ok, but what are we to do if a standard forgets to afford us an option?
    That’s fine, but how then can we have a layer with width and height and INLINE too? NS does not allow for that, IE does, and I find an option more rather than an option less a legitimate way to integrate a standard specification that, as far as standards are involved, neglects this obvious option.

    Standards, moreover, are by definition for the time being (from Css1 to Css2 is a path that proves the non speculative nature of this allegation): I do not advocate respecting standards “better”, I am for thinking of the standards as something that can be questioned and also criticized rather than worshipped.

    We can criticize Microsoft for it is a metaphor (you can see this implication involved in a few posts as well) of capitalism, and as such we symbolically attack it as a proxy for capitalism. Men live symbolically, and this involves symbolic enmities.

    But if we are concerned with our critic capabilities, and want to retain our right to question “power”, then we’d have ALSO a critic outlook on the W3C standards while we have it on Microsoft: we cannot assume a rule is good simply because it has been enforced.

    W3C standards can be criticized as Microsoft (and Netscape) can. The one does not bolt out the validity of the other. I can be fully aware that IE does not implement a fixed layer and be annoyed by that, and at the same time ackowledge that stabdards that do not allow inline width and height layers as a lacking option that a browser is free to intepret its way, and provide us with this feature. They are all compatible statements. It is not that because I don’t like Netscape for one thing, then I must dislike it for all the rest.

    We just live in a real world, and in a real world perfection does not belong. Working around imprefection in web design has been our job since the times of Netscape 4. I just consider it an inextricable part of the job.

  14. A question: what is that you deem necessary to achieve by css that you have _no_ other way to achieve otherwise (say a combination of more tecniques, from html4 to supported css to scripting)?
    I mean, _aside_ from the argument “this is the standards”.

    It seems to me it is felt some overwhelming necessity but I cannot figure out what one.

    Css is mostly concerned about layout presentation: you write your texts, then you wrap them with tags and you expect to decorate and move them around by css rules. That’s fine to me. What I don’t understand is THIS: what is there so absolutely, dramatically necessary (to the point we reserve to this or that browser or company the most derogatory contempt) that you must achieve ,and that you cannot achieve any other way so that you feel so “amputated” in your creativity by a reduced css2 or css3 support?

    Just trying to understand. As far as I know, I have not seen yet one single page entirely made via css2 (assuming a full support) whose layout could not be achieved as well by other routes.

    And even if there could be a couple of frills that we’d have to give up due to lacking full css2/3 support, are we saying that these decorations are so essential to convey what we have to say? It seems we import an overwhelming amount of importance to achieving what css3 allows: but why?

    If we separate contents from layout -the css paradigm- what is there that makes us argue that the layout is more essential than the contents, whereas the css paradigm clearly hints the importance is the other way round? I at times have the impression that entirely css made websites are significantly lacking of texts, whereas they seem to ascribe an immense amount of significance to the fact that the positioning of those reduced contents (many of them have no more than 20 lines of plain text per page), the background colors of those contents are achieved via pure css.
    What is in css that you judge so capital?

    Are we discussing in a principled way (that is: “standards MUST be respected because they are such”), upon which I can agree, or are we talking about some layout achievements that we tutterly fail to achieve any other ways?
    Is there something objective in our concerns, or are just we defending the standards because the standards are such? Are we talking principled standards, or inability to achieve a remarkably important result we utterly fail to achieve any other route?

    ciao
    Alberto

  15. I’m getting used to re-written entire sites with each new browser generation – hey, “real” standards would make consultants like me unemployed! 😛

  16. Quote:
    table border=0 cellspacing=0 cellpadding=4
    Unquote.

    Source: Google.com
    =========================
    Quote:
    function calculateJD(calendarDate)
    (…)
    table cellspacing=0 cellpadding=0 border=0 width=770
    Unquote

    Source: http://www.netscape.com
    =========================
    Quote:
    script src=”/js/menu.js
    Unquote

    Source:opera.com
    =========================

    Quote:
    div class=”w3catten-logo”
    Unquote

    source: w3c.org (shows perfectly well on IE too)
    =========================

    Quote:
    table
    summary=”The following two-column layout can be changed to one column, if needed for some screen readers, by selecting the ‘change column layout’ icon. The first part contains news, information about WAI, and about participation. The second part lists WAI resources.”
    border=”0″ width=”95%” cellspacing=”0″ cellpadding=”10″
    Unquote

    source: w3c.org/WAI/
    =========================

    Long live the queen 🙂

  17. The problem, Alberto, is that IE is sloppy. It allows TOO MANY options – the option to write bad code (open tags, sloppy nesting, etc.) the option to make an inline element behave like a block element without even declaring that you want that behavior. Yeah, it offers options – but what is a standard with too many options? It’s no longer a standard, is it?

    And to support sloppy code and misinterpret CSS, no matter how simple it “seems” to make things for some people, is a disservice to everyone. It accomplishes nothing – in fact, it’s almost harmful.

    And contrary to your assertion that CSS is just decoration or a collection of “frills,” I would submit to you that it is an important technology that serves a meaningful purpose – and people recognize that. Clients, users, developers, and application makers are realizing more and more each year that CSS and “best practices / standards” are a change for the better – and in the end it is those people who must accept it – Microsoft’s only job is to answer their call, not sidetrack it.

    I read your defense of Microsoft’s standards support – I disagree.
    Although it is true that Microsoft’s support is better than it used to be, it is nowhere near as compliant as some other browsers that have been mentioned – and that’s just fact. Longhorn might bring better implimentation, but that’s two years away, and pure speculation right now.

    In the meantime, we cannot look at a browser that is substandard and pretend that it is not. To rationalize shortcomings by implying that IE is better than it used to be. That is the classic argument in favor of mediocrity. Always has been.

  18. I don’t know. I just am unable to attach so much significance to css that if I see a browser that fails to interpret a few of it then I feel myself lost.

    Maybe a person who started coding in the recent years can have this expectation, but I spent 4 years of mine dealing with Netscape 4 and that simply taught me that when something does not work the expected way (and with NS4 nothing ever worked the expected way), then my job is to make it work anyway.

    Imperfection thus is something I see as an inherent part of this job. I do not expect any browser to do what I would expect it to do: for me it is _normal_ that a borwser doesn’t. I do not load my scripts or my phps or my css in a browser (any browser) expecting a friendly host: I am expecting a mortal enemy.

    I open a script in IE and I expect problems: they arrive.
    I open a script in NS7 and I expect problems: they arrive.
    I open a script in Opera and I expect problems: they arrive.
    I open a script in Mozilla and I expect problems: they arrive.

    To me browsers are not firends, but mortal enemies with which my job is to fight and wrangle in mortal combat till I tame them and I force them to do exactly what I want.

    Given this attitude, the standards have always been to my eyes pious expectations, that can help us but that we’d never rely upon with any confidence, neither today nor tomorrow neither with Ie nor with NS.

    NS7 gives problems to me as much as IE does. And I do make complex things.
    To me browsers are enemies, and the W3C is the United Nations: it issues nice recommendations that do nothing while we keep shedding our virtual blood under a merciless sun which is still as much mercielss as it always has been, no matter whether on it shines a “N” or a “E”.
    Browsers are my enemy.

  19. I open a script in IE and I expect problems: they arrive.

    I open a script in NS7 and I expect problems: they arrive.

    I open a script in Opera and I expect problems: they arrive.

    I open a script in Mozilla and I expect problems: they arrive.

    If you program the way you code your css, then ya, your gonna have problems in any environment designed to display the results. Leave out a quote at the end of a string and your screwed. Mistake a comparison for an assignment and your screwed. Leave out a parentheses in your function declaration or when it is invoked and see how far you get. Errors all over the place. Why? Standards! A programming language won’t let you get away with not following the rules because there is a strict way to code: syntax and logic is king. The same goes for XHTML AND CSS, both strict in their specifications, rules and syntax. If you write width: 100; and leave out the required unit of measurement after the number, the W3C validator throughs up an error explaining that it is not allowed. The units you can use are % em, ex, px, in, cm, mm, pt, pc. It’s called a standard.

    The validator is there to help us code properly and the browsers are giving strict guidelines – according to the specification – as what to do when certain errors are encountered when the page is parsed. The browser is supposed to be your friend, saying anything else to the contrary is ludicrous. Without it, I for one, would be unemployed.

    If one browser chooses to say “f^&* ya’s all … we will do it the way we please,” then the whole thing was done in vain. If everyone doesn’t play ball from the get-go then there is no point in creating a standard in the first place. Keep using the inferior browser IE to code your pages and you will never learn the proper way to create a website. Because it sure as hell ain’t gonna tell you you’ve been coding tag soup and junk css.

    What happens if tomorrow we all wake up and 85% of the population, in America and Canada, decides that they are going to drive on the left side of the road? Chaos, destruction and death! If the consequences of snubbing web standards were, even minutely, as serious as the consequences of snubbing the rules of the road then we wouldn’t be having this conversation.

  20. If one browser chooses to say “f^&* ya’s all … we will do it the way we please,” then the whole thing was done in vain. If everyone doesn’t play ball from the get-go then there is no point in creating a standard in the first place.

    Nooooooooo!!

    That’s exactly 180 out of whack! It should be “just because one browser refuses to play ball from the get-go, doesn’t mean there shouldn’t be standards.

    We cannot allow one company to rule the web… Microsoft has, more than one time, tried. This kind of attitude just gives them the answer they’re looking for.

  21. What is misunderstood here is that Microsoft has policy of supporting legacy code. So if someone has developed a program that works in one version of Windows (going back as far as 3.1) MS has put mechanisms in place that allow that program to work in all versions of Windows upto and including XP. Some of these programs were horribly written, but MS has to support them – this means that about half the code in XP deals with support for legacy programs.

    With IE it is the same thing. They support pages that have worked in all previous versions of the browswer including ones that only vaguely resembled html. So the browser can’t just focus on the current standard and ignore everyone else. This means each release of the browser will get bigger and bigger (codewise) and will probably have incremental fixes that move it closer to ‘standards’ compliance, but not at the cost of breaking all pages that previously rendered.

    I think the true standards are those which people have used over the years and are in place on thousands of pages, not those which a committee decided on and which are used by less than one percent of web. The definition of standards is “something established by authority, custom, or general consent as a model or example” – so Microsoft supports standards as defined by general consent (more people make web pages that render in IE than any other browser).

  22. reall cool stuff you get here molly

  23. What i really find stupid in the Microsoft guy response:
    He says that implementing standards (any or all) into MSIE would break the web.
    How? because many web sites are not standards compliant, and would therefore be broken by the would-be-correct behaviour of MSIE.

    Let’s consider what already exists, the Quirks Vs Standard mode, implemented through Doctype Switching.
    Strict mode uses strict doctypes, the kind of doctypes you’d only expect people knowing about standards to use, and these people would use it well.
    What’d happen if IE kept it’s current broken behaviours in Quirks mode, and had a CSS1 and CSS2 compliant behaviour (because no alberto, IE doesn’t have any compliance with CSS2, it even lacks quite a lot of important CSS1 features), as well as a complete HTML compliance (abbr anyone?)?
    Basically, nothing much, ill-coded websites would still be ill coded and displayed as they always had, well coded websites would display the right way because IE would display them right, IE-targetted “hacks” would be left out since IE would interpret CSS the way Opera or Firefox do (aka the right way, disabling IE-oriented hacks in doing so and not even requiring the webmaster to do it), and it’ll allow IE users to use as wonderful things as CSS menus, fixed elements or backgrounds, … and web coders to get much less gray hairs.

    Conclusion? replacing current IE’s strict mode with a standard compliant mode would change nothing to it’s compliancy with legacy (quirk) websites and would be much loved by webmasters and designers.

    I think the true standards are those which people have used over the years and are in place on thousands of pages, not those which a committee decided on and which are used by less than one percent of web. The definition of standards is “something established by authority, custom, or general consent as a model or example” – so Microsoft supports standards as defined by general consent (more people make web pages that render in IE than any other browser).

    Matt, it seems that you’re missing a few points here:
    1- MS is member of the W3C, this means that they have a say in standards, standards are not created against their will
    2- The goal of “Standards” is not to block creativity or anything (i think more webmasters had their creativity blocked by IE’s inconsistent and non-standard behaviour than standards themselves), it is to allow people to communicate and interract with each others, because
    3- Your “web pages designed for MSIE” (let’s consider only the ones that don’t work with alternate browsers) don’t use HTML, they use MSHTML or MS’ version of Javascript, which are sparsely documented and have no publicly avaible specifications at all, effectively disabling any other web browser, be it graphical, textual, aural or braille, to interpret them. You can’t be a standard when only one software is able to understand you, you’re just a proprietary language or specification.
    4- The web is moving, as IT is, having IE stuck 4 years ago is just going against that, keeping the web static while it shouldn’t be.
    5- If IE was standard-compliant, the standards could actually become widely used, MSIE is what keeps standards from reaching any kind of mainstream widespread use (even though they’re gearing up and gaining momentum as people realise how useful they are, and how alternate browsers are so much better than IE).
    6- Implementing standards (aka fixing currently broken implementation such as box-model or spans, finishing incomplete implementations such as :hover and fully implementing CSS2.1, and why not dream and even consider implementing what may become CSS3) into MSIE wouldn’t break anything, it’d fix sites that are currently broken (see CSSZenGarden‘s “Special Effects” designs for example), that is the worst it could do.

    Remember, the web is not what it is, it is what you will make it become.
    How about helping it become a better way of relaying information?

  24. I think some of you guys are missing the point. Standards are not about validation, they’re about browsers interpreting the same instructions in the same, standard, way. So when I say

    .foobar {
    width: 100px;
    }

    all browsers will know what I mean, and apply that rule in the same way. Microsoft (or Mozilla, or you, or me) may think it’s a good idea to implement things in a different way. Letting unstated units default to pixels, for example, but however good that idea may be on its own merits it’s a BAD THING – because a style sheet that works for one browser will then not work on another. It might seem difficult to use the standard behaviour if Microsoft’s version makes more sense to you – like their allowing of width with inline elements – but it’s better than handling TWO different behaviours for the same code.

    Personally I think this is a bit of misdirection by Microsoft, setting expectations low, so they can get a bigger marketing coup by delivering a CSS3 compliant browser. Frankly, it’s the sort of thing they’re going to need to sell Longhorn to people who are quite happy with the OS they’ve got. Heck, a lot of people I know (myself included) haven’t gone to XP yet.

    MS have improved standards support in versions 5, 5.5 and 6 of IE without breaking anything. A lot of diehard MS-haters forget that, when it came out, IE6 had some of the best CSS support around. The problem is that they’ve rested on their laurels for four years and not kept pace either with emerging standards or with competing browsers.

  25. Pingback: geoffreytang.com

  26. Pingback: Karmakars.com

  27. Richtig. Das Problem ist, daß sich die Jungs bei neuen auftauchenden Standards oder konkurrierenden Datenbanksuchroutinen mächtig auf ihren Lorbeern für einige Jahre ausgeruht haben. Warten wir die Zukunft ab.

  28. Dealing with corporate and private web pages is much more time comsuming than ever. Just try to make a page look exactly the same in M$ IE and Firefox, and you’ll starve tryin’ … althought some similarity can be achieved. But in the end, I just say: if you can’t view it properly, I’m sorry. Try switching browsers and keep on moving.
    Cheers
    Tanetal

  29. Pingback: Web inaccessibility ‘creates net underclass’ at Karmakars.com

  30. my broken heart 🙁

Upcoming Travels