A couple of weeks back, I was hanging out in a New York hotel lobby with Tantek, who was either working on his AEA slides or enhancing the overall usefulness of the web in his spare time; I’m not sure which. On the far wall, a plasma display ran CNN continually, softly, offering up such choice crawl text as “N. Korea Missile Test Fallout”. One of the stories running was about alleged plagiarism on the part of Ann Coulter.

We got into a brief discussion over whether such people should be rebutted or ignored. Tantek took the former position, whereas I took the latter. My stance is probably a holdover from my long years of Usenet and mailing-list participation, where one of my most iron-clad rules is “Don’t feed the trolls”. Better they starve for lack of attention, that’s how I see it. Perhaps this is a defensible strategy in the “real world”, and perhaps not, but I will freely admit that it’s one of my default behaviors.

Thus, my first instinct was to completely ignore John Dvorak’s screed about CSS. Mr. Dvorak is an admitted troll, and so my default tendency is to simply ignore him. But “troll” is, in my world, an alternate spelling for “fool”, and as Winston Churchill reminded us, one of the great lessons of life is to know that even fools are sometimes right.

So is Mr. Dvorak right? Not in what he has to say, no, but there is still something there worth hearing.

It turns out that none of his complaints about CSS are really valid, even when you consider only the ones that have a factual basis. Sure, he can complain about the cascade being confusing, but that’s like criticizing Windows because of all those stupid windows that open up everywhere and get in the way of the desktop wallpaper. It’s an inherent feature of the system: either accept it and move on, or reject it and walk away, but don’t waste your time complaining about it. The best part, of course, is where he blames CSS for inconsistent browser implementations, which is rather like criticizing Microsoft because Windows doesn’t run properly on a computer whose processor isn’t compatible with Intel’s architecture.

But step back and let your eyesight blur a bit, and the shape of a worthwhile point begins to emerge. The closest Mr. Dvorak gets to expressing it, possibly by accident, is this sentence: “Can someone explain to me exactly what kind of ‘standard’ CSS is, anyway?”

I could do so, of course, as could most of you, but that’s not the issue. What we’re seeing here is the initial reaction of a CSS newbie, not too different from many others when they first begin to style, and all brought closer to home by the high-profile nature of the newbie. (Whatever you may think of Mr. Dvorak, he has prominence in the industry.) CSS is not as hard as some make it out to be, but it isn’t easy as cake, either.

A good part of that problem is the natural expectation that all browsers should act the same. It’s a strange thing to expect if you’ve been in the field long enough, since browsers have never really been consistent on anything, from HTML error handling to PNG support. But someone who’s coming in fresh is almost certainly going to expect that if they do things a certain way, the result just works. Why would one expect anything less?

That’s why the Web Standards Project was founded, of course; and its existence, history, and current efforts put paid to Mr. Dvorak’s assertion that nothing is being done. As I’ve said, none of his individual points are on target. What his outburst does is remind us of the problem to which so many have grown numb, and which we still—for all the progress that has been made—face on a daily basis. Consequently, it reminds us to keep advocating for greater consistency between browsers, to praise the efforts of browser makers in that direction, and to help them correct their course when they move in the wrong direction—and to do so constructively, not destructively. For while we may gain insights from the rantings of trolls, we should never be so foolish as to adopt their tactics.

I rolled my eyes when I read his article. I find it difficult to run a marathon, but I don’t complain about it. Why? Because I’m not a runner, so I am not good at running.

Anything can be difficult when it’s not your area of expertise. I think he believes that designing web pages should be a piece of cake! And on top of that, he doesn’t seem to realize there are many in the community who have spent their careers working to ensure that standards are created and enforced for the benefit of all.

Wow… that Dvorak junk is all over the place! Browsers, CSS, Windows, whatever, just pick one good issue and rant about it, that’s what I say. “If your Internet connection happens to lose a bit of CSS data…” Wha-a-a-a-a?? You mean like if it falls out of one of Senator Ted Stevens’ internet tubes?

The initial question about whether to engage or ignore idiocy is a good one, but in this case Dvorak’s rant is so unfocused that engaging him on it would be like trying to nail Jell-o to the wall.

I’ve been reading many of the responses to Dvorak’s rant, and I wanted to thank you for it. It’s very easy to go ranting back about the idiocy of his assertions, but to maturely say, “Um, no, don’t think so. But, you may have stumbled across something.” That’s commendable.

Very well said, Eric. There’s no doubt that browser inconsistencies continue to be the biggest roadblock for any web designer or developer, whether they use CSS or otherwise. And, it is a completely reasonable expectation for new folks to expect things to be consistent. As you say, why wouldn’t they?

