Re: proposed changes to the CSS Validator architecture (as suggested by CSS WG)

On Wed, 5 Sep 2007, olivier Thereaux wrote:

> People familiar with the CSS validator will know that it generally follows a 
> per-profile behavior.

And people who are not so familiar with it are puzzled by the word 

> That is, it will check stylesheets against the syntax, 
> properties and values of a given CSS profile (e.g CSS1, CSS2, CSS2.1, etc), 
> and will use a default profile (by default, CSS 2.1 at the tim of this mail) 
> if no profile is given.

Evidently, the mystery word "profile" cannot be replaced by 
"specification", since CSS 2.1 and CSS 3 are not specifications. I guess 
the word "version" is avoided because it suggests... uh... er... the 
existence of versions.

> 1) There is only one CSS syntax.

That is not correct according to documents issued by the W3C as 
authoritative specifications (CSS 1 and CSS 2).

> If the syntax defined in CSS1 is to be obsoleted, but the rest of the CSS1 
> profile should remain in effect, I suggest following the part of the W3C 
> process that allows "rescinding" of an existing RECommendation:

Obsoleting CSS 1 sounds odd, since CSS 2 has in practice been abandoned 
and the rest is at various draft levels. It would leave the world with 
_no_ CSS specification that is both declared as authoritative and actually 
promoted by the organization that issued it.

> 2) CSS is the sum of its profile

I guess you meant "profiles".

> The CSS working group sees CSS as the sum of all CSS specifications that have 
> reached the maturity of "candidate recommendation" or further, and thus 
> disagrees that the usage of properties from mixed profiles is a problem.

That sounds extraordinary loose. The "specifications" (i.e., drafts) other 
than CSS 1 and CSS 2 carry an explicit statement saying that they should 
not be cited except as work in progress and may be changed without notice.

> In my opinion, this situation is confused and confusing because of the lack 
> of an umbrella specification defining what CSS is, and what is a conformant 
> CSS stylesheet.

In my opinion, it's the umbrella concept that confuses. It is not uncommon 
that a computer language exists in different versions by specifications. 
However, each version then has its own specification, or a single 
specification defines different versions.

> If CSS has no version and is the sum of all its specs, this 
> should be defined somewhere. Without such a document, the mere existence of 
> the CSS validator becomes an exercise in exegesis, and I don't think it's a 
> good thing.

Would an "umbrella specification" really be a specification, or just a 
draft, i.e. discussion document? That is, would it have the status of a 
W3C Recommendation? If not, would the idea be that a draft supersedes, 
trumps, and obsoletes parts of W3C Recommendations?

There seems to be something in the W3C process that created this problem. 
I don't expect that the process could be changed, but I don't think it's 
correct and useful to add to the confusion by treating specifications as 
obsoleted and drafts as specifications.

> I have argued for this a number of times, but I may not have made the request 
> publicly yet. If so, here is my formal, public request to the CSS working 
> group: please produce a document (ideally a REC, and it doesn't have to be 
> complicated) defining once and for all what a CSS style sheet is, and what a 
> *conformant* CSS style sheet is. Thanks in advance.

I think it's intentional that "CSS style sheet" is a moving target. 
Generally, in IT, an authoritative specification is expected to answer 
such a question in a strict manner, but not "once and for all".

Maybe you meant a specification that defines the low-level syntax (lexical 
structure) and the topmost-level syntax (rule, declaration, property name) 
of CSS. That might be feasible in principle, but how soon could it become 
a _specification_, and could it really be stable? And could you just 
declare that it obsoletes the conflicting parts of CSS 1, without really 
defining, say, CSS 1.1?

I have often mentioned that the name "W3C CSS Validator" is a misnomer. 
The word "validator" can easily be mixed with the rigorously defined 
concept of markup (SGML or XML) validator. Moreover, even independently of 
this, the name suggests that the software checks whether a CSS style sheet 
is valid by W3C specifications. Yet, it by default checks against a draft 
(which itself says it should not be cited except as work in progress and 
that it may change without notice).

If the software checks against some CSS 2.1 draft (by default), it should 
clearly declare which, and it would best be called "checker" or "analyzer" 
rather than "validator". Checking against CSS 1 is generally not useful, 
but I see little reason to remove _or modify_ that functionality, unless 
some internal design and coding issues affect this. Checking against CSS 3 
drafts is mostly misleading, since none of them is currently a 
specification (a stable, properly citeable document issued by an authority 
as a specification) and none of them is even close to having a serious 
attempt at full implementation.

Checking against a CSS 2.1 draft is the most useful thing that the 
software can perform, for practical reasons, so it is natural to make it 
the default. Other aspects should be considered as relative to this. It 
might be best to remove all support to CSS 1 in the checker, unless 
someone can come up with a reason to keep it. (This naturally would not 
change the formal status of the CSS 1 specification.) And the checker 
might have options for selecting different sets of extensions, defined by 
different drafts. Calling them collectively "CSS 3" tends to support the 
misunderstanding that CSS 3 is some version of CSS 3 that we have as a 
specification and even as implementations. (This misconception is fairly 
common among people who haven't yet met the reality and just try to use 
"CSS 3 properties".) If, however, the extensions are to treated as one 
set, I would suggest calling it "CSS 3 drafts" rather than just "CSS 3".

Jukka "Yucca" Korpela,

Received on Tuesday, 11 September 2007 04:40:47 UTC