My girlfriend recently moved in with me, and she’s used a PC all her life (she’s a very casual computer user). She has some desire to switch to a Mac (probably due to Apple’s ability to create a sexy allure about their products), so I KVM’d up my Mac mini that I don’t really use with her PC. I’m constantly reminded of of the fact that change is hard and that some level of consistency is needed to get you through it. Even though the Mac is, by most accounts, the “easier” OS, she still struggles at times simply because she’s so used to Windows. Understanding menus, windows, mousing, etc. isn’t the problem — she knows how to do all that. The problem is the little quirks that make each OS different.

I suspect the same is true of someone getting into CSS-based web development. CSS and HTML aren’t that hard to learn, really — but dealing with the browser quirks is a freaking nightmare, even for experienced designers and even today when the browser landscape is a lot better than it was a few years back.

On the flip side, the day CSS and HTML work perfectly well in all browsers is the day those of us who have made a living off being CSS gurus are out a job. Because, let’s face it, what makes us experts isn’t the fact that we know HTML and CSS — it’s the fact that we know the browsers. :)

While I agree that Dvorak is a troll and that is good for him since it seems to draw readership, I do find fault with certain aspects of CSS. While his wasn’t exactly a great way to address it, I do believe some issues need to be addressed.

I think it does a disservice to the entire web community to dismiss problems with CSS, saying if you don’t like it don’t use it. To do this hides a valuable minority opinion. It also prevents CSS from being made easier to use. People who don’t like the way certain aspects of CSS operate may have ideas (myself included) in how to improve it. Why not hear what we have to say?

While I appreciate the work of the Web Standards Project, I’m bothered that the navigation on its web site doesn’t cater well to those who are sight-impaired. I bumped up the font size in Safari and the nav stays the same. Why? The links are images.

Such a shame. Some well-written Dvorak code could have cleaned that right up. :)

I remember, in the early days of Mozilla, messages from developers lamenting that the CSS specs were vague (and thus two different implementations of a spec could find validation for their behavior within the vagueness). I can’t imagine with the proliferation of new CSS specifications in CSS3 that this has gotten any better. (Correct me if I’m wrong, please.)

It’s one thing to throw provisions at browser makers, it’s another to make the provisions themselves vague, and an entirely other thing to do so and at the same time hold the browser makers up to scrutiny for not implementing the standards properly.

But ironically I think the problem is that the W3C has no policing authority over its specification, meaning that it has no ability to say “You go this wrong, you don’t comply, come into compliance!” Because of this, there is no impetus, beyond the will of the browser makers themselves, to make sure the specifications are actually implementable! That’s why, when the final release of a specification comes, I find myself ambivalent — the specification might have value, but I know that there are no teeth behind it, that it is more a recommendation than anything, and that its usefulness derives entirely from the implementor’s desire and will to implement the spec (and thus we find ourselves in the position we are in now, with Microsoft lagging behind — for years! — correcting their faulty CSS code in IE).

(And, to go off briefly on a tangent, how long before we have MathML or SVG in IE natively? Might we wait forever? And might the end result be that neither of those specifications ever truly blossom?)

The W3C should itself have the will to create an implementable specification, and this should be manifest in the creation of tools to verify and certify existing implementations, or the blessing of an existing tool for verifying the spec’s implementation.

I think it’s absurd that we have to rely on third-party investigators to determine what parts of what specifications on which browsers are implemented properly, and then to rely on these or other third-party advocates for pressure on the browser makers to make their code compliant.

I would love to be able to look into a browser’s “About” dialog and say “100% W3C compliant CSS2 implementation, as of xx/xx/xxxx”. It would at least give me a little confidence that the system is beginning to right itself.

Rebuttals usually would not be needed but when someone high profile says something they often are, if only so that people see there is another side to the article (in this case the reality) Malarkey has already posted his

ironic that there is a key for including html tags in the comments, don’t you think? My point would be that CSS is nowhere near as easy to understand as html and excludes a lot of people because of this. I think it’s almost elitist to assert that CSS is preferable or better or should be the standard. It’s for more hard core coders. Sure, basic html is for coders too, but CSS is by comparison exponentially more difficult to master.

You are totally comparing apples to oranges. (X)HTML is a markup language for adding structure and semantics to (mostly) textual content. CSS is a presentation language for defining the visual style or other presentational elements of a document. The two are not mutually exclusive, and totally not comparable. No one “chooses” CSS instead of HTML — the two work together (along with other layers) to create a complete web document.

Frankly, I’m not sure why some people believe that these languages out to be simple enough for anyone to use. Professional web developers have professional tools (like these languages) that take time, commitment, and a “knack for it” to learn. Non-professionals have simpler tools for web publishing that are quite easy to learn — they go by names like MySpace, Blogger, Moveable Type, WordPress, and Dreamweaver.

This is no different from any other industry. Want to take photos? Fine, there are plenty of point-and-shoot cameras that anyone can use with a minimal amount of learning. But, if you want to take photos like professionals do, you’ll need to learn the ins and outs of the art, and also learn the associated tools (SLRs, film processing, Photoshop, etc.). Want to do some handy work around the house? Great, go buy a simple tool set and have at it. But if you want to be a professional carpenter, you’re going to have to learn more complex tools. Want to swim in the ocean? Great, buy a snorkel and mask. But if you want to dive deeper and in more remote places, you’ll have to take the time and effort to get a SCUBA cert. Want to design your church’s newsletter? Great, use Word, or Publisher, or any of countless simple tools anyone can learn. But if you want to be a professional graphic designer, you’re going to have to learn much more complex tools, understand the art, know about printing types, paper types, etc.

I don’t get why anyone thinks the web ought to be different. (X)HTML, CSS, JavaScript, and all of the other languages we write code in aren’t tools for non-web designers/developers, and they never will be. If you want to be a professional (or serious enthusiast) web designer/developer, learn them. If not, grab yourself a Blogger account and have fun.

I’m all for the idea that anyone ought to be able to self-publush on the web — but the idea that anyone ought to be able to create sophisticated web applications with beautiful, functional designs is just unrealistic.

There’s one thing I would add though, something you started to nail down, about perceptions. We are all living in communities with different opinions, or ideas about the ecosystem. There are frictions between communities, which is normal. The danger is when a community or some members of the community starts to think they have the “truth” (whatever it means). This leads to sectarism. It doesn’t come at the start, but sometimes it’s an evolution of communities. We have seen that in many communities around, including the W3C. It takes a lot of efforts and energy to try to stay open. I have done such mistakes in the past, and specifically with you. My apologies for this.

An enlightning book about this is specifically Animal Farm by George Orwell.

About Troll, another difficult topic, and weblogs (individual distant communication without physical contact) and google karma are a soil for this. It’s a lot more difficult and requires a lot more talents to really trolls in physical presence.

It’s a very difficult topic which has a lot of implications. At the start I would agree with you, that would be cool to have a “CSS Compliant” product, but how do we achieve this. We discussed a lot about it a couple of years ago in the W3C QA WG, and I will give you here some hints to start thinking about it.

* Quality of specifications. If a specification has ambiguities, if something is not well specified. You run into nightmare. It takes time to create a very good specification. Then some people will argue everything is too slow, look at the comments from the community for CSS 2.1 and CSS 3.0. How to keep the right balance between the time to market and the quality.

* Test Suite. related to the previous one to have a good specification, you have to create test suite (take time again), the test suite is not only useful for testing your own implementation but also to test the specification with regards to different interpretations by different developers. Interoperability is difficult to achieve. (time of development, bug reports, people working hard to get the release of a product and dealing with marketing departments. tensions).

* Product releases. There are market constraints, people want to release their product early to gain the market, it’s true for a private company, it’s also true for Mozilla. When a product is released, people start to use it. This doesn’t happen outside of an ecosystem. Then if there is a bug, which helps, for example, a CSS developer to achieve something beautiful, they will use it. They don’t necessary look at the spec and say “oh that will be harmful”. They just use it. It’s part of the social process of using a technology. So you have to deal with previous usage.

* Certification is not implementation. That’s one common mistake. A certification is not about having 100% (this doesn’ make sense as well – 100%) features implemented. Certification defines a process that this set of features MUST be implemented in a certain way. It can be part of one or more specifications. Then comes an authority instance which ensures that the defined process has been passed and delivers a certificate.

* Resources and Cost. All of this leads to cost and resources. If you certify a product, you have to define the process, to apply the process and pass the test on every single release of the product. Again it takes time and cost something. So how do you certify things with a reasonnable price. How do you create the environment that will make possible for a single developer having a cool open source product with no specific revenue to certify his product? How do you not kill a part of the development community? Mozilla will have no troubles, but a small developer, or small company.

* Implications of certifications. Governments love policies. Then if we start certification it means that people will say for example, all schools must use the “W3C Certified” product. What about the small company or developers who were developing a small but neat product for a county? And then also the legal implications it will create when people will start to sue for any reasons.

I don’t say all of that is bad. I do not say it’s good either. But everything has consequences and that’s not that easy to move in one direction more than others.

The priority is the item number 1, having good specifications. The more the community helps by creating real test suites, real reviews of specifications, etc, the better it will be for the whole community.

@karl
>>How do you create the environment that will make possible for a single developer having a cool open source product with no specific revenue to certify his product?

The open source developer can ask for donations, or not build it at all. Sorry but every software project requires resources. Open source doesn’t mean cheap to build.

For each CSS engine that doesn’t render to the standard ends up costing web developers time and resources to support the differences. As it stands at the moment, the costs of certification that you point out are effectively past on to web developers, and that’s just not right.

I’ve been working with html and css for years on and off. Over the years I’ve come to the conclusion that there are some serious flaws in these standards that are unlikely to be fixed any time soon:
– CSS is a very limited language for defining layouts. There’s just things you can’t do with it. If you try to do them anyway you end up with really buggy designs. Some of these things are being worked on in the CSS3 specification. But then CSS 3 is at least a decade away from significant market deployment (if ever), despite the fact that it has been worked on from the beginning of the millenium.
– HTML was a mess from the beginning and it got worse as browser developers added fearures to it to fix it. XHTML (the 1.1+ strict varieties actually served up with the proper mimetype) has yet to leave the lab, despite the fact that its almost ten years under development.

HTML 4 + CSS 1.x was sort of cool when the first more or less compliant browsers hit the market in 1997. It’s almost ten years later now and nothing seems to have changed that much.

Dvorak is a troll but I think I understand what he means: for all practical purposes CSS is needlessly difficult to work with.

I must say that I agree with Adrian, the result of the current W3C setup is to basically offload the costs onto the website developers who spend countless hours trolling the web for workarounds to browser incompatibilities. (How does this, in any way, differ from the situation we had before with HTML?) I like CSS, use it every day, but I find it just as frustrating as HTML because of the browser incompatibilities.

But we don’t just troll the Web looking for workarounds, we troll it looking for ideas of how our CSS should actually WORK, because the W3C in the end has no true idea because they’ve never implemented the specification. They can say “it should work like this”, but until someone actually implements it, no one really knows if it will. It has no authority to say “the result is this”, but simply “the result should be this”, and no teeth to say “your result is bad, fix it”.

I also, as a website developer, find myself ambivalent about testing to make sure that my website passes any CSS or XHTML validation tests, when no one will create that for the browsers themselves. I mean, at that point does it matter, if a portion of my CSS is hacks (and in some cases, hacks that take advantage of poor CSS parsing by a particular browser)?

It’s like me buying a toaster and being told that it’s not UL certified, but I’m to blame if it burns my house down because I didn’t put the toast in just right. Well, maybe not exactly like that, but you get the point?

Maybe the problem is that the W3C is simply not an independent authority. With working groups populated by members of browser makers and other interested third parties, it’s not surprising that they don’t want their actual work policed (but they want accolades when they *do* get things right).

I do agree with you that it takes time to write a good specification. Years, I’m sure. And it would be nice if, after all that work, maybe there was a little more effort into getting us (the world, through the browser makers) completely up to speed before setting off on the next 10 enhancements.

The only reason, I believe, to progress at such a speed, allowing for such inconsistent implementations to flourish (or fester, as it were), is to try to counter inherent, structural weaknesses in the specifications themselves by supplanting them with newer and “better” specifications, which will, in the end, also be implemented haphazardly. And the browser makers will continue to build on the weak structures of the past, because no one stopped to truly adequately address their inconsistent implementations. And the Web developer will be left holding the bag.

Some things never change.

I see no end to this, until the W3C decides to step up and take responsibility for creating specifications that they guarantee are implementable through the creation of adequate testing suites for verification. Might it take years? Sure, but I don’t see that as a problem. Progress for progresses sake is folly, IMO. But would it be worth it, in the end? Beyond measure.

Eric, you’re too nice! :-) I was hoping you would attack this Dvorak piece, exposing it for what it is. Of course your actual post is highly commendable!

As for test suites, I know you stopped doing them because the variables to test each style with other styles and elements were too great. As for tests adding years to the development time for CSS, well I’m against anything that does that! We’re already moving at a turtle’s pace. When, oh when, will CSS3 be implemented enough to use it cross-browser? Sigh.

I can’t help feeling CSS is way too complex though. The basics are easy, dead easy! I would say people like Dvorak are criticising it because they’ve been used to FONT tags and tables for layout. Otherwise, it’s easy enough to start with. But! To do anything slightly complicated, like a multi-column layout with a header and a footer, leads to much hair-pulling out. Surely there must be a simpler system? One where you can just define a box and it works on screen without loads of extra code. Flash, maybe?

On one side you are saying the W3C doesn’t implement the specifications and in the same comment you are saying it’s not good that the browser implementers participate.

The way it’s working right now. People interested from different communities participate to W3C. Usually they should on a regular basis publish a WD of the technology. When the WD is published, people (public as large, designers, Web developers) can comment. The WG is collecting the issues which are feeding more discussions.

Often, there are conflicting needs, where after discussions, the WG have to decide which side to choose. It’s part of the consensus process. Sometimes it takes a long time.

Then when the document is stable, it is published as Last Call WD. At this stage, we do a last round of comments. Then when all comments are answered, we move to… Candidate Recommendation. Read carefully Implementation phase. It means that members of the WG AND community develop implementations testing the specification, and see if it’s possible to have an interoperable implementation of the technology.

After the Candidate Recommendation, we produce a implementation report which shows what features have been implemented and the ones which have not been implemented at all. There must be a very good reason to keep a feature which has not been implemented at all. It could be accessibility or I18N for example.

If the Implementation report is positive, it’s going to PR and then Rec. If not positive, it’s going back to last call. All of that is done in public, with the possibility of every single person to comment.

There is still room for improvements. I’m sure that at the end the day, if people from the community makes practical suggestions, I mean suggestion which can be used and implemented or ideas, they are more than welcome.

Each step is creating conflicts and frictions. Better implementations are a definite goal. A perfect implementation world will never be achieved. That is for sure. It’s more on the line on how do we improve? For the part of W3C which is dealing with CSS, inside the WG there are Opera, Mozilla, Apple, etc. Developers are there. CSS 2.1 takes time specifically to solve this interop problems and minimize the trouble.

Something we tend to forget as well, Rome has not been made in one day. CSS !.0 and HTML 4.01 have been created in a time… where this quality process was not in place. CSS 2.1 will certainly be better than CSS 2.0 because of what I explained.

I hope it helps, and if you have more hints to improve the QA process (www-qa@w3.org) then improve the education, understanding of technologies (public-evangelist@w3.org). Do not forget all of that is happening in a community process with different opinions. It’s not all about desires, it’s about building together.

to the comment about XHTML 1.1 Media Type leaving the lab. It’s quite in the wild, see application/xhtml+xml

To the table layout with CSS, there was “display: table”. I never understood myself why it took so much to be implemented. It works quite well now, except a few tools.
And then in CSS 3, there is the CSS Avanced layout specification in development, which might take time indeed.

I’m not sure I understand. On the one hand, there’s an implementation phase, to test the specification to see if it’s workable, but on the other hand, it’s too costly and time consuming to create a test suite? If the spec has been tested for operability, why is that work not repurposed into testing (and certifying) actual real-world implementations?

To anticipate a possible response, if the “implementation phase” is not robust enough to be used as a basis for real-world implementations, then from what is its usefulness derived?

Could you explain a bit more what this implementation phase is designed to achieve?

Oh, and to clear up my previous statement, I wasn’t saying that it’s bad that the browser makers participate. It’s a great thing, of course. What I meant is that I think the process is somewhat compromised by them being involved. I feel that there are no policing of standards in place specifically because the browser makers are so heavily involved, and have their own budgetary/time responsibilities that might preclude them putting a browser on the market that doesn’t pass muster. That’s why I would recommend that there is some third-party panel (perhaps including one member from each browser vendor participating), funded and paid for by the browser makers themselves, that implements a test suite and holds the makers to rigorous standards, and that it is given weight and authority by the browser makers explicitly allowing their implementations to be policed by this organization. I know it’s not going to happen, but indulge me a bit.

Now, these browser makers have their own internal testing suites, I’m sure, to ensure continuity of proper rendering from build to build. They could contribute their test suite code, the independent organization could keep and reject the parts that are deemed proper, and it could build up an independent suite of tests from this already existing code.

The chances of this (or anything even approaching this) are nil, I know. But lost money is lost money, and lost time is lost time, whether it’s bleeding from a lot of little cuts in thousands of web design shops around the world, or being paid upfront by the browser makers. It would be nice if the corporate entities would recognize their part in the furtherance of this situation, and do something to rectify it.

I feel that he has just made a complete idiot about himself, and I cannot believe PC Mag related themselves to that article. He sounds like he picked up a tutorial on CSS tried it once, and then wrote that article. It is almost hard to respond to, but it should be responded to, because many programmers may take that garbage and follow it.

Like Eric, I read the Dvorak article thinking “this guy is a clueless bozo who nonetheless has – unwittingly – pointed to a valid problem.” Here’s the thing: for those inside web development activity (including me, often) there is a certain blind spot about the crazy complexity of this stuff. It’s easy to become accustomed to (or “numb” as Eric says) the obstacles that are percieved as immobile. And to me the issue is not about “some things are just difficult.” Programming well, in a good language, is difficult in a way that is necessary and valid. The web is not like that at all. Ask someone (like me) who has to construct a page using SQL, ColdFusion or ASP or Java, HTML, CSS and Javascript, and maybe Flash, and have it look like it was graphically designed. Viewed from a higher altitude, this is a technological mess and it’s miraculous that it works at all. You have to know design and the syntax for five languages simultaneously. This is not hard in the good way. This is hard in the “build over years on layers and layers of half-implemented ideas” way.

As I explained before, certification is not about passing a test suite. Certification is a legal process based upon technical checking. The certification process also doesn’t stop at the initial release of the product. Each time you release a version of the product, you have to go again through the certifying process. not the major version number only, every version number. 1.0001, 1.0002, etc, if you want to go to the market.

I repeat also, that it’s not necessary bad to create certification but it has definitely consequences on the market. You could for example, consider also the certification process for Web designers. Should there be one? for Web agencies (ala ISO 9001 but for Web standards)? etc.

Test suite helps to test implementations, and helps to test the implementation. It depends on the WG itself, for example, the RDF and OWL WG has written the second version of the specification specifically by testing. Each time a new feature was proposed, a test was conceived and implemented to see if it could be done, a kind of design by testing. It shows in their implementation reports where you can see a lot of interoperable implementations.

Some WGs prefer to design test suite and testing at the CR phase only as I explained. Indeed having companies contributing Test Suites to W3C would be great. It has happened in the past for XML and other technologies. In the CSS WG it’s happening too. There are test suites, a test suite is never finished. You can try to cover as much as possible but you will not be able to cover everything. I’m not talking about features, but in terms of combinations of features and for examples values that these can take. To take another example, it’s a bit in terms of usability you were trying to test your new designed Web site inside the Web agency. When do you stop testing. Each new test will bring new issues.

Some real social issues when creating a standard, people participating. You can have products makers X, Y and Z participating to the group, plus people from organizations, plus people from Web design community, etc. Then what’s happening when product maker T is not participating because it has decided to not participate. You can’t force people to participate. Or the maker T participates but decide that the group is doing wrong and will go to do its own thing on its side. It has happened in the past, it will happen again. I’m not sure there’s a solution for that. You can try again to bring together people (diplomacy effort) but it doesn’t always work.

Here comes another pressure force: The professional community. When Web professionals, Web designers, etc voice their disagreement with something. For example, we refuse as a group to use this product because we think it’s a poor quality tool and not suitable for our business. That’s one of the great value of the market. Also if professionals participate early in the process it helps. I wish there was more reviews of draft specifications by Web professional but people mostly don’t do it. It can also happen that a large proportion of the community who creates Web site continue to use or design products with not standard technologies, then it put at risk the ones who are making their business using the standard.

About certification organization and quality, product makers have a business model too. They do things because there is a pressure of the market (user, web developers), because a government has established a law which force them to do certain things, because they want to create an ecosystem, which helps to sell secondary products.

As the Web developers/designers/agencies have business to achieve. I wholeheartly agree with the comment which was saying that in the end the Web designers pay the price. Voice it! Participate to the design of specifications and review them. Voice your concerns, etc. The W3C is one rare organization where the things are done in public.
Mailing lists are open.
There are releases of specifications which are published on a regular basis.
There is no exclusion based on your opinions, but debates and frictions for sure.
I have seen some other standard organizations which were completely closed, it was not technology related.

For the panel has you proposed. You said one representative from each browser makers, who are the others? Web professionals, then who? Who will take the time to check? to participate? to travel when necessary? How these persons will be paid or is it a volunteer work? Who is(are) the organization(s) which is the voice of Web developers? WASP is a great organization and W3C has liaisons and participations for a long time, but it’s not enough. What about communities in other languages? I’m happy to hear suggestions. really I do. It helps to see where we can improve, and push things. Notice that all this dicussion would be better if done on a W3C public mailing list like www-qa for example, more visibility for W3C Members.

[…] Nachtrag: Auch Molly Holzschlag und Eric Meyer haben auf Dvorak reagiert. Eric Meyer kann der Haltung Dvoraks sogar nch etwas Gutes abgewinnen: Consequently, it reminds us to keep advocating for greater consistency between browsers, to praise the efforts of browser makers in that direction, and to help them correct their course when they move in the wrong direction—and to do so constructively, not destructively. For while we may gain insights from the rantings of trolls, we should never be so foolish as to adopt their tactics. Tags: CSS, Fun « S5Project.org Designer über Trends, Teil 2 » […]

Wow. Your response, coupled with Jeff Croft’s EXCELLENT explanations in his comments, make this the best response to Dvoraks claims. Others have taken different approaches – but you both have explained this precisely and in a calm manner.

It really is easy to forget what it was like being a CSS newbie…but I don’t really think CSS is that difficult. My non-geek wife understands it, and my 6 year-old son is learning it by osmosis. Maybe the problem isn’t how complicated CSS can be, but how unbelievably bad things were during the browser wars and the pre-standards days. Coming into the CSS world from that perspective, one might indeed think that no progress had been made.

Unfortunately, Mr. Dvorak has had other things on his mind. I hope he reads your words and sees that his rant has no basis in practical reality.

Non-professionals have simpler tools for web publishing that are quite easy to learn — they go by names like MySpace, Blogger, Moveable Type, WordPress, and Dreamweaver.

Dreamweaver? Really? I thought it was one of the best packages out there. And I don’t web publish, I web design and I web develop. I hand-code ((X)HTML/CSS/JavaScript/PHP) using it constantly; I teach web design using it; present information using web pages created through it; on occasion I even evangelise about it. To hear it described as non-professional is a little disheartening. I can’t hand-code EVERYTHING, that’s just a waste of time. ;)

Just wondering if you’ve read the comments to the Dvorak article, particularly those of “SuperSheep23.” He charges that CSS is broken when it comes to layout. He makes this charge:

“CSS has fundamental flaws. Seriously. While Dvorak may have missed most of them, they still exist and I’ve brought a few of them up here. The CSS working group has no interest in correcting them as they don’t see anything wrong with the current CSS. Mostly, I think it’s that they’re unwilling to make significant change because they don’t have the time. They admit this. This tells me that the fact that the working group relies heavily on free labor and volunteers is probably a bad design. That’s why I have more hope for Microsoft and Sun as they can pay people to come up with technologies to submit to the ECMA, ISO or ANSI.”

“Again, I tried the proper route taking my concerns to the working group. They deny the existence of a problem. So I’m left with the idea of writing a new spec that now has to leverage CSS out completely. Not something I’m looking forward to, but I start by presenting the idea that there’s something wrong that needs fixing.”

I’ve never been able to take anything Dvorak says with any degree of seriousness. Troll is too fine a word for him, I prefer the term ignorant naysayer.

From somebody that is more newbie than pro, CSS is much like chess. It’s easy to learn, but difficult to truly master. Blaming browser inconsistancies on CSS is much like blaming auto accidents on car manufacturers.

I think it does a disservice to the entire web community to dismiss problems with CSS, saying if you don”t like it don”t use it.

Maybe you’re referring to someone else, but as for me, I did no such thing. What I basically said was that the cascade is central to Cascading Style Sheets– what with it being in the name and all– and if you don’t like how it operates, then CSS is not for you. I could say the same thing about inheritance, which is probably what Dvorak was really upset about anyway.

People who don”t like the way certain aspects of CSS operate may have ideas (myself included) in how to improve it. Why not hear what we have to say?

I always do. Whether I agree with a given idea is, of course, another matter entirely, but I always listen to and look at people’s ideas for improving CSS. I’ve championed a few of them myself, as it happens.

I read some of the comments on Dvorak’s post, and saw many of SuperSheep23’s posts. I’m not interesting in rebutting everyone who finds fault with CSS. Some are on target, some are partly on target, and some are way off target.

As for SuperSheep23, he’s right that some layouts are very difficult in CSS. Who could deny this? I would characterize this situation as a set of limitations rather than fundamental flaws, but that might just be semantic quibbling. (To me, “fundamental flaws” are errors so deeply ingrained that no reasonable effort can fix them, whereas limitations can be pushed back or removed without corrupting the core. Others may view these terms differently.) I’ve also found that the vast majority of layouts used on the web are quite achievable with CSS, and most can be accomplished with minimal or no workarounds. Mine is not a universal view, but then, whose is?

Still, are certainly limitations, and I think the CSS Advanced Layout module (which I’ve got to find time to write about) has the potential to push those limitations back quite far.

Some will complain that this isn’t an answer since it will take years for the layout module to be implemented, but that was true of almost everything in CSS at one time or another. Positioning, advanced selectors, pure CSS layouts on commercial sites, any kind of non-table layout at all, print styling… all these things were, at one time, derided as “pie in the sky” and “so far in the future they’ll never get here”. And yet they did.

In fact, I’d love to see the IE team implement the advanced layout module ahead of everyone else (say, in the next major update of IE after IE7) and spur the other browsers to catch up. That would be awesome.

I can’t speak to SuperSheep23’s perception of the CSS Working Group, as I don’t know what he proposed nor how he did it. I don’t even know that he talked to the WG—it’s more likely he discussed things on www-style, which is open to all. But I don’t know, so I can’t comment specifically. I left the WG about two years ago, so if he’s talked to them since then, I missed it.

First, I’m SuperSheep23. Second of all, I’d like to say that I think the CSS working group has done a very good job overall and I’ve long been a fan of your work Eric Meyer.

“I can”t speak to SuperSheep23″s perception of the CSS Working Group, as I don”t know what he proposed nor how he did it. I don”t even know that he talked to the WG—it”s more likely he discussed things on www-style, which is open to all.”

You are right that I voiced myself on www-style and not at the working group meetings. So it isn’t quite fair to say that I brought it up with the working group so much as I brought it up in www-style and members from the working group responded (among others).

I break down CSS’s problems into two categories (fundamental and not).

The first fundamental problem is one of scale:

Even in an all software on a platform renders CSS the same utopia, each destination device requires additional CSS if not a complete CSS re-write. Media queries are what allow you to target these devices, but it only allows you to do the extra work, it doesn’t do that work for you. Even so, it only allows you to account for screen real estate and not device capabilities (mouse, keyboard, touch screen). Creating a usable website for a mouse and keyboard combination is very different than creating a site for a touch screen system is different than creating a web site for a phone or PDA.

So, to me, it doesn’t make sense to specify CSS on the server (versus the client). As you can imagine this went over like a lead balloon. This is a fundamental problem of scale that requires web designers to create far too much content. Given that most sites don’t test in alternate browsers how can we expect them to target alternate devices which may number some day in the hundreds?

—————————————————————–

The second fundamental problem is regards user stylesheets:

The ability to use user stylesheets is effectively an all or nothing thing. Since CSS layouts are constructive (meaning layouts are built from properties on the elements; compare the advanced layout module where elements are assigned to zones), small changes (e.g. font size or line spacing) can ruin a website’s layout. This means that the author of the user stylesheet must overwrite all layout and positioning properties which may also result in a fairly bad experience in practice (ideally as designed it shouldn’t be so bad, but we don’t live in that world).

—————————————————————–

The third fundamental issue is inconsistent grammar:

I’m not the first person, nor will I be the last person to bring this issue up. CSS overloads a number of grammar elements which adds fairly quickly to confusion. The most recent proposed overload is the comma, which will now be used both as a selective fallback (in font) and as an array operator (for multiple backgrounds).

Next there are properties where the order of the values matter (e.g. border-width) and where they do not (e.g. border). This system complicates the parser for what I’m hoping are obvious reason (I’m just trying to keep the length of the post down). This also prevents the addition of properties into compound properties where we cannot use heuristic evaluation (e.g. two properties that can both have a length or both have the keyword black). A prime example of this is the one-off example of font-size and line-height in the compound font property. These one-off issues prevent the kind of abstraction necessary in learning. Each exception must be memorized for CSS to be used which slows down the learning process and slows down non-master usage.

=================================================================

Other problems fall into design issues that aren’t at the core of CSS, but make my life (and others as I would imagine) difficult.

The first issue has to do with requiring me to translate layouts into the box model and attach those properties to elements. Since this produces a constructive layout small changes to the source can have dramatic and undesired effects. The advanced layout module hopes to help with this.

The second issue has to do with lack of portability. Again the advanced layout module seeks to help with this, but I fear it does not do enough. The core layout of a document should exist at the top of the CSS document making it easy to use as a reference. Part of the problems brought up before is the difficulty in reading CSS and determining what a layout will look like given the CSS for it.

The third issue is the inability to place things relative to each other in more interesting ways. There are 9 points of interest on a rectangular object: the four corners, the middle of the four sides and the absolute center. These are easy to calculate, but CSS gives us very little in terms of laying something out in terms of these properties. Centering an object within another object is very unintuitive to me and those I’ve taught, it is the way it is. Having to explain to artists that in order to center something they need to mess with its margins isn’t exactly intuitive for them (admittedly a limited subset of users). CSS though feels like its full of these “mean A, write B” systems. What I’m looking for is the ability to say place object A’s center at the lower right corner of object B.

=================================================================

I’ve got solutions to a great many of these problems, some of which I’ve presented both well and badly to the www-style list.

While my issues with the technology may or may not have merit I would like them discussed. The continual stance that some people have shown (both working group members on www-style and users of the technology) saying that there is nothing wrong with CSS (I am glad you at least admit weaknesses) and that I simply haven’t learned it well enough is insulting to me.

I am not in your “league” Eric Meyer, but my issues with CSS are not based on my lack of understanding. I do understand a great deal of CSS. I’ve used it professionally for a long time now and I keep fairly up to date on the draft recommendations so I know what’s coming up. I also read pretty much everything that comes out of www-style and www-html.

Pretty much everything that runs on computers runs at machine code at some point. This isn’t a very good way to program though we did at one point with punch cards. Then assembler was invented. That evolution started a long chain of new languages that seek to improve and help abstract away the difficulties in our job so we can concentrate on harder and harder problems. CSS is far from done and the fundamental problems I’ve listed will not likely be addressed by the language ever and it may be another decade before I see my non-fundamental, but still important (at least to me) problems addressed. So each time I hear, “you can do it with CSS via this translation of what it is you want to do and that should be enough” I think back to all those programmers who probably thought nobody ever needed anything but assembler.

[…] Now, as I myself have only become aware of Dear John’s consternation (due, of course, to my head being stuck inside a Word document — let’s not even talk about me not hearing about the whole Castro power switch, living in South Florida and all…), I felt that it is my duty as a responsible member of the CSS community to help out in some way, albeit a few days behind everyone else. […]

[…] Dvorak, my favorite TWIT army member, wrote an article about CSS and why it is bugging him. Eric Meyer, a well know CSS expert, gave a nice response and interestingly molly, another famous person involved in CSS and web standards, gave a shocking response. Check them out. […]

I just read this article not 5 minutes before loading up meyerweb… oh the irony. Great rebuttal Eric! This Dvorak guy seriously needs to know what he’s talking about before opening his mouth next time. It’s a shame that PC magazine even would publish such trash.

If I may be so bold as to post a link to my own CSS tutorial. It’s far from perfect but it seems that people are acctually reading it and “getting it”. We need more tuturials like that, short and to the point. Who’s up for it?

OK Dvorak was off-base in his arguments, but CSS IS harder than it should be. You want proof? How many articles are there claiming to have found the “Holy Grail” of the 3 column layout with a header and a footer? And every last one of them does not work consistently across browsers. Before you say, “But that”s not the fault of CSS, it”s the browsers!”, remember how easy it is to achieve this layout using tables. The very first thing the designers should have done is made sure this basic layout was trivial to implement. Don”t get me wrong, I know CSS is better that what came before it, but come on, the very fact that the term “Holy Grail” is used means that CSS is broken